(CommandList
  children: [
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:root)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [47 55]
              )
            }
          spids: [46]
        )
      ]
      spids: [44]
    )
    (C {(export)} 
      {(Lit_VarLike 'MASTER=') 
        (BracedVarSub
          token: <VSub_Name MASTER>
          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ ('centos@172.10.0.11'))})
          spids: [67 73]
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'MASTER_IP=') 
        (BracedVarSub
          token: <VSub_Name MASTER>
          suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*@')})
          spids: [78 82]
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'MASTERS=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name MASTERS>
            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{($ VSub_Name '$MASTER')})
            spids: [98 102]
          )
        )
      }
    )
    (FuncDef
      name: length-of
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:len) op:Equal rhs:{(0)} spids:[123])]
              spids: [121]
            )
            (ForEach
              iter_name: part
              iter_words: [{($ VSub_Number '$1')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [(C {(let)} {(Lit_Other '+') (Lit_Other '+') (len)})]
                  spids: [136 146]
                )
              spids: [132 134]
            )
            (C {(echo)} {($ VSub_Name '$len')})
          ]
          spids: [118]
        )
      spids: [112 117]
    )
    (C {(export)} 
      {(Lit_VarLike 'NUM_MASTERS=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name NUM_MASTERS>
            suffix_op: 
              (StringUnary
                op_id: VTest_ColonHyphen
                arg_word: 
                  {
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [(C {(length-of)} {(DQ ($ VSub_Name '$MASTERS'))})]
                        )
                      left_token: <Left_CommandSub '$('>
                      spids: [165 171]
                    )
                  }
              )
            spids: [162 172]
          )
        )
      }
    )
    (FuncDef
      name: default-advertise-address
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:masters_array)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{(${ VSub_Name MASTERS)}])}
                  spids: [194]
                )
              ]
              spids: [192]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:master)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name masters_array>
                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                        spids: [205 210]
                      )
                    }
                  spids: [204]
                )
              ]
              spids: [202]
            )
            (C {(echo)} 
              {
                (BracedVarSub
                  token: <VSub_Name master>
                  suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*@')})
                  spids: [215 219]
                )
              }
            )
          ]
          spids: [185]
        )
      spids: [179 184]
    )
    (C {(export)} 
      {(Lit_VarLike 'MASTER_ADVERTISE_ADDRESS=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name MASTER_ADVERTISE_ADDRESS>
            suffix_op: 
              (StringUnary
                op_id: VTest_ColonHyphen
                arg_word: 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(default-advertise-address)})])
                      left_token: <Left_CommandSub '$('>
                      spids: [237 239]
                    )
                  }
              )
            spids: [234 240]
          )
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'MASTER_ADVERTISE_IP=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name MASTER_ADVERTISE_IP>
            suffix_op: 
              (StringUnary
                op_id: VTest_ColonHyphen
                arg_word: 
                  {
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [
                            (Pipeline
                              children: [
                                (C {(getent)} {(hosts)} {(DQ (${ VSub_Name MASTER_ADVERTISE_ADDRESS))})
                                (C {(awk)} {(SQ <'{print $1; exit}'>)})
                              ]
                              negated: False
                            )
                          ]
                        )
                      left_token: <Left_CommandSub '$('>
                      spids: [250 268]
                    )
                  }
              )
            spids: [247 269]
          )
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'NODES=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name NODES>
            suffix_op: 
              (StringUnary
                op_id: VTest_ColonHyphen
                arg_word: {(DQ ('centos@172.10.0.12 centos@172.10.0.13'))}
              )
            spids: [286 292]
          )
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'NUM_NODES=') 
        (DQ 
          (BracedVarSub
            token: <VSub_Name NUM_NODES>
            suffix_op: 
              (StringUnary
                op_id: VTest_ColonHyphen
                arg_word: 
                  {
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [(C {(length-of)} {(DQ ($ VSub_Name '$NODES'))})]
                        )
                      left_token: <Left_CommandSub '$('>
                      spids: [306 312]
                    )
                  }
              )
            spids: [303 313]
          )
        )
      }
    )
    (C {(export)} {(Lit_VarLike 'NUM_NODES=') (DQ (${ VSub_Name NUM_NODES))})
    (FuncDef
      name: concat-etcd-servers
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:etcd_servers) op:Equal rhs:{(DQ )} spids:[344])]
              spids: [342]
            )
            (ForEach
              iter_name: master
              iter_words: [{(${ VSub_Name MASTERS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:master_ip)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name master>
                                suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*@')})
                                spids: [366 370]
                              )
                            }
                          spids: [365]
                        )
                      ]
                      spids: [363]
                    )
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:prefix)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [375]
                        )
                      ]
                      spids: [373]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$etcd_servers'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:prefix)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name etcd_servers) (','))}
                                  spids: [396]
                                )
                              ]
                              spids: [396]
                            )
                          ]
                          spids: [16777215 393]
                        )
                      ]
                      spids: [16777215 405]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:etcd_servers)
                          op: Equal
                          rhs: 
                            {
                              (DQ (${ VSub_Name prefix) ('https://') (${ VSub_Name master_ip) (':2379'))
                            }
                          spids: [408]
                        )
                      ]
                      spids: [408]
                    )
                  ]
                  spids: [360 421]
                )
              spids: [354 358]
            )
            (C {(echo)} {(DQ ($ VSub_Name '$etcd_servers'))})
          ]
          spids: [339]
        )
      spids: [333 338]
    )
    (C {(export)} 
      {(Lit_VarLike 'ETCD_SERVERS=') 
        (DQ 
          (CommandSubPart
            command_list: (CommandList children:[(C {(concat-etcd-servers)})])
            left_token: <Left_CommandSub '$('>
            spids: [437 439]
          )
        )
      }
    )
    (FuncDef
      name: concat-etcd-initial-cluster
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:etcd_initial_cluster)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [463]
                )
              ]
              spids: [461]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:num_infra) op:Equal rhs:{(0)} spids:[470])]
              spids: [468]
            )
            (ForEach
              iter_name: master
              iter_words: [{(${ VSub_Name MASTERS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:master_ip)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name master>
                                  suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*@')})
                                  spids: [492 496]
                                )
                              )
                            }
                          spids: [490]
                        )
                      ]
                      spids: [488]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$etcd_initial_cluster'))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:etcd_initial_cluster)
                                  op: PlusEqual
                                  rhs: {(DQ (','))}
                                  spids: [516]
                                )
                              ]
                              spids: [516]
                            )
                          ]
                          spids: [16777215 513]
                        )
                      ]
                      spids: [16777215 522]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:etcd_initial_cluster)
                          op: PlusEqual
                          rhs: 
                            {
                              (DQ (infra) (${ VSub_Name num_infra) ('=https://') 
                                (${ VSub_Name master_ip) (':2380')
                              )
                            }
                          spids: [525]
                        )
                      ]
                      spids: [525]
                    )
                    (C {(let)} {(Lit_Other '+') (Lit_Other '+') (num_infra)})
                  ]
                  spids: [485 546]
                )
              spids: [479 483]
            )
            (C {(echo)} {(DQ ($ VSub_Name '$etcd_initial_cluster'))})
          ]
          spids: [458]
        )
      spids: [452 457]
    )
    (C {(export)} 
      {(Lit_VarLike 'ETCD_INITIAL_CLUSTER=') 
        (DQ 
          (CommandSubPart
            command_list: (CommandList children:[(C {(concat-etcd-initial-cluster)})])
            left_token: <Left_CommandSub '$('>
            spids: [562 564]
          )
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CERT_DIR)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name CERT_DIR>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonHyphen
                      arg_word: {(${ VSub_Name root) (Lit_Slash /) (ca-cert)}
                    )
                  spids: [570 578]
                )
              )
            }
          spids: [568]
        )
      ]
      spids: [568]
    )
    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name CERT_DIR))})
    (C {(export)} 
      {(Lit_VarLike 'CERT_DIR=') 
        (DQ 
          (CommandSubPart
            command_list: 
              (CommandList
                children: [
                  (Sentence
                    child: (C {(cd)} {(DQ (${ VSub_Name CERT_DIR))})
                    terminator: <Op_Semi ';'>
                  )
                  (C {(pwd)})
                ]
              )
            left_token: <Left_CommandSub '$('>
            spids: [598 609]
          )
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'SERVICE_CLUSTER_IP_RANGE=') 
        (BracedVarSub
          token: <VSub_Name SERVICE_CLUSTER_IP_RANGE>
          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (192.168.3.0/24))})
          spids: [622 628]
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_CLUSTER_DNS)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBE_ENABLE_CLUSTER_DNS>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                  spids: [636 640]
                )
              )
            }
          spids: [634]
        )
      ]
      spids: [634]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DNS_SERVER_IP)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name DNS_SERVER_IP>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (192.168.3.100))})
                spids: [647 653]
              )
            }
          spids: [646]
        )
      ]
      spids: [646]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DNS_DOMAIN)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name DNS_DOMAIN>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (cluster.local))})
                spids: [656 662]
              )
            }
          spids: [655]
        )
      ]
      spids: [655]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_CLUSTER_UI)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBE_ENABLE_CLUSTER_UI>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                  spids: [670 674]
                )
              )
            }
          spids: [668]
        )
      ]
      spids: [668]
    )
    (C {(export)} 
      {(Lit_VarLike 'FLANNEL_NET=') 
        (BracedVarSub
          token: <VSub_Name FLANNEL_NET>
          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (172.16.0.0/16))})
          spids: [684 690]
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'ADMISSION_CONTROL=') 
        (BracedVarSub
          token: <VSub_Name ADMISSION_CONTROL>
          suffix_op: 
            (StringUnary
              op_id: VTest_ColonHyphen
              arg_word: 
                {
                  (DQ 
                    (
'Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultTolerationSeconds,Priority,ResourceQuota'
                    )
                  )
                }
            )
          spids: [702 708]
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'DOCKER_OPTS=') 
        (BracedVarSub
          token: <VSub_Name DOCKER_OPTS>
          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
          spids: [720 725]
        )
      }
    )
    (C {(export)} 
      {(Lit_VarLike 'PROCESS_CHECK_TIMEOUT=') 
        (BracedVarSub
          token: <VSub_Name PROCESS_CHECK_TIMEOUT>
          suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(180)})
          spids: [735 739]
        )
      }
    )
    (C {(unset)} {(-f)} {(default-advertise-address)} {(concat-etcd-servers)} {(length-of)} 
      {(concat-etcd-initial-cluster)}
    )
  ]
)