(CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(source)} {(./virtualbox_env.sh)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(hash)} {(vagrant)}]
                      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[25])]
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Number "$1"))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ("Usage: ") ($ VSub_Number "$0") (" <bootstrap node ip address> (start)"))
                      }
                    )
                    (C {(exit)})
                  ]
                  spids: [-1 45]
                )
              ]
              spids: [-1 64]
            )
          ]
          spids: [-1 29]
        )
      ]
      spids: [-1 66]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Number "$2"))}))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Number "$2"))}
                              right: {(start)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:STARTVM)
                          op: Equal
                          rhs: {(true)}
                          spids: [103]
                        )
                      ]
                      spids: [103]
                    )
                  ]
                  spids: [-1 100]
                )
              ]
              spids: [-1 107]
            )
          ]
          spids: [-1 82]
        )
      ]
      spids: [-1 109]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-f)} {(./proxy_setup.sh)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(.)} {(./proxy_setup.sh)})]
          spids: [-1 123]
        )
      ]
      spids: [-1 130]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$CURL"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(echo)} {(DQ ("CURL is not defined"))}) (C {(exit)})]
          spids: [-1 146]
        )
      ]
      spids: [-1 158]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {($ VSub_Number "$0")})])
                left_token: <Left_Backtick "`">
                spids: [162 166]
              ) (/vbox)
            }
          spids: [161]
        )
      ]
      spids: [161]
    )
    (C {(pushd)} {($ VSub_Name "$DIR")})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KEYFILE)
          op: Equal
          rhs: {(bootstrap_chef.id_rsa)}
          spids: [175]
        )
      ]
      spids: [175]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:subnet) op:Equal rhs:{(10.0.100)} spids:[179])]
      spids: [179]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:node) op:Equal rhs:{(11)} spids:[182])]
      spids: [182]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SSHCOMMON)
          op: Equal
          rhs: 
            {
              (DQ 
                (
"-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o VerifyHostKeyDNS=no"
                )
              )
            }
          spids: [185]
        )
      ]
      spids: [185]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SSHCMD)
          op: Equal
          rhs: {(DQ ("ssh ") ($ VSub_Name "$SSHCOMMON"))}
          spids: [190]
        )
      ]
      spids: [190]
    )
    (ForEach
      iter_name: i
      iter_words: [{(bcpc-vm1)} {(bcpc-vm2)} {(bcpc-vm3)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:MAC)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {($ VSub_Name "$VBM")} {(showvminfo)} {(--machinereadable)} 
                                    {($ VSub_Name "$i")}
                                  )
                                  (C {(grep)} {(macaddress1)})
                                  (C {(cut)} {(-d)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\\"">)} 
                                    {(-f)} {(2)}
                                  )
                                  (C {(sed)} {(SQ <"s/.\\{2\\}/&:/g;s/:$//">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [213 247]
                      )
                    }
                  spids: [212]
                )
              ]
              spids: [212]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$MAC"))} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ("***ERROR: Unable to get MAC address for ") ($ VSub_Name "$i"))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 263]
                )
              ]
              spids: [-1 281]
            )
            (C {(echo)} 
              {
                (DQ ("Registering ") ($ VSub_Name "$i") (" with ") ($ VSub_Name "$MAC") (" for ") 
                  (${ VSub_Name subnet) (.) (${ VSub_Name node)
                )
              }
            )
            (SimpleCommand
              words: [{(read)} {(-d)} {(Lit_Other "%") (Lit_Other "%")} {(REGISTERCMD)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ("    ip=") (${ VSub_Name subnet) (.) (${ VSub_Name node) (" ;\n") 
                        ("    read _ _ dev _ < <(ip route get ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("ip) || { echo ") (Right_DoubleQuote "\"") 
                        ("Could not determine device.") (Right_DoubleQuote "\"") (" >&2 ; exit 2 ; } ;\n") ("    sudo cobbler system remove --name=") 
                        (Right_DoubleQuote "\"") ($ VSub_Name "$i") (Right_DoubleQuote "\"") (" ;\n") ("    sudo cobbler system add --name=") 
                        (Right_DoubleQuote "\"") ($ VSub_Name "$i") (Right_DoubleQuote "\"") (" --hostname=") (Right_DoubleQuote "\"") ($ VSub_Name "$i") 
                        (Right_DoubleQuote "\"") (" --profile=bcpc_host --ip-address=") (${ VSub_Name subnet) (.) (${ VSub_Name node) (" ") 
                        (EscapedLiteralPart token:<Lit_EscapedChar "\\\\">) ("\n") ("     --mac=") (Right_DoubleQuote "\"") (${ VSub_Name MAC) (Right_DoubleQuote "\"") 
                        (" --interface=") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("{dev}\n") ("     %%\n")
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [312]
                )
              ]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(hash)} {(vagrant)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [372]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(vagrant)} {(ssh)} {(-c)} {(DQ ($ VSub_Name "$REGISTERCMD"))})]
                  spids: [-1 376]
                )
              ]
              else_action: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (SimpleCommand
                              words: [{(hash)} {(sshpass)}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                  spids: [399]
                                )
                              ]
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Pipeline
                          children: [
                            (C {(echo)} {(ubuntu)})
                            (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-tt)} 
                              {(ubuntu) (Lit_Other "@") ($ VSub_Number "$1")} {(DQ ($ VSub_Name "$REGISTERCMD"))}
                            )
                          ]
                          negated: False
                        )
                      ]
                      spids: [-1 403]
                    )
                  ]
                  else_action: [
                    (C {(ssh)} {(-t)} {(-i)} {($ VSub_Name "$KEYFILE")} 
                      {(ubuntu) (Lit_Other "@") ($ VSub_Number "$1")} {($ VSub_Name "$REGISTERCMD")}
                    )
                  ]
                  spids: [431 449]
                )
              ]
              spids: [390 452]
            )
            (C {(let)} {(Lit_VarLike "node=") (node) (Lit_Other "+") (1)})
          ]
          spids: [209 462]
        )
      spids: [201 207]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SYNCCMD)
          op: Equal
          rhs: {(DQ ("sudo cobbler sync"))}
          spids: [465]
        )
      ]
      spids: [465]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(hash)} {(vagrant)}]
                  redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[476])]
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(vagrant)} {(ssh)} {(-c)} {(DQ ($ VSub_Name "$SYNCCMD"))})]
          spids: [-1 480]
        )
      ]
      else_action: [
        (If
          arms: [
            (if_arm
              cond: [
                (Sentence
                  child: 
                    (SimpleCommand
                      words: [{(hash)} {(sshpass)}]
                      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[502])]
                    )
                  terminator: <Op_Semi ";">
                )
              ]
              action: [
                (Pipeline
                  children: [
                    (C {(echo)} {(ubuntu)})
                    (C {(sshpass)} {(-p)} {(ubuntu)} {($ VSub_Name "$SSHCMD")} {(-tt)} 
                      {(ubuntu) (Lit_Other "@") ($ VSub_Number "$1")} {(DQ ($ VSub_Name "$SYNCCMD"))}
                    )
                  ]
                  negated: False
                )
              ]
              spids: [-1 506]
            )
          ]
          else_action: [
            (C {(ssh)} {(-t)} {(-i)} {($ VSub_Name "$KEYFILE")} 
              {(ubuntu) (Lit_Other "@") ($ VSub_Number "$1")} {(DQ ($ VSub_Name "$SYNCCMD"))}
            )
          ]
          spids: [534 554]
        )
      ]
      spids: [493 556]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name "$STARTVM"))}))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (ForEach
              iter_name: i
              iter_words: [{(bcpc-vm1)} {(bcpc-vm2)} {(bcpc-vm3)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(VBoxManage)} {(startvm)} {($ VSub_Name "$i")})]
                  spids: [588 598]
                )
              spids: [580 586]
            )
          ]
          spids: [-1 572]
        )
      ]
      spids: [-1 600]
    )
  ]
)