(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [45 53]
              ) (/..)
            }
          spids: [44]
        )
      ]
      spids: [44]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOCKER_OPTS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name DOCKER_OPTS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [67 72]
              )
            }
          spids: [66]
        )
      ]
      spids: [66]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOCKER)
          op: Equal
          rhs: {(ArrayLiteralPart words:[{(docker)} {(${ VSub_Name DOCKER_OPTS)}])}
          spids: [74]
        )
      ]
      spids: [74]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOCKERIZE_KUBELET)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name DOCKERIZE_KUBELET>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [84 89]
              )
            }
          spids: [83]
        )
      ]
      spids: [83]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ALLOW_PRIVILEGED)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ALLOW_PRIVILEGED>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [92 97]
              )
            }
          spids: [91]
        )
      ]
      spids: [91]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ALLOW_SECURITY_CONTEXT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ALLOW_SECURITY_CONTEXT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [100 105]
              )
            }
          spids: [99]
        )
      ]
      spids: [99]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PSP_ADMISSION)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name PSP_ADMISSION>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [108 113]
              )
            }
          spids: [107]
        )
      ]
      spids: [107]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:NODE_ADMISSION)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name NODE_ADMISSION>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [116 121]
              )
            }
          spids: [115]
        )
      ]
      spids: [115]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RUNTIME_CONFIG)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name RUNTIME_CONFIG>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [124 129]
              )
            }
          spids: [123]
        )
      ]
      spids: [123]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBELET_AUTHORIZATION_WEBHOOK)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBELET_AUTHORIZATION_WEBHOOK>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [132 137]
              )
            }
          spids: [131]
        )
      ]
      spids: [131]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBELET_AUTHENTICATION_WEBHOOK)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBELET_AUTHENTICATION_WEBHOOK>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [140 145]
              )
            }
          spids: [139]
        )
      ]
      spids: [139]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:POD_MANIFEST_PATH)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name POD_MANIFEST_PATH>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(DQ (/var/run/kubernetes/static-pods))}
                  )
                spids: [148 154]
              )
            }
          spids: [147]
        )
      ]
      spids: [147]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBELET_FLAGS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBELET_FLAGS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [157 162]
              )
            }
          spids: [156]
        )
      ]
      spids: [156]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FAIL_SWAP_ON)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name FAIL_SWAP_ON>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (false))})
                spids: [168 174]
              )
            }
          spids: [167]
        )
      ]
      spids: [167]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:NET_PLUGIN)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name NET_PLUGIN>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [180 185]
              )
            }
          spids: [179]
        )
      ]
      spids: [179]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CNI_CONF_DIR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CNI_CONF_DIR>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [194 199]
              )
            }
          spids: [193]
        )
      ]
      spids: [193]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CNI_BIN_DIR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CNI_BIN_DIR>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [202 207]
              )
            }
          spids: [201]
        )
      ]
      spids: [201]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SERVICE_CLUSTER_IP_RANGE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name SERVICE_CLUSTER_IP_RANGE>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(10.0.0.0) (Lit_Slash /) (24)}
                  )
                spids: [210 216]
              )
            }
          spids: [209]
        )
      ]
      spids: [209]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FIRST_SERVICE_CLUSTER_IP)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name FIRST_SERVICE_CLUSTER_IP>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(10.0.0.1)})
                spids: [219 223]
              )
            }
          spids: [218]
        )
      ]
      spids: [218]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CGROUPS_PER_QOS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CGROUPS_PER_QOS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                spids: [229 233]
              )
            }
          spids: [228]
        )
      ]
      spids: [228]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CGROUP_DRIVER)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CGROUP_DRIVER>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [239 244]
              )
            }
          spids: [238]
        )
      ]
      spids: [238]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:USER)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name USER>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(whoami)})])
                          left_token: <Left_CommandSub '$('>
                          spids: [253 255]
                        )
                      }
                  )
                spids: [250 256]
              )
            }
          spids: [249]
        )
      ]
      spids: [249]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:EVICTION_HARD)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name EVICTION_HARD>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {(DQ ('memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%'))}
                  )
                spids: [263 269]
              )
            }
          spids: [262]
        )
      ]
      spids: [262]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:EVICTION_SOFT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name EVICTION_SOFT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [272 277]
              )
            }
          spids: [271]
        )
      ]
      spids: [271]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:EVICTION_PRESSURE_TRANSITION_PERIOD)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name EVICTION_PRESSURE_TRANSITION_PERIOD>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (1m))})
                spids: [280 286]
              )
            }
          spids: [279]
        )
      ]
      spids: [279]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_CLUSTER_DNS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBE_ENABLE_CLUSTER_DNS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                spids: [302 306]
              )
            }
          spids: [301]
        )
      ]
      spids: [301]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DNS_SERVER_IP)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBE_DNS_SERVER_IP>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(10.0.0.10)})
                spids: [309 313]
              )
            }
          spids: [308]
        )
      ]
      spids: [308]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DNS_DOMAIN)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBE_DNS_NAME>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (cluster.local))})
                spids: [316 322]
              )
            }
          spids: [315]
        )
      ]
      spids: [315]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBECTL)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBECTL>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(cluster) (Lit_Slash /) (kubectl.sh)}
                  )
                spids: [325 331]
              )
            }
          spids: [324]
        )
      ]
      spids: [324]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:WAIT_FOR_URL_API_SERVER)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name WAIT_FOR_URL_API_SERVER>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(20)})
                spids: [334 338]
              )
            }
          spids: [333]
        )
      ]
      spids: [333]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_DAEMON)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ENABLE_DAEMON>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                spids: [341 345]
              )
            }
          spids: [340]
        )
      ]
      spids: [340]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:HOSTNAME_OVERRIDE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name HOSTNAME_OVERRIDE>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (127.0.0.1))})
                spids: [348 354]
              )
            }
          spids: [347]
        )
      ]
      spids: [347]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLOUD_PROVIDER)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CLOUD_PROVIDER>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [357 362]
              )
            }
          spids: [356]
        )
      ]
      spids: [356]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLOUD_CONFIG)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CLOUD_CONFIG>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [365 370]
              )
            }
          spids: [364]
        )
      ]
      spids: [364]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:FEATURE_GATES)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name FEATURE_GATES>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ ('AllAlpha=false'))})
                spids: [373 379]
              )
            }
          spids: [372]
        )
      ]
      spids: [372]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:STORAGE_BACKEND)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name STORAGE_BACKEND>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (etcd3))})
                spids: [382 388]
              )
            }
          spids: [381]
        )
      ]
      spids: [381]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_SWAGGER_UI)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ENABLE_SWAGGER_UI>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                spids: [394 398]
              )
            }
          spids: [393]
        )
      ]
      spids: [393]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_CLUSTER_DASHBOARD)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBE_ENABLE_CLUSTER_DASHBOARD>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                spids: [405 409]
              )
            }
          spids: [404]
        )
      ]
      spids: [404]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_APISERVER_BASIC_AUDIT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ENABLE_APISERVER_BASIC_AUDIT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(false)})
                spids: [416 420]
              )
            }
          spids: [415]
        )
      ]
      spids: [415]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:AUTHORIZATION_MODE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name AUTHORIZATION_MODE>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ ('Node,RBAC'))})
                spids: [427 433]
              )
            }
          spids: [426]
        )
      ]
      spids: [426]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBECONFIG_TOKEN)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBECONFIG_TOKEN>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [436 441]
              )
            }
          spids: [435]
        )
      ]
      spids: [435]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:AUTH_ARGS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name AUTH_ARGS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [444 449]
              )
            }
          spids: [443]
        )
      ]
      spids: [443]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DEFAULT_STORAGE_CLASS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBE_DEFAULT_STORAGE_CLASS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                spids: [456 460]
              )
            }
          spids: [455]
        )
      ]
      spids: [455]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_CACHE_MUTATION_DETECTOR)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBE_CACHE_MUTATION_DETECTOR>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                  spids: [468 472]
                )
              )
            }
          spids: [466]
        )
      ]
      spids: [466]
    )
    (C {(export)} {(KUBE_CACHE_MUTATION_DETECTOR)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_PANIC_WATCH_DECODE_ERROR)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBE_PANIC_WATCH_DECODE_ERROR>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                  spids: [485 489]
                )
              )
            }
          spids: [483]
        )
      ]
      spids: [483]
    )
    (C {(export)} {(KUBE_PANIC_WATCH_DECODE_ERROR)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ADMISSION_CONTROL)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ADMISSION_CONTROL>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [498 503]
              )
            }
          spids: [497]
        )
      ]
      spids: [497]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ADMISSION_CONTROL_CONFIG_FILE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ADMISSION_CONTROL_CONFIG_FILE>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [506 511]
              )
            }
          spids: [505]
        )
      ]
      spids: [505]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:START_MODE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name START_MODE>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (all))})
                spids: [518 524]
              )
            }
          spids: [517]
        )
      ]
      spids: [517]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_CONTROLLERS)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBE_CONTROLLERS>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ ('*'))})
                  spids: [532 538]
                )
              )
            }
          spids: [530]
        )
      ]
      spids: [530]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name CLOUD_PROVIDER))} 
                  {(Lit_Other '=') (Lit_Other '=')} {(DQ (openstack))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name CLOUD_CONFIG))} 
                          {(Lit_Other '=') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Missing CLOUD_CONFIG env for OpenStack provider!'))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [16777215 587]
                )
              ]
              spids: [16777215 602]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ (${ VSub_Name CLOUD_CONFIG))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Cloud config ') (${ VSub_Name CLOUD_CONFIG) (" doesn't exist"))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [16777215 622]
                )
              ]
              spids: [16777215 641]
            )
          ]
          spids: [16777215 565]
        )
      ]
      spids: [16777215 643]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name FAIL_SWAP_ON))} 
                  {(Lit_Other '=') (Lit_Other '=')} {(DQ (false))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ 
                  (
'WARNING : The kubelet is configured to not fail if swap is enabled; production deployments should disable swap.'
                  )
                )
              }
            )
          ]
          spids: [16777215 669]
        )
      ]
      spids: [16777215 678]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(id)} {(-u)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [686 690]
                      )
                    )
                  } {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {
                  (DQ 
                    (
'WARNING : This script MAY be run as root for docker socket / iptables functionality; if failures occur, retry as root.'
                    )
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[712])]
            )
          ]
          spids: [16777215 703]
        )
      ]
      spids: [16777215 715]
    )
    (C {(set)} {(-e)})
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/init.sh))})
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('This script starts a local kube cluster. '))})
            (C {(echo)} 
              {(DQ ("Example 0: hack/local-up-cluster.sh -h  (this 'help' usage description)"))}
            )
            (C {(echo)} 
              {
                (DQ 
                  (
'Example 1: hack/local-up-cluster.sh -o _output/dockerized/bin/linux/amd64/ (run from docker output)'
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (DQ 
                  (
'Example 2: hack/local-up-cluster.sh -O (auto-guess the bin path for your platform)'
                  )
                )
              }
            )
            (C {(echo)} 
              {(DQ ('Example 3: hack/local-up-cluster.sh (build a local copy of the source)'))}
            )
          ]
          spids: [740]
        )
      spids: [736 739]
    )
    (FuncDef
      name: guess_built_binary_path
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:hyperkube_path)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C 
                                {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') 
                                  (Lit_Other ':') (find-binary)
                                } {(DQ (hyperkube))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [796 808]
                      )
                    }
                  spids: [795]
                )
              ]
              spids: [793]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(DQ (${ VSub_Name hyperkube_path))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return>)]
                  spids: [16777215 826]
                )
              ]
              spids: [16777215 832]
            )
            (C {(echo)} {(-n)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(dirname)} {(DQ (${ VSub_Name hyperkube_path))})]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [840 848]
                  )
                )
              }
            )
          ]
          spids: [790]
        )
      spids: [786 789]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GO_OUT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name GO_OUT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{})
                spids: [858 861]
              )
            }
          spids: [857]
        )
      ]
      spids: [857]
    )
    (While
      cond: [(C {(getopts)} {(DQ ('ho:O'))} {(OPTION)})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$OPTION')}
              arms: [
                (case_arm
                  pat_list: [{(o)}]
                  action: [
                    (C {(echo)} {(DQ ('skipping build'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GO_OUT)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$OPTARG'))}
                          spids: [894]
                        )
                      ]
                      spids: [894]
                    )
                    (C {(echo)} {(DQ ('using source ') ($ VSub_Name '$GO_OUT'))})
                  ]
                  spids: [883 884 908 16777215]
                )
                (case_arm
                  pat_list: [{(O)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GO_OUT)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(guess_built_binary_path)})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [916 918]
                              )
                            }
                          spids: [915]
                        )
                      ]
                      spids: [915]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$GO_OUT'))} 
                                  {(Lit_Other '=') (Lit_Other '=')} {(DQ )} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('Could not guess the correct output directory to use.'))})
                            (C {(exit)} {(1)})
                          ]
                          spids: [16777215 938]
                        )
                      ]
                      spids: [16777215 953]
                    )
                  ]
                  spids: [911 912 956 16777215]
                )
                (case_arm
                  pat_list: [{(h)}]
                  action: [(C {(usage)}) (C {(exit)})]
                  spids: [959 960 969 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '?')}]
                  action: [(C {(usage)}) (C {(exit)})]
                  spids: [972 973 982 16777215]
                )
              ]
              spids: [876 880 985]
            )
          ]
          spids: [873 987]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (x) ($ VSub_Name '$GO_OUT'))} 
                  {(Lit_Other '=') (Lit_Other '=')} {(DQ (x))} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(make)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))} 
              {(Lit_VarLike 'WHAT=') (DQ ('cmd/kubectl cmd/hyperkube'))}
            )
          ]
          spids: [16777215 1009]
        )
      ]
      else_action: [(C {(echo)} {(DQ ('skipped the build.'))})]
      spids: [1027 1036]
    )
    (FuncDef
      name: test_rkt
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name RKT_PATH))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(${ VSub_Name RKT_PATH)} {(list)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 2
                          arg_word: {(/dev/null)}
                          spids: [1070]
                        )
                        (Redir
                          op_id: Redir_Great
                          fd: 1
                          arg_word: {(/dev/null)}
                          spids: [1074]
                        )
                      ]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} 
                                  {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ("Failed to successfully run 'rkt list', please verify that ") 
                                  (${ VSub_Name RKT_PATH) (' is the path of rkt binary.')
                                )
                              }
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [16777215 1097]
                        )
                      ]
                      spids: [16777215 1116]
                    )
                  ]
                  spids: [16777215 1061]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(rkt)} {(list)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [1126]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 1
                      arg_word: {(/dev/null)}
                      spids: [1130]
                    )
                  ]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(DQ ($ VSub_QMark '$?'))} 
                              {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)} 
                          {
                            (DQ 
                              (
"Failed to successfully run 'rkt list', please verify that rkt is in "
                              ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (PATH.)
                            )
                          }
                        )
                        (C {(exit)} {(1)})
                      ]
                      spids: [16777215 1153]
                    )
                  ]
                  spids: [16777215 1170]
                )
              ]
              spids: [1119 1173]
            )
          ]
          spids: [1043]
        )
      spids: [1039 1042]
    )
    (C {(set)} {(Lit_Other '+') (e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(8080)})
                spids: [1189 1193]
              )
            }
          spids: [1188]
        )
      ]
      spids: [1188]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_SECURE_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_SECURE_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(6443)})
                spids: [1196 1200]
              )
            }
          spids: [1195]
        )
      ]
      spids: [1195]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_HOST)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_HOST>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(localhost)})
                spids: [1207 1211]
              )
            }
          spids: [1206]
        )
      ]
      spids: [1206]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_HOST_IP)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_HOST_IP>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (127.0.0.1))})
                spids: [1214 1220]
              )
            }
          spids: [1213]
        )
      ]
      spids: [1213]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ADVERTISE_ADDRESS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ADVERTISE_ADDRESS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [1223 1228]
              )
            }
          spids: [1222]
        )
      ]
      spids: [1222]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_BIND_ADDR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_BIND_ADDR>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (0.0.0.0))})
                spids: [1231 1237]
              )
            }
          spids: [1230]
        )
      ]
      spids: [1230]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:EXTERNAL_HOSTNAME)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name EXTERNAL_HOSTNAME>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(localhost)})
                spids: [1240 1244]
              )
            }
          spids: [1239]
        )
      ]
      spids: [1239]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBELET_HOST)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBELET_HOST>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (127.0.0.1))})
                spids: [1248 1254]
              )
            }
          spids: [1247]
        )
      ]
      spids: [1247]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_CORS_ALLOWED_ORIGINS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_CORS_ALLOWED_ORIGINS>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {(Lit_Slash /) ('127.0.0.1(:[0-9]+)?') (Lit_Other '$') (',') (Lit_Slash /) 
                        ('localhost(:[0-9]+)?') (Lit_Other '$')
                      }
                  )
                spids: [1260 1270]
              )
            }
          spids: [1259]
        )
      ]
      spids: [1259]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBELET_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KUBELET_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(10250)})
                spids: [1273 1277]
              )
            }
          spids: [1272]
        )
      ]
      spids: [1272]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LOG_LEVEL)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name LOG_LEVEL>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(3)})
                spids: [1280 1284]
              )
            }
          spids: [1279]
        )
      ]
      spids: [1279]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LOG_SPEC)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name LOG_SPEC>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [1290 1295]
              )
            }
          spids: [1289]
        )
      ]
      spids: [1289]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LOG_DIR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name LOG_DIR>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (/tmp))})
                spids: [1298 1304]
              )
            }
          spids: [1297]
        )
      ]
      spids: [1297]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONTAINER_RUNTIME)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CONTAINER_RUNTIME>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (docker))})
                spids: [1307 1313]
              )
            }
          spids: [1306]
        )
      ]
      spids: [1306]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONTAINER_RUNTIME_ENDPOINT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CONTAINER_RUNTIME_ENDPOINT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [1316 1321]
              )
            }
          spids: [1315]
        )
      ]
      spids: [1315]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:IMAGE_SERVICE_ENDPOINT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name IMAGE_SERVICE_ENDPOINT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [1324 1329]
              )
            }
          spids: [1323]
        )
      ]
      spids: [1323]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RKT_PATH)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name RKT_PATH>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [1332 1337]
              )
            }
          spids: [1331]
        )
      ]
      spids: [1331]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RKT_STAGE1_IMAGE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name RKT_STAGE1_IMAGE>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )})
                spids: [1340 1345]
              )
            }
          spids: [1339]
        )
      ]
      spids: [1339]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CHAOS_CHANCE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CHAOS_CHANCE>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(0.0)})
                spids: [1348 1352]
              )
            }
          spids: [1347]
        )
      ]
      spids: [1347]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CPU_CFS_QUOTA)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CPU_CFS_QUOTA>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                spids: [1355 1359]
              )
            }
          spids: [1354]
        )
      ]
      spids: [1354]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_HOSTPATH_PROVISIONER)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ENABLE_HOSTPATH_PROVISIONER>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (false))})
                spids: [1362 1368]
              )
            }
          spids: [1361]
        )
      ]
      spids: [1361]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLAIM_BINDER_SYNC_PERIOD)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CLAIM_BINDER_SYNC_PERIOD>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (15s))})
                spids: [1371 1377]
              )
            }
          spids: [1370]
        )
      ]
      spids: [1370]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ENABLE_CONTROLLER_ATTACH_DETACH)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ENABLE_CONTROLLER_ATTACH_DETACH>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (true))})
                spids: [1383 1389]
              )
            }
          spids: [1382]
        )
      ]
      spids: [1382]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KEEP_TERMINATED_POD_VOLUMES)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name KEEP_TERMINATED_POD_VOLUMES>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (true))})
                spids: [1395 1401]
              )
            }
          spids: [1394]
        )
      ]
      spids: [1394]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CERT_DIR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CERT_DIR>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (/var/run/kubernetes))})
                spids: [1410 1416]
              )
            }
          spids: [1409]
        )
      ]
      spids: [1409]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ROOT_CA_FILE)
          op: Equal
          rhs: {(${ VSub_Name CERT_DIR) (/server-ca.crt)}
          spids: [1418]
        )
      ]
      spids: [1418]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ROOT_CA_KEY)
          op: Equal
          rhs: {(${ VSub_Name CERT_DIR) (/server-ca.key)}
          spids: [1424]
        )
      ]
      spids: [1424]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLUSTER_SIGNING_CERT_FILE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CLUSTER_SIGNING_CERT_FILE>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(DQ (${ VSub_Name ROOT_CA_FILE))}
                  )
                spids: [1431 1439]
              )
            }
          spids: [1430]
        )
      ]
      spids: [1430]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLUSTER_SIGNING_KEY_FILE)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CLUSTER_SIGNING_KEY_FILE>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(DQ (${ VSub_Name ROOT_CA_KEY))}
                  )
                spids: [1442 1450]
              )
            }
          spids: [1441]
        )
      ]
      spids: [1441]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(${ VSub_Name CONTAINER_RUNTIME)}
                      right: {(DQ (docker))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name CGROUP_DRIVER)})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CGROUP_DRIVER)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(docker)} {(info)})
                                          (C {(grep)} {(DQ ('Cgroup Driver:'))})
                                          (C {(cut)} {(-f3-)} {(-d) (SQ <' '>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [1501 1524]
                              )
                            }
                          spids: [1500]
                        )
                      ]
                      spids: [1500]
                    )
                    (C {(echo)} 
                      {
                        (DQ ('Kubelet cgroup driver defaulted to use: ') (${ VSub_Name CGROUP_DRIVER))
                      }
                    )
                  ]
                  spids: [16777215 1493]
                )
              ]
              spids: [16777215 1537]
            )
          ]
          spids: [16777215 1473]
        )
      ]
      spids: [16777215 1539]
    )
    (Sentence child:(C {(mkdir)} {(-p)} {(DQ (${ VSub_Name CERT_DIR))}) terminator:<Op_Amp '&'>)
    (AndOr
      children: [
        (SimpleCommand
          redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1558])]
        )
        (C {(sudo)} {(mkdir)} {(-p)} {(DQ (${ VSub_Name CERT_DIR))})
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONTROLPLANE_SUDO)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (AndOr
                        children: [
                          (C {(test)} {(-w)} {(DQ (${ VSub_Name CERT_DIR))})
                          (C {(echo)} {(DQ ('sudo -E'))})
                        ]
                        op_id: Op_DPipe
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [1576 1594]
              )
            }
          spids: [1575]
        )
      ]
      spids: [1575]
    )
    (FuncDef
      name: test_apiserver_off
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_gt
                              left: {(DQ (${ VSub_Name API_PORT))}
                              right: {(DQ (0))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(curl)} {(--silent)} {(-g)} 
                      {($ VSub_Name '$API_HOST') (Lit_Other ':') ($ VSub_Name '$API_PORT')}
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(KW_Bang '!')} {($ VSub_QMark '$?')} {(-eq)} {(0)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ('API SERVER insecure port is free, proceeding...'))})
                          ]
                          spids: [16777215 1660]
                        )
                      ]
                      else_action: [
                        (C {(echo)} 
                          {
                            (DQ ('ERROR starting API SERVER, exiting. Some process on ') 
                              ($ VSub_Name '$API_HOST') (' is serving already on ') ($ VSub_Name '$API_PORT')
                            )
                          }
                        )
                        (C {(exit)} {(1)})
                      ]
                      spids: [1670 1688]
                    )
                  ]
                  spids: [16777215 1631]
                )
              ]
              spids: [16777215 1691]
            )
            (C {(curl)} {(--silent)} {(-k)} {(-g)} 
              {($ VSub_Name '$API_HOST') (Lit_Other ':') ($ VSub_Name '$API_SECURE_PORT')}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {($ VSub_QMark '$?')} {(-eq)} {(0)} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('API SERVER secure port is free, proceeding...'))})]
                  spids: [16777215 1723]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ ('ERROR starting API SERVER, exiting. Some process on ') 
                      ($ VSub_Name '$API_HOST') (' is serving already on ') ($ VSub_Name '$API_SECURE_PORT')
                    )
                  }
                )
                (C {(exit)} {(1)})
              ]
              spids: [1733 1751]
            )
          ]
          spids: [1601]
        )
      spids: [1597 1600]
    )
    (FuncDef
      name: detect_binary
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(uname)} {(-s)})])
                      left_token: <Left_CommandSub '$('>
                      spids: [1770 1774]
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_os)
                          op: Equal
                          rhs: {(darwin)}
                          spids: [1784]
                        )
                      ]
                      spids: [1784]
                    )
                  ]
                  spids: [1780 1781 1788 16777215]
                )
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_os)
                          op: Equal
                          rhs: {(linux)}
                          spids: [1795]
                        )
                      ]
                      spids: [1795]
                    )
                  ]
                  spids: [1791 1792 1799 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Unsupported host OS.  Must be Linux or Mac OS X.'))}]
                      redirects: [
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 16777215
                          arg_word: {(2)}
                          spids: [1812]
                        )
                      ]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [1802 1803 1821 16777215]
                )
              ]
              spids: [1767 1777 1824]
            )
            (Case
              to_match: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(uname)} {(-m)})])
                      left_token: <Left_CommandSub '$('>
                      spids: [1831 1835]
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(x86_64) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(amd64)}
                          spids: [1846]
                        )
                      ]
                      spids: [1846]
                    )
                  ]
                  spids: [1841 1843 1850 16777215]
                )
                (case_arm
                  pat_list: [{(i) (Lit_Other '?') (86_64) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(amd64)}
                          spids: [1860]
                        )
                      ]
                      spids: [1860]
                    )
                  ]
                  spids: [1853 1857 1864 16777215]
                )
                (case_arm
                  pat_list: [{(amd64) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(amd64)}
                          spids: [1872]
                        )
                      ]
                      spids: [1872]
                    )
                  ]
                  spids: [1867 1869 1876 16777215]
                )
                (case_arm
                  pat_list: [{(aarch64) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(arm64)}
                          spids: [1884]
                        )
                      ]
                      spids: [1884]
                    )
                  ]
                  spids: [1879 1881 1888 16777215]
                )
                (case_arm
                  pat_list: [{(arm64) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(arm64)}
                          spids: [1896]
                        )
                      ]
                      spids: [1896]
                    )
                  ]
                  spids: [1891 1893 1900 16777215]
                )
                (case_arm
                  pat_list: [{(arm) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(arm)}
                          spids: [1908]
                        )
                      ]
                      spids: [1908]
                    )
                  ]
                  spids: [1903 1905 1912 16777215]
                )
                (case_arm
                  pat_list: [{(i) (Lit_Other '?') (86) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(x86)}
                          spids: [1922]
                        )
                      ]
                      spids: [1922]
                    )
                  ]
                  spids: [1915 1919 1926 16777215]
                )
                (case_arm
                  pat_list: [{(s390x) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(s390x)}
                          spids: [1934]
                        )
                      ]
                      spids: [1934]
                    )
                  ]
                  spids: [1929 1931 1938 16777215]
                )
                (case_arm
                  pat_list: [{(ppc64le) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:host_arch)
                          op: Equal
                          rhs: {(ppc64le)}
                          spids: [1946]
                        )
                      ]
                      spids: [1946]
                    )
                  ]
                  spids: [1941 1943 1950 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ 
                            (
'Unsupported host arch. Must be x86_64, 386, arm, arm64, s390x or ppc64le.'
                            )
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_GreatAnd
                          fd: 16777215
                          arg_word: {(2)}
                          spids: [1963]
                        )
                      ]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [1953 1954 1972 16777215]
                )
              ]
              spids: [1828 1838 1975]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GO_OUT)
                  op: Equal
                  rhs: 
                    {
                      (DQ (${ VSub_Name KUBE_ROOT) (/_output/local/bin/) (${ VSub_Name host_os) (/) 
                        (${ VSub_Name host_arch)
                      )
                    }
                  spids: [1979]
                )
              ]
              spids: [1979]
            )
          ]
          spids: [1760]
        )
      spids: [1756 1759]
    )
    (FuncDef
      name: cleanup_dockerized_kubelet
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_e child:{($ VSub_Name '$KUBELET_CIDFILE')})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(docker)}
                        {(kill)}
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Less
                                        fd: 16777215
                                        arg_word: {($ VSub_Name '$KUBELET_CIDFILE')}
                                        spids: [2023]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2022 2025]
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(/dev/null)}
                          spids: [2027]
                        )
                      ]
                    )
                    (C {(rm)} {(-f)} {($ VSub_Name '$KUBELET_CIDFILE')})
                  ]
                  spids: [16777215 2015]
                )
              ]
              spids: [16777215 2039]
            )
          ]
          spids: [2001]
        )
      spids: [1997 2000]
    )
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Cleaning up...'))})
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name APISERVER_PID>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2096 2099]
                            )
                          )
                        }
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:APISERVER_PIDS)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: (C {(pgrep)} {(-P)} {(${ VSub_Name APISERVER_PID)})
                                    terminator: <Op_Semi ';'>
                                  )
                                  (C {(ps)} {(-o)} {(Lit_VarLike 'pid=')} {(-p)} 
                                    {(${ VSub_Name APISERVER_PID)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2107 2129]
                          )
                        }
                      spids: [2106]
                    )
                  ]
                  spids: [2106]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name APISERVER_PIDS>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2137 2140]
                            )
                          )
                        }
                    )
                )
                (C {(sudo)} {(kill)} {(${ VSub_Name APISERVER_PIDS)})
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name CTLRMGR_PID>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2166 2169]
                            )
                          )
                        }
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CTLRMGR_PIDS)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: (C {(pgrep)} {(-P)} {(${ VSub_Name CTLRMGR_PID)})
                                    terminator: <Op_Semi ';'>
                                  )
                                  (C {(ps)} {(-o)} {(Lit_VarLike 'pid=')} {(-p)} 
                                    {(${ VSub_Name CTLRMGR_PID)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2177 2199]
                          )
                        }
                      spids: [2176]
                    )
                  ]
                  spids: [2176]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name CTLRMGR_PIDS>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2207 2210]
                            )
                          )
                        }
                    )
                )
                (C {(sudo)} {(kill)} {(${ VSub_Name CTLRMGR_PIDS)})
              ]
              op_id: Op_DAmp
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ ($ VSub_Name '$DOCKERIZE_KUBELET'))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(cleanup_dockerized_kubelet)})]
                  spids: [16777215 2240]
                )
              ]
              else_action: [
                (AndOr
                  children: [
                    (DBracket
                      expr: 
                        (BoolUnary
                          op_id: BoolUnary_n
                          child: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name KUBELET_PID>
                                  suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                                  spids: [2258 2261]
                                )
                              )
                            }
                        )
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBELET_PIDS)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Sentence
                                        child: (C {(pgrep)} {(-P)} {(${ VSub_Name KUBELET_PID)})
                                        terminator: <Op_Semi ';'>
                                      )
                                      (C {(ps)} {(-o)} {(Lit_VarLike 'pid=')} {(-p)} 
                                        {(${ VSub_Name KUBELET_PID)}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [2269 2291]
                              )
                            }
                          spids: [2268]
                        )
                      ]
                      spids: [2268]
                    )
                  ]
                  op_id: Op_DAmp
                )
                (AndOr
                  children: [
                    (DBracket
                      expr: 
                        (BoolUnary
                          op_id: BoolUnary_n
                          child: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name KUBELET_PIDS>
                                  suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                                  spids: [2299 2302]
                                )
                              )
                            }
                        )
                    )
                    (C {(sudo)} {(kill)} {(${ VSub_Name KUBELET_PIDS)})
                  ]
                  op_id: Op_DAmp
                )
              ]
              spids: [2246 2318]
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name PROXY_PID>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2331 2334]
                            )
                          )
                        }
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:PROXY_PIDS)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: (C {(pgrep)} {(-P)} {(${ VSub_Name PROXY_PID)})
                                    terminator: <Op_Semi ';'>
                                  )
                                  (C {(ps)} {(-o)} {(Lit_VarLike 'pid=')} {(-p)} 
                                    {(${ VSub_Name PROXY_PID)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2342 2364]
                          )
                        }
                      spids: [2341]
                    )
                  ]
                  spids: [2341]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name PROXY_PIDS>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2372 2375]
                            )
                          )
                        }
                    )
                )
                (C {(sudo)} {(kill)} {(${ VSub_Name PROXY_PIDS)})
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name SCHEDULER_PID>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2401 2404]
                            )
                          )
                        }
                    )
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:SCHEDULER_PIDS)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Sentence
                                    child: (C {(pgrep)} {(-P)} {(${ VSub_Name SCHEDULER_PID)})
                                    terminator: <Op_Semi ';'>
                                  )
                                  (C {(ps)} {(-o)} {(Lit_VarLike 'pid=')} {(-p)} 
                                    {(${ VSub_Name SCHEDULER_PID)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2412 2434]
                          )
                        }
                      spids: [2411]
                    )
                  ]
                  spids: [2411]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name SCHEDULER_PIDS>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2442 2445]
                            )
                          )
                        }
                    )
                )
                (C {(sudo)} {(kill)} {(${ VSub_Name SCHEDULER_PIDS)})
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name ETCD_PID>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2471 2474]
                            )
                          )
                        }
                    )
                )
                (C 
                  {(kube) (Lit_Other ':') (Lit_Other ':') (etcd) (Lit_Other ':') (Lit_Other ':') (stop)}
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name ETCD_DIR>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ )})
                              spids: [2495 2498]
                            )
                          )
                        }
                    )
                )
                (C 
                  {(kube) (Lit_Other ':') (Lit_Other ':') (etcd) (Lit_Other ':') (Lit_Other ':') 
                    (clean_etcd_dir)
                  }
                )
              ]
              op_id: Op_DAmp
            )
            (C {(exit)} {(0)})
          ]
          spids: [2048]
        )
      spids: [2044 2047]
    )
    (FuncDef
      name: warning
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:message)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [2529]
                )
              ]
              spids: [2529]
            )
            (C {(echo)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(tput)} {(bold)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [2536 2540]
                ) 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(tput)} {(setaf)} {(1)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [2541 2547]
                )
              }
            )
            (C {(echo)} {(DQ ('WARNING: ') (${ VSub_Name message))})
            (C {(echo)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(tput)} {(sgr0)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [2562 2566]
                )
              }
            )
          ]
          spids: [2526]
        )
      spids: [2522 2525]
    )
    (FuncDef
      name: start_etcd
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Starting etcd'))})
            (C {(kube) (Lit_Other ':') (Lit_Other ':') (etcd) (Lit_Other ':') (Lit_Other ':') (start)})
          ]
          spids: [2575]
        )
      spids: [2571 2574]
    )
    (FuncDef
      name: set_service_accounts
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SERVICE_ACCOUNT_LOOKUP)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name SERVICE_ACCOUNT_LOOKUP>
                        suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(true)})
                        spids: [2604 2608]
                      )
                    }
                  spids: [2603]
                )
              ]
              spids: [2603]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SERVICE_ACCOUNT_KEY)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name SERVICE_ACCOUNT_KEY>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(Lit_Slash /) (tmp) (Lit_Slash /) (kube-serviceaccount.key)}
                          )
                        spids: [2612 2619]
                      )
                    }
                  spids: [2611]
                )
              ]
              spids: [2611]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: 
                                (BoolUnary
                                  op_id: BoolUnary_f
                                  child: {(DQ (${ VSub_Name SERVICE_ACCOUNT_KEY))}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(-p)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(dirname)} {(${ VSub_Name SERVICE_ACCOUNT_KEY)})]
                              )
                            left_token: <Left_CommandSub '$('>
                            spids: [2651 2657]
                          )
                        )
                      }
                    )
                    (SimpleCommand
                      words: [
                        {(openssl)}
                        {(genrsa)}
                        {(-out)}
                        {(DQ (${ VSub_Name SERVICE_ACCOUNT_KEY))}
                        {(2048)}
                      ]
                      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2675])]
                    )
                  ]
                  spids: [16777215 2643]
                )
              ]
              spids: [16777215 2679]
            )
          ]
          spids: [2600]
        )
      spids: [2596 2599]
    )
    (FuncDef
      name: start_apiserver
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:security_admission)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [2691]
                )
              ]
              spids: [2691]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_z
                              child: {(DQ (${ VSub_Name ALLOW_SECURITY_CONTEXT))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:security_admission)
                          op: Equal
                          rhs: {(DQ (',SecurityContextDeny'))}
                          spids: [2714]
                        )
                      ]
                      spids: [2714]
                    )
                  ]
                  spids: [16777215 2711]
                )
              ]
              spids: [16777215 2720]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name PSP_ADMISSION))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:security_admission)
                          op: Equal
                          rhs: {(DQ (',PodSecurityPolicy'))}
                          spids: [2741]
                        )
                      ]
                      spids: [2741]
                    )
                  ]
                  spids: [16777215 2738]
                )
              ]
              spids: [16777215 2747]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name NODE_ADMISSION))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:security_admission)
                          op: Equal
                          rhs: {(DQ (',NodeRestriction'))}
                          spids: [2768]
                        )
                      ]
                      spids: [2768]
                    )
                  ]
                  spids: [16777215 2765]
                )
              ]
              spids: [16777215 2774]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ADMISSION_CONTROL)
                  op: Equal
                  rhs: 
                    {(Initializers) (Lit_Comma ',') (NamespaceLifecycle) (Lit_Comma ',') (LimitRanger) 
                      (Lit_Comma ',') (ServiceAccount) (${ VSub_Name security_admission) (Lit_Comma ',') (DefaultStorageClass) (Lit_Comma ',') 
                      (DefaultTolerationSeconds) (Lit_Comma ',') (ResourceQuota)
                    }
                  spids: [2782]
                )
              ]
              spids: [2782]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:audit_arg) op:Equal rhs:{(DQ )} spids:[2810])]
              spids: [2810]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:APISERVER_BASIC_AUDIT_LOG)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [2815]
                )
              ]
              spids: [2815]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name ENABLE_APISERVER_BASIC_AUDIT>
                                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                      spids: [2825 2828]
                                    )
                                  )
                                }
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:APISERVER_BASIC_AUDIT_LOG)
                          op: Equal
                          rhs: {(/tmp/kube-apiserver-audit.log)}
                          spids: [2853]
                        )
                      ]
                      spids: [2853]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:audit_arg)
                          op: Equal
                          rhs: {(DQ (' --audit-log-path=') (${ VSub_Name APISERVER_BASIC_AUDIT_LOG))}
                          spids: [2857]
                        )
                      ]
                      spids: [2857]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:audit_arg)
                          op: PlusEqual
                          rhs: {(DQ (' --audit-log-maxage=0'))}
                          spids: [2866]
                        )
                      ]
                      spids: [2866]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:audit_arg)
                          op: PlusEqual
                          rhs: {(DQ (' --audit-log-maxbackup=0'))}
                          spids: [2872]
                        )
                      ]
                      spids: [2872]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:audit_arg)
                          op: PlusEqual
                          rhs: {(DQ (' --audit-log-maxsize=2000000000'))}
                          spids: [2898]
                        )
                      ]
                      spids: [2898]
                    )
                  ]
                  spids: [16777215 2838]
                )
              ]
              spids: [16777215 2904]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:swagger_arg) op:Equal rhs:{(DQ )} spids:[2908])]
              spids: [2908]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: {(DQ (${ VSub_Name ENABLE_SWAGGER_UI))}
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:swagger_arg)
                          op: Equal
                          rhs: {(DQ ('--enable-swagger-ui=true '))}
                          spids: [2933]
                        )
                      ]
                      spids: [2933]
                    )
                  ]
                  spids: [16777215 2930]
                )
              ]
              spids: [16777215 2939]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:authorizer_arg)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [2943]
                )
              ]
              spids: [2943]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ (${ VSub_Name AUTHORIZATION_MODE))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:authorizer_arg)
                          op: Equal
                          rhs: {(DQ ('--authorization-mode=') (${ VSub_Name AUTHORIZATION_MODE) (' '))}
                          spids: [2966]
                        )
                      ]
                      spids: [2966]
                    )
                  ]
                  spids: [16777215 2963]
                )
              ]
              spids: [16777215 2976]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:priv_arg) op:Equal rhs:{(DQ )} spids:[2979])]
              spids: [2979]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ (${ VSub_Name ALLOW_PRIVILEGED))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:priv_arg)
                          op: Equal
                          rhs: {(DQ ('--allow-privileged '))}
                          spids: [3002]
                        )
                      ]
                      spids: [3002]
                    )
                  ]
                  spids: [16777215 2999]
                )
              ]
              spids: [16777215 3008]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(${ VSub_Name ADMISSION_CONTROL)}
                              right: {(Lit_Other '*') (DQ (Initializers)) (Lit_Other '*')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name RUNTIME_CONFIG))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:RUNTIME_CONFIG)
                                  op: PlusEqual
                                  rhs: {(DQ (','))}
                                  spids: [3052]
                                )
                              ]
                              spids: [3052]
                            )
                          ]
                          spids: [16777215 3049]
                        )
                      ]
                      spids: [16777215 3058]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RUNTIME_CONFIG)
                          op: PlusEqual
                          rhs: {(DQ (admissionregistration.k8s.io/v1alpha1))}
                          spids: [3061]
                        )
                      ]
                      spids: [3061]
                    )
                  ]
                  spids: [16777215 3031]
                )
              ]
              spids: [16777215 3067]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:runtime_config)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [3071]
                )
              ]
              spids: [3071]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name RUNTIME_CONFIG))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:runtime_config)
                          op: Equal
                          rhs: {(DQ ('--runtime-config=') (${ VSub_Name RUNTIME_CONFIG))}
                          spids: [3094]
                        )
                      ]
                      spids: [3094]
                    )
                  ]
                  spids: [16777215 3091]
                )
              ]
              spids: [16777215 3103]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:advertise_address)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [3115]
                )
              ]
              spids: [3115]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(DQ (${ VSub_Name API_HOST_IP))}
                              right: {(DQ (127.0.0.1))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:advertise_address)
                          op: Equal
                          rhs: {(DQ ('--advertise_address=') (${ VSub_Name API_HOST_IP))}
                          spids: [3142]
                        )
                      ]
                      spids: [3142]
                    )
                  ]
                  spids: [16777215 3139]
                )
              ]
              spids: [16777215 3151]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(DQ (${ VSub_Name ADVERTISE_ADDRESS))}
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:advertise_address)
                          op: Equal
                          rhs: {(DQ ('--advertise_address=') (${ VSub_Name ADVERTISE_ADDRESS))}
                          spids: [3176]
                        )
                      ]
                      spids: [3176]
                    )
                  ]
                  spids: [16777215 3173]
                )
              ]
              spids: [16777215 3185]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name ENABLE_SINGLE_CA_SIGNER>
                                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                      spids: [3198 3201]
                                    )
                                  )
                                }
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C 
                      {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                        (create_signing_certkey)
                      } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(server)} 
                      {(SQ <'"client auth","server auth"'>)}
                    )
                    (C {(sudo)} {(cp)} {(DQ (${ VSub_Name CERT_DIR) (/server-ca.key))} 
                      {(DQ (${ VSub_Name CERT_DIR) (/client-ca.key))}
                    )
                    (C {(sudo)} {(cp)} {(DQ (${ VSub_Name CERT_DIR) (/server-ca.crt))} 
                      {(DQ (${ VSub_Name CERT_DIR) (/client-ca.crt))}
                    )
                    (C {(sudo)} {(cp)} {(DQ (${ VSub_Name CERT_DIR) (/server-ca-config.json))} 
                      {(DQ (${ VSub_Name CERT_DIR) (/client-ca-config.json))}
                    )
                  ]
                  spids: [16777215 3211]
                )
              ]
              else_action: [
                (C 
                  {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                    (create_signing_certkey)
                  } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(server)} {(SQ <'"server auth"'>)}
                )
                (C 
                  {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                    (create_signing_certkey)
                  } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(client)} {(SQ <'"client auth"'>)}
                )
              ]
              spids: [3298 3355]
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_signing_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(request-header)} 
              {(SQ <'"client auth"'>)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_serving_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (server-ca))} 
              {(kube-apiserver)} {(kubernetes.default)} {(kubernetes.default.svc)} {(DQ (localhost))} {(${ VSub_Name API_HOST_IP)} 
              {(${ VSub_Name API_HOST)} {(${ VSub_Name FIRST_SERVICE_CLUSTER_IP)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(SQ <client-ca>)} {(kubelet)} 
              {(system) (Lit_Other ':') (node) (Lit_Other ':') (${ VSub_Name HOSTNAME_OVERRIDE)} {(system) (Lit_Other ':') (nodes)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(SQ <client-ca>)} {(kube-proxy)} 
              {(system) (Lit_Other ':') (kube-proxy)} {(system) (Lit_Other ':') (nodes)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(SQ <client-ca>)} {(controller)} 
              {(system) (Lit_Other ':') (kube-controller-manager)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(SQ <client-ca>)} {(scheduler)} 
              {(system) (Lit_Other ':') (kube-scheduler)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(SQ <client-ca>)} {(admin)} 
              {(system) (Lit_Other ':') (admin)} {(system) (Lit_Other ':') (masters)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_serving_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (server-ca))} 
              {(kube-aggregator)} {(api.kube-public.svc)} {(DQ (localhost))} {(${ VSub_Name API_HOST_IP)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(request-header-ca)} 
              {(auth-proxy)} {(system) (Lit_Other ':') (auth-proxy)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (create_client_certkey)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(SQ <client-ca>)} 
              {(kube-aggregator)} {(system) (Lit_Other ':') (kube-aggregator)} {(system) (Lit_Other ':') (masters)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (write_client_kubeconfig)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (${ VSub_Name ROOT_CA_FILE))} 
              {(DQ (${ VSub_Name API_HOST))} {(DQ (${ VSub_Name API_SECURE_PORT))} {(kube-aggregator)}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:APISERVER_LOG)
                  op: Equal
                  rhs: {(${ VSub_Name LOG_DIR) (/kube-apiserver.log)}
                  spids: [3771]
                )
              ]
              spids: [3771]
            )
            (Sentence
              child: 
                (SimpleCommand
                  words: [
                    {(${ VSub_Name CONTROLPLANE_SUDO)}
                    {(DQ (${ VSub_Name GO_OUT) (/hyperkube))}
                    {(apiserver)}
                    {(${ VSub_Name swagger_arg)}
                    {(${ VSub_Name audit_arg)}
                    {(${ VSub_Name authorizer_arg)}
                    {(${ VSub_Name priv_arg)}
                    {(${ VSub_Name runtime_config)}
                    {(${ VSub_Name advertise_address)}
                    {(--v) (Lit_Other '=') (${ VSub_Name LOG_LEVEL)}
                    {(--vmodule) (Lit_Other '=') (DQ (${ VSub_Name LOG_SPEC))}
                    {(--cert-dir) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR))}
                    {(--client-ca-file) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/client-ca.crt))}
                    {(--service-account-key-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name SERVICE_ACCOUNT_KEY))
                    }
                    {(--service-account-lookup) (Lit_Other '=') 
                      (DQ (${ VSub_Name SERVICE_ACCOUNT_LOOKUP))
                    }
                    {(--admission-control) (Lit_Other '=') (DQ (${ VSub_Name ADMISSION_CONTROL))}
                    {(--admission-control-config-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name ADMISSION_CONTROL_CONFIG_FILE))
                    }
                    {(--bind-address) (Lit_Other '=') (DQ (${ VSub_Name API_BIND_ADDR))}
                    {(--secure-port) (Lit_Other '=') (DQ (${ VSub_Name API_SECURE_PORT))}
                    {(--tls-cert-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CERT_DIR) (/serving-kube-apiserver.crt))
                    }
                    {(--tls-private-key-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CERT_DIR) (/serving-kube-apiserver.key))
                    }
                    {(--tls-ca-file) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/server-ca.crt))}
                    {(--insecure-bind-address) (Lit_Other '=') (DQ (${ VSub_Name API_HOST_IP))}
                    {(--insecure-port) (Lit_Other '=') (DQ (${ VSub_Name API_PORT))}
                    {(--storage-backend) (Lit_Other '=') (${ VSub_Name STORAGE_BACKEND)}
                    {(--etcd-servers) (Lit_Other '=') 
                      (DQ ('http://') (${ VSub_Name ETCD_HOST) (':') (${ VSub_Name ETCD_PORT))
                    }
                    {(--service-cluster-ip-range) (Lit_Other '=') 
                      (DQ (${ VSub_Name SERVICE_CLUSTER_IP_RANGE))
                    }
                    {(--feature-gates) (Lit_Other '=') (DQ (${ VSub_Name FEATURE_GATES))}
                    {(--external-hostname) (Lit_Other '=') (DQ (${ VSub_Name EXTERNAL_HOSTNAME))}
                    {(--cloud-provider) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_PROVIDER))}
                    {(--cloud-config) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_CONFIG))}
                    {(--requestheader-username-headers) (Lit_Other '=') (X-Remote-User)}
                    {(--requestheader-group-headers) (Lit_Other '=') (X-Remote-Group)}
                    {(--requestheader-extra-headers-prefix) (Lit_Other '=') (X-Remote-Extra-)}
                    {(--requestheader-client-ca-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CERT_DIR) (/request-header-ca.crt))
                    }
                    {(--requestheader-allowed-names) (Lit_Other '=') (system) (Lit_Other ':') 
                      (auth-proxy)
                    }
                    {(--proxy-client-cert-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CERT_DIR) (/client-auth-proxy.crt))
                    }
                    {(--proxy-client-key-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CERT_DIR) (/client-auth-proxy.key))
                    }
                    {(--cors-allowed-origins) (Lit_Other '=') 
                      (DQ (${ VSub_Name API_CORS_ALLOWED_ORIGINS))
                    }
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name APISERVER_LOG))}
                      spids: [4110]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[4117])
                  ]
                )
              terminator: <Op_Amp '&'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:APISERVER_PID)
                  op: Equal
                  rhs: {($ VSub_Bang '$!')}
                  spids: [4123]
                )
              ]
              spids: [4123]
            )
            (C {(echo)} {(DQ ('Waiting for apiserver to come up'))})
            (AndOr
              children: [
                (C 
                  {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                    (wait_for_url)
                  } {(DQ ('https://') (${ VSub_Name API_HOST_IP) (':') (${ VSub_Name API_SECURE_PORT) (/healthz))} 
                  {(DQ ('apiserver: '))} {(1)} {(${ VSub_Name WAIT_FOR_URL_API_SERVER)}
                )
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('check apiserver logs: ') (${ VSub_Name APISERVER_LOG))})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ';'>)
                  ]
                  spids: [4185]
                )
              ]
              op_id: Op_DPipe
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (write_client_kubeconfig)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (${ VSub_Name ROOT_CA_FILE))} 
              {(DQ (${ VSub_Name API_HOST))} {(DQ (${ VSub_Name API_SECURE_PORT))} {(admin)}
            )
            (C {(${ VSub_Name CONTROLPLANE_SUDO)} {(chown)} {(DQ (${ VSub_Name USER))} 
              {(DQ (${ VSub_Name CERT_DIR) (/client-admin.key))}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (write_client_kubeconfig)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (${ VSub_Name ROOT_CA_FILE))} 
              {(DQ (${ VSub_Name API_HOST))} {(DQ (${ VSub_Name API_SECURE_PORT))} {(kubelet)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (write_client_kubeconfig)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (${ VSub_Name ROOT_CA_FILE))} 
              {(DQ (${ VSub_Name API_HOST))} {(DQ (${ VSub_Name API_SECURE_PORT))} {(kube-proxy)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (write_client_kubeconfig)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (${ VSub_Name ROOT_CA_FILE))} 
              {(DQ (${ VSub_Name API_HOST))} {(DQ (${ VSub_Name API_SECURE_PORT))} {(controller)}
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                (write_client_kubeconfig)
              } {(DQ (${ VSub_Name CONTROLPLANE_SUDO))} {(DQ (${ VSub_Name CERT_DIR))} {(DQ (${ VSub_Name ROOT_CA_FILE))} 
              {(DQ (${ VSub_Name API_HOST))} {(DQ (${ VSub_Name API_SECURE_PORT))} {(scheduler)}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_z child:{(DQ (${ VSub_Name AUTH_ARGS))})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:AUTH_ARGS)
                          op: Equal
                          rhs: 
                            {
                              (DQ ('--client-key=') (${ VSub_Name CERT_DIR) 
                                ('/client-admin.key --client-certificate=') (${ VSub_Name CERT_DIR) (/client-admin.crt)
                              )
                            }
                          spids: [4459]
                        )
                      ]
                      spids: [4459]
                    )
                  ]
                  spids: [16777215 4456]
                )
              ]
              spids: [16777215 4473]
            )
            (C {(${ VSub_Name CONTROLPLANE_SUDO)} {(cp)} 
              {(DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(DQ (${ VSub_Name CERT_DIR) (/admin-kube-aggregator.kubeconfig))}
            )
            (C {(${ VSub_Name CONTROLPLANE_SUDO)} {(chown)} 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(whoami)})])
                  left_token: <Left_CommandSub '$('>
                  spids: [4504 4506]
                )
              } {(DQ (${ VSub_Name CERT_DIR) (/admin-kube-aggregator.kubeconfig))}
            )
            (C {(${ VSub_Name KUBECTL)} {(config)} {(set-cluster)} {(local-up-cluster)} 
              {(--kubeconfig) (Lit_Other '=') 
                (DQ (${ VSub_Name CERT_DIR) (/admin-kube-aggregator.kubeconfig))
              } {(--server) (Lit_Other '=') (DQ ('https://') (${ VSub_Name API_HOST_IP) (':31090'))}
            )
            (C {(echo)} 
              {
                (DQ ("use 'kubectl --kubeconfig=") (${ VSub_Name CERT_DIR) 
                  ("/admin-kube-aggregator.kubeconfig' to use the aggregated API server")
                )
              }
            )
          ]
          spids: [2688]
        )
      spids: [2684 2687]
    )
    (FuncDef
      name: start_controller_manager
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:node_cidr_args)
                  op: Equal
                  rhs: {(DQ )}
                  spids: [4567]
                )
              ]
              spids: [4567]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name NET_PLUGIN))}
                              right: {(DQ (kubenet))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:node_cidr_args)
                          op: Equal
                          rhs: {(DQ ('--allocate-node-cidrs=true --cluster-cidr=10.1.0.0/16 '))}
                          spids: [4594]
                        )
                      ]
                      spids: [4594]
                    )
                  ]
                  spids: [16777215 4591]
                )
              ]
              spids: [16777215 4600]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CTLRMGR_LOG)
                  op: Equal
                  rhs: {(${ VSub_Name LOG_DIR) (/kube-controller-manager.log)}
                  spids: [4604]
                )
              ]
              spids: [4604]
            )
            (Sentence
              child: 
                (SimpleCommand
                  words: [
                    {(${ VSub_Name CONTROLPLANE_SUDO)}
                    {(DQ (${ VSub_Name GO_OUT) (/hyperkube))}
                    {(controller-manager)}
                    {(--v) (Lit_Other '=') (${ VSub_Name LOG_LEVEL)}
                    {(--vmodule) (Lit_Other '=') (DQ (${ VSub_Name LOG_SPEC))}
                    {(--service-account-private-key-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name SERVICE_ACCOUNT_KEY))
                    }
                    {(--root-ca-file) (Lit_Other '=') (DQ (${ VSub_Name ROOT_CA_FILE))}
                    {(--cluster-signing-cert-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CLUSTER_SIGNING_CERT_FILE))
                    }
                    {(--cluster-signing-key-file) (Lit_Other '=') 
                      (DQ (${ VSub_Name CLUSTER_SIGNING_KEY_FILE))
                    }
                    {(--enable-hostpath-provisioner) (Lit_Other '=') 
                      (DQ (${ VSub_Name ENABLE_HOSTPATH_PROVISIONER))
                    }
                    {(${ VSub_Name node_cidr_args)}
                    {(--pvclaimbinder-sync-period) (Lit_Other '=') 
                      (DQ (${ VSub_Name CLAIM_BINDER_SYNC_PERIOD))
                    }
                    {(--feature-gates) (Lit_Other '=') (DQ (${ VSub_Name FEATURE_GATES))}
                    {(--cloud-provider) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_PROVIDER))}
                    {(--cloud-config) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_CONFIG))}
                    {(--kubeconfig)}
                    {(DQ ($ VSub_Name '$CERT_DIR')) (/controller.kubeconfig)}
                    {(--use-service-account-credentials)}
                    {(--controllers) (Lit_Other '=') (DQ (${ VSub_Name KUBE_CONTROLLERS))}
                    {(--master) (Lit_Other '=') 
                      (DQ ('https://') (${ VSub_Name API_HOST) (':') (${ VSub_Name API_SECURE_PORT))
                    }
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name CTLRMGR_LOG))}
                      spids: [4776]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[4783])
                  ]
                )
              terminator: <Op_Amp '&'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CTLRMGR_PID)
                  op: Equal
                  rhs: {($ VSub_Bang '$!')}
                  spids: [4789]
                )
              ]
              spids: [4789]
            )
          ]
          spids: [4564]
        )
      spids: [4560 4563]
    )
    (FuncDef
      name: start_kubelet
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBELET_LOG)
                  op: Equal
                  rhs: {(${ VSub_Name LOG_DIR) (/kubelet.log)}
                  spids: [4802]
                )
              ]
              spids: [4802]
            )
            (Sentence
              child: (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name POD_MANIFEST_PATH))})
              terminator: <Op_Amp '&'>
            )
            (AndOr
              children: [
                (SimpleCommand
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/null)}
                      spids: [4820]
                    )
                  ]
                )
                (C {(sudo)} {(mkdir)} {(-p)} {(DQ (${ VSub_Name POD_MANIFEST_PATH))})
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:priv_arg) op:Equal rhs:{(DQ )} spids:[4839])]
              spids: [4839]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: {(DQ (${ VSub_Name ALLOW_PRIVILEGED))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:priv_arg)
                          op: Equal
                          rhs: {(DQ ('--allow-privileged '))}
                          spids: [4862]
                        )
                      ]
                      spids: [4862]
                    )
                  ]
                  spids: [16777215 4859]
                )
              ]
              spids: [16777215 4868]
            )
            (Sentence
              child: (C {(mkdir)} {(-p)} {(DQ (/var/lib/kubelet))})
              terminator: <Op_Amp '&'>
            )
            (AndOr
              children: [
                (SimpleCommand
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/null)}
                      spids: [4881]
                    )
                  ]
                )
                (C {(sudo)} {(mkdir)} {(-p)} {(DQ (/var/lib/kubelet))})
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_z
                              child: {(DQ (${ VSub_Name DOCKERIZE_KUBELET))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobEqual
                                      left: {(DQ (${ VSub_Name ENABLE_CLUSTER_DNS))}
                                      right: {(true)}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:dns_args)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ('--cluster-dns=') (${ VSub_Name DNS_SERVER_IP) 
                                        (' --cluster-domain=') (${ VSub_Name DNS_DOMAIN)
                                      )
                                    }
                                  spids: [4939]
                                )
                              ]
                              spids: [4939]
                            )
                          ]
                          spids: [16777215 4936]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:dns_args)
                              op: Equal
                              rhs: {(DQ ('--cluster-dns=8.8.8.8'))}
                              spids: [4967]
                            )
                          ]
                          spids: [4967]
                        )
                      ]
                      spids: [4952 4973]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:net_plugin_args)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [4977]
                        )
                      ]
                      spids: [4977]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name NET_PLUGIN))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:net_plugin_args)
                                  op: Equal
                                  rhs: {(DQ ('--network-plugin=') (${ VSub_Name NET_PLUGIN))}
                                  spids: [5000]
                                )
                              ]
                              spids: [5000]
                            )
                          ]
                          spids: [16777215 4997]
                        )
                      ]
                      spids: [16777215 5009]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:auth_args)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [5013]
                        )
                      ]
                      spids: [5013]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name KUBELET_AUTHORIZATION_WEBHOOK>
                                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                              spids: [5025 5028]
                                            )
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:auth_args)
                                  op: Equal
                                  rhs: 
                                    {(DQ (${ VSub_Name auth_args) (' --authorization-mode=Webhook'))}
                                  spids: [5037]
                                )
                              ]
                              spids: [5037]
                            )
                          ]
                          spids: [16777215 5034]
                        )
                      ]
                      spids: [16777215 5046]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name KUBELET_AUTHENTICATION_WEBHOOK>
                                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                              spids: [5056 5059]
                                            )
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:auth_args)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name auth_args) (' --authentication-token-webhook'))
                                    }
                                  spids: [5068]
                                )
                              ]
                              spids: [5068]
                            )
                          ]
                          spids: [16777215 5065]
                        )
                      ]
                      spids: [16777215 5077]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name CLIENT_CA_FILE>
                                              suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                              spids: [5087 5090]
                                            )
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:auth_args)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name auth_args) (' --client-ca-file=') 
                                        (${ VSub_Name CLIENT_CA_FILE)
                                      )
                                    }
                                  spids: [5099]
                                )
                              ]
                              spids: [5099]
                            )
                          ]
                          spids: [16777215 5096]
                        )
                      ]
                      spids: [16777215 5111]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cni_conf_dir_args)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [5115]
                        )
                      ]
                      spids: [5115]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name CNI_CONF_DIR))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cni_conf_dir_args)
                                  op: Equal
                                  rhs: {(DQ ('--cni-conf-dir=') (${ VSub_Name CNI_CONF_DIR))}
                                  spids: [5138]
                                )
                              ]
                              spids: [5138]
                            )
                          ]
                          spids: [16777215 5135]
                        )
                      ]
                      spids: [16777215 5147]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:cni_bin_dir_args)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [5151]
                        )
                      ]
                      spids: [5151]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name CNI_BIN_DIR))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cni_bin_dir_args)
                                  op: Equal
                                  rhs: {(DQ ('--cni-bin-dir=') (${ VSub_Name CNI_BIN_DIR))}
                                  spids: [5174]
                                )
                              ]
                              spids: [5174]
                            )
                          ]
                          spids: [16777215 5171]
                        )
                      ]
                      spids: [16777215 5183]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:container_runtime_endpoint_args)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [5187]
                        )
                      ]
                      spids: [5187]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name CONTAINER_RUNTIME_ENDPOINT))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:container_runtime_endpoint_args)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ('--container-runtime-endpoint=') 
                                        (${ VSub_Name CONTAINER_RUNTIME_ENDPOINT)
                                      )
                                    }
                                  spids: [5210]
                                )
                              ]
                              spids: [5210]
                            )
                          ]
                          spids: [16777215 5207]
                        )
                      ]
                      spids: [16777215 5219]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:image_service_endpoint_args)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [5223]
                        )
                      ]
                      spids: [5223]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name IMAGE_SERVICE_ENDPOINT))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:image_service_endpoint_args)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ ('--image-service-endpoint=') 
                                        (${ VSub_Name IMAGE_SERVICE_ENDPOINT)
                                      )
                                    }
                                  spids: [5246]
                                )
                              ]
                              spids: [5246]
                            )
                          ]
                          spids: [16777215 5243]
                        )
                      ]
                      spids: [16777215 5255]
                    )
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [
                            {(sudo)}
                            {(-E)}
                            {(DQ (${ VSub_Name GO_OUT) (/hyperkube))}
                            {(kubelet)}
                            {(${ VSub_Name priv_arg)}
                            {(--v) (Lit_Other '=') (${ VSub_Name LOG_LEVEL)}
                            {(--vmodule) (Lit_Other '=') (DQ (${ VSub_Name LOG_SPEC))}
                            {(--chaos-chance) (Lit_Other '=') (DQ (${ VSub_Name CHAOS_CHANCE))}
                            {(--container-runtime) (Lit_Other '=') 
                              (DQ (${ VSub_Name CONTAINER_RUNTIME))
                            }
                            {(--rkt-path) (Lit_Other '=') (DQ (${ VSub_Name RKT_PATH))}
                            {(--rkt-stage1-image) (Lit_Other '=') (DQ (${ VSub_Name RKT_STAGE1_IMAGE))}
                            {(--hostname-override) (Lit_Other '=') 
                              (DQ (${ VSub_Name HOSTNAME_OVERRIDE))
                            }
                            {(--cloud-provider) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_PROVIDER))}
                            {(--cloud-config) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_CONFIG))}
                            {(--address) (Lit_Other '=') (DQ (${ VSub_Name KUBELET_HOST))}
                            {(--kubeconfig)}
                            {(DQ ($ VSub_Name '$CERT_DIR')) (/kubelet.kubeconfig)}
                            {(--feature-gates) (Lit_Other '=') (DQ (${ VSub_Name FEATURE_GATES))}
                            {(--cpu-cfs-quota) (Lit_Other '=') (${ VSub_Name CPU_CFS_QUOTA)}
                            {(--enable-controller-attach-detach) (Lit_Other '=') 
                              (DQ (${ VSub_Name ENABLE_CONTROLLER_ATTACH_DETACH))
                            }
                            {(--cgroups-per-qos) (Lit_Other '=') (${ VSub_Name CGROUPS_PER_QOS)}
                            {(--cgroup-driver) (Lit_Other '=') (${ VSub_Name CGROUP_DRIVER)}
                            {(--keep-terminated-pod-volumes) (Lit_Other '=') 
                              (${ VSub_Name KEEP_TERMINATED_POD_VOLUMES)
                            }
                            {(--eviction-hard) (Lit_Other '=') (${ VSub_Name EVICTION_HARD)}
                            {(--eviction-soft) (Lit_Other '=') (${ VSub_Name EVICTION_SOFT)}
                            {(--eviction-pressure-transition-period) (Lit_Other '=') 
                              (${ VSub_Name EVICTION_PRESSURE_TRANSITION_PERIOD)
                            }
                            {(--pod-manifest-path) (Lit_Other '=') 
                              (DQ (${ VSub_Name POD_MANIFEST_PATH))
                            }
                            {(--fail-swap-on) (Lit_Other '=') (DQ (${ VSub_Name FAIL_SWAP_ON))}
                            {(${ VSub_Name auth_args)}
                            {(${ VSub_Name dns_args)}
                            {(${ VSub_Name cni_conf_dir_args)}
                            {(${ VSub_Name cni_bin_dir_args)}
                            {(${ VSub_Name net_plugin_args)}
                            {(${ VSub_Name container_runtime_endpoint_args)}
                            {(${ VSub_Name image_service_endpoint_args)}
                            {(--port) (Lit_Other '=') (DQ ($ VSub_Name '$KUBELET_PORT'))}
                            {(${ VSub_Name KUBELET_FLAGS)}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(DQ (${ VSub_Name KUBELET_LOG))}
                              spids: [5534]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [5541]
                            )
                          ]
                        )
                      terminator: <Op_Amp '&'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBELET_PID)
                          op: Equal
                          rhs: {($ VSub_Bang '$!')}
                          spids: [5547]
                        )
                      ]
                      spids: [5547]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (SimpleCommand
                                  words: [{(ps)} {(-p)} {($ VSub_Name '$KUBELET_PID')}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                      spids: [5563]
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {(DQ ('kubelet ( ') ($ VSub_Name '$KUBELET_PID') (' ) is running.'))}
                            )
                          ]
                          spids: [16777215 5569]
                        )
                      ]
                      else_action: [
                        (Sentence
                          child: (C {(cat)} {(${ VSub_Name KUBELET_LOG)})
                          terminator: <Op_Semi ';'>
                        )
                        (C {(exit)} {(1)})
                      ]
                      spids: [5581 5597]
                    )
                  ]
                  spids: [16777215 4912]
                )
              ]
              else_action: [
                (C {(cleanup_dockerized_kubelet)})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cred_bind)
                      op: Equal
                      rhs: {(DQ )}
                      spids: [5618]
                    )
                  ]
                  spids: [5618]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:cloud_cred)
                      op: Equal
                      rhs: {(DQ )}
                      spids: [5627]
                    )
                  ]
                  spids: [5627]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(DQ (${ VSub_Name CLOUD_PROVIDER))} 
                              {(Lit_Other '=') (Lit_Other '=')} {(DQ (aws))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cloud_cred)
                              op: Equal
                              rhs: {(DQ (${ VSub_Name HOME) (/.aws/credentials))}
                              spids: [5655]
                            )
                          ]
                          spids: [5655]
                        )
                      ]
                      spids: [16777215 5652]
                    )
                  ]
                  spids: [16777215 5664]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(DQ (${ VSub_Name CLOUD_PROVIDER))} 
                              {(Lit_Other '=') (Lit_Other '=')} {(DQ (gce))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cloud_cred)
                              op: Equal
                              rhs: {(DQ (${ VSub_Name HOME) (/.config/gcloud))}
                              spids: [5690]
                            )
                          ]
                          spids: [5690]
                        )
                      ]
                      spids: [16777215 5687]
                    )
                  ]
                  spids: [16777215 5699]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(DQ (${ VSub_Name CLOUD_PROVIDER))} 
                              {(Lit_Other '=') (Lit_Other '=')} {(DQ (openstack))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cloud_cred)
                              op: Equal
                              rhs: {(DQ (${ VSub_Name CLOUD_CONFIG))}
                              spids: [5725]
                            )
                          ]
                          spids: [5725]
                        )
                      ]
                      spids: [16777215 5722]
                    )
                  ]
                  spids: [16777215 5733]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name cloud_cred))})
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cred_bind)
                              op: Equal
                              rhs: 
                                {
                                  (DQ ('--volume=') (${ VSub_Name cloud_cred) (':') 
                                    (${ VSub_Name cloud_cred) (':ro')
                                  )
                                }
                              spids: [5754]
                            )
                          ]
                          spids: [5754]
                        )
                      ]
                      spids: [16777215 5751]
                    )
                  ]
                  spids: [16777215 5768]
                )
                (Sentence
                  child: 
                    (C {(docker)} {(run)} 
                      {(--volume) (Lit_Other '=') (/) (Lit_Other ':') (/rootfs) (Lit_Other ':') (ro)} {(--volume) (Lit_Other '=') (/var/run) (Lit_Other ':') (/var/run) (Lit_Other ':') (rw)} 
                      {(--volume) (Lit_Other '=') (/sys) (Lit_Other ':') (/sys) (Lit_Other ':') (ro)} {(--volume) (Lit_Other '=') (/var/lib/docker/) (Lit_Other ':') (/var/lib/docker) (Lit_Other ':') (ro)} 
                      {(--volume) (Lit_Other '=') (/var/lib/kubelet/) (Lit_Other ':') 
                        (/var/lib/kubelet) (Lit_Other ':') (rw)
                      } {(--volume) (Lit_Other '=') (/dev) (Lit_Other ':') (/dev)} 
                      {(--volume) (Lit_Other '=') (/run/xtables.lock) (Lit_Other ':') 
                        (/run/xtables.lock) (Lit_Other ':') (rw)
                      } {(${ VSub_Name cred_bind)} {(--net) (Lit_Other '=') (host)} {(--privileged) (Lit_Other '=') (true)} 
                      {(-i)} {(--cidfile) (Lit_Other '=') ($ VSub_Name '$KUBELET_CIDFILE')} {(gcr.io/google_containers/kubelet)} 
                      {(/kubelet)} {(--v) (Lit_Other '=') (${ VSub_Name LOG_LEVEL)} {(--containerized)} 
                      {(${ VSub_Name priv_arg) (--chaos-chance) (Lit_Other '=') 
                        (DQ (${ VSub_Name CHAOS_CHANCE))
                      } {(--pod-manifest-path) (Lit_Other '=') (DQ (${ VSub_Name POD_MANIFEST_PATH))} 
                      {(--hostname-override) (Lit_Other '=') (DQ (${ VSub_Name HOSTNAME_OVERRIDE))} {(--cloud-provider) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_PROVIDER))} 
                      {(--cloud-config) (Lit_Other '=') (DQ (${ VSub_Name CLOUD_CONFIG))} {(EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (--address) (Lit_Other '=') (DQ (127.0.0.1))} 
                      {(--kubeconfig)} {(DQ ($ VSub_Name '$CERT_DIR')) (/kubelet.kubeconfig)} 
                      {(--port) (Lit_Other '=') (DQ ($ VSub_Name '$KUBELET_PORT'))} 
                      {(--enable-controller-attach-detach) (Lit_Other '=') 
                        (DQ (${ VSub_Name ENABLE_CONTROLLER_ATTACH_DETACH))
                      }
                    )
                  terminator: <Op_Amp '&'>
                )
                (Sentence
                  child: 
                    (SimpleCommand
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$KUBELET_LOG')}
                          spids: [5960]
                        )
                      ]
                    )
                  terminator: <Op_Amp '&'>
                )
              ]
              spids: [5600 5967]
            )
          ]
          spids: [4799]
        )
      spids: [4795 4798]
    )
    (FuncDef
      name: start_kubeproxy
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PROXY_LOG)
                  op: Equal
                  rhs: {(${ VSub_Name LOG_DIR) (/kube-proxy.log)}
                  spids: [5979]
                )
              ]
              spids: [5979]
            )
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('apiVersion: componentconfig/v1alpha1\n') 
                        ('kind: KubeProxyConfiguration\n') ('clientConnection:\n') ('  kubeconfig: ') (${ VSub_Name CERT_DIR) ('/kube-proxy.kubeconfig\n') 
                        ('hostnameOverride: ') (${ VSub_Name HOSTNAME_OVERRIDE) ('\n') ('featureGates: ') (${ VSub_Name FEATURE_GATES) ('\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [5989]
                )
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(/tmp/kube-proxy.yaml)}
                  spids: [5992]
                )
              ]
            )
            (Sentence
              child: 
                (SimpleCommand
                  words: [
                    {(sudo)}
                    {(DQ (${ VSub_Name GO_OUT) (/hyperkube))}
                    {(proxy)}
                    {(--config) (Lit_Other '=') (/tmp/kube-proxy.yaml)}
                    {(--master) (Lit_Other '=') 
                      (DQ ('https://') (${ VSub_Name API_HOST) (':') (${ VSub_Name API_SECURE_PORT))
                    }
                    {(--v) (Lit_Other '=') (${ VSub_Name LOG_LEVEL)}
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name PROXY_LOG))}
                      spids: [6049]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[6064])
                  ]
                )
              terminator: <Op_Amp '&'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PROXY_PID)
                  op: Equal
                  rhs: {($ VSub_Bang '$!')}
                  spids: [6070]
                )
              ]
              spids: [6070]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SCHEDULER_LOG)
                  op: Equal
                  rhs: {(${ VSub_Name LOG_DIR) (/kube-scheduler.log)}
                  spids: [6075]
                )
              ]
              spids: [6075]
            )
            (Sentence
              child: 
                (SimpleCommand
                  words: [
                    {(${ VSub_Name CONTROLPLANE_SUDO)}
                    {(DQ (${ VSub_Name GO_OUT) (/hyperkube))}
                    {(scheduler)}
                    {(--v) (Lit_Other '=') (${ VSub_Name LOG_LEVEL)}
                    {(--kubeconfig)}
                    {(DQ ($ VSub_Name '$CERT_DIR')) (/scheduler.kubeconfig)}
                    {(--master) (Lit_Other '=') 
                      (DQ ('https://') (${ VSub_Name API_HOST) (':') (${ VSub_Name API_SECURE_PORT))
                    }
                  ]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(DQ (${ VSub_Name SCHEDULER_LOG))}
                      spids: [6127]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[6134])
                  ]
                )
              terminator: <Op_Amp '&'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SCHEDULER_PID)
                  op: Equal
                  rhs: {($ VSub_Bang '$!')}
                  spids: [6140]
                )
              ]
              spids: [6140]
            )
          ]
          spids: [5976]
        )
      spids: [5972 5975]
    )
    (FuncDef
      name: start_kubedns
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: {(DQ (${ VSub_Name ENABLE_CLUSTER_DNS))}
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(cp)} {(DQ (${ VSub_Name KUBE_ROOT) (/cluster/addons/dns/kube-dns.yaml.in))} 
                      {(kube-dns.yaml)}
                    )
                    (C {(sed)} {(-i)} {(-e)} 
                      {
                        (DQ ('s/{{ pillar') (Lit_Other '\\') ("['dns_domain'") (Lit_Other '\\') ('] }}/') 
                          (${ VSub_Name DNS_DOMAIN) (/g)
                        )
                      } {(kube-dns.yaml)}
                    )
                    (C {(sed)} {(-i)} {(-e)} 
                      {
                        (DQ ('s/{{ pillar') (Lit_Other '\\') ("['dns_server'") (Lit_Other '\\') ('] }}/') 
                          (${ VSub_Name DNS_SERVER_IP) (/g)
                        )
                      } {(kube-dns.yaml)}
                    )
                    (C {(${ VSub_Name KUBECTL)} 
                      {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(--namespace) (Lit_Other '=') (kube-system)} {(create)} {(-f)} {(kube-dns.yaml)}
                    )
                    (C {(echo)} {(DQ ('Kube-dns addon successfully deployed.'))})
                    (C {(rm)} {(kube-dns.yaml)})
                  ]
                  spids: [16777215 6170]
                )
              ]
              spids: [16777215 6272]
            )
          ]
          spids: [6150]
        )
      spids: [6146 6149]
    )
    (FuncDef
      name: start_kubedashboard
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: {(DQ (${ VSub_Name ENABLE_CLUSTER_DASHBOARD))}
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Creating kubernetes-dashboard'))})
                    (C {(${ VSub_Name KUBECTL)} 
                      {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(create)} {(-f)} {(${ VSub_Name KUBE_ROOT) (/cluster/addons/dashboard/dashboard-controller.yaml)}
                    )
                    (C {(${ VSub_Name KUBECTL)} 
                      {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(create)} {(-f)} {(${ VSub_Name KUBE_ROOT) (/cluster/addons/dashboard/dashboard-service.yaml)}
                    )
                    (C {(echo)} 
                      {(DQ ('kubernetes-dashboard deployment and service successfully deployed.'))}
                    )
                  ]
                  spids: [16777215 6301]
                )
              ]
              spids: [16777215 6368]
            )
          ]
          spids: [6281]
        )
      spids: [6277 6280]
    )
    (FuncDef
      name: create_psp_policy
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(DQ ('Create podsecuritypolicy policies for RBAC.'))})
            (C {(${ VSub_Name KUBECTL)} 
              {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(create)} {(-f)} {(${ VSub_Name KUBE_ROOT) (/examples/podsecuritypolicy/rbac/policies.yaml)}
            )
            (C {(${ VSub_Name KUBECTL)} 
              {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(create)} {(-f)} {(${ VSub_Name KUBE_ROOT) (/examples/podsecuritypolicy/rbac/roles.yaml)}
            )
            (C {(${ VSub_Name KUBECTL)} 
              {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(create)} {(-f)} {(${ VSub_Name KUBE_ROOT) (/examples/podsecuritypolicy/rbac/bindings.yaml)}
            )
          ]
          spids: [6377]
        )
      spids: [6373 6376]
    )
    (FuncDef
      name: create_storage_class
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$CLOUD_PROVIDER'))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLASS_FILE)
                          op: Equal
                          rhs: 
                            {(${ VSub_Name KUBE_ROOT) 
                              (/cluster/addons/storage-class/local/default.yaml)
                            }
                          spids: [6481]
                        )
                      ]
                      spids: [6481]
                    )
                  ]
                  spids: [16777215 6478]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CLASS_FILE)
                      op: Equal
                      rhs: 
                        {(${ VSub_Name KUBE_ROOT) (/cluster/addons/storage-class/) 
                          (${ VSub_Name CLOUD_PROVIDER) (/default.yaml)
                        }
                      spids: [6491]
                    )
                  ]
                  spids: [6491]
                )
              ]
              spids: [6488 6502]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-e)} {($ VSub_Name '$CLASS_FILE')} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {(DQ ('Create default storage class for ') ($ VSub_Name '$CLOUD_PROVIDER'))}
                    )
                    (C {(${ VSub_Name KUBECTL)} 
                      {(--kubeconfig) (Lit_Other '=') (DQ (${ VSub_Name CERT_DIR) (/admin.kubeconfig))} {(create)} {(-f)} {($ VSub_Name '$CLASS_FILE')}
                    )
                  ]
                  spids: [16777215 6517]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {(DQ ('No storage class available for ') ($ VSub_Name '$CLOUD_PROVIDER') (.))}
                )
              ]
              spids: [6548 6560]
            )
          ]
          spids: [6462]
        )
      spids: [6458 6461]
    )
    (FuncDef
      name: print_success
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(DQ (${ VSub_Name START_MODE))}
                              right: {(DQ (kubeletonly))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: 
                            {
                              (DQ 
                                (
'Local Kubernetes cluster is running. Press Ctrl-C to shut it down.\n'
                                ) ('\n') ('Logs:\n') ('  ') 
                                (BracedVarSub
                                  token: <VSub_Name APISERVER_LOG>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                  spids: [6602 6605]
                                ) ('\n') ('  ') 
                                (BracedVarSub
                                  token: <VSub_Name CTLRMGR_LOG>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                  spids: [6608 6611]
                                ) ('\n') ('  ') 
                                (BracedVarSub
                                  token: <VSub_Name PROXY_LOG>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                  spids: [6614 6617]
                                ) ('\n') ('  ') 
                                (BracedVarSub
                                  token: <VSub_Name SCHEDULER_LOG>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                  spids: [6620 6623]
                                ) ('\n')
                              )
                            }
                          do_expansion: True
                          here_end: EOF
                          was_filled: True
                          spids: [6595]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 6590]
                )
              ]
              spids: [16777215 6626]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name ENABLE_APISERVER_BASIC_AUDIT>
                                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                      spids: [6634 6637]
                                    )
                                  )
                                }
                              right: {(true)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('  ') (${ VSub_Name APISERVER_BASIC_AUDIT_LOG))})]
                  spids: [16777215 6647]
                )
              ]
              spids: [16777215 6659]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name START_MODE))}
                              right: {(DQ (all))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('  ') (${ VSub_Name KUBELET_LOG))})]
                  spids: [16777215 6681]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name START_MODE))}
                              right: {(DQ (nokubelet))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)})
                    (C {(echo)} {(DQ ('No kubelet was started because you set START_MODE=nokubelet'))})
                    (C {(echo)} 
                      {(DQ ('Run this script again with START_MODE=kubeletonly to run a kubelet'))}
                    )
                  ]
                  spids: [6693 6712]
                )
              ]
              spids: [16777215 6731]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {(DQ (${ VSub_Name START_MODE))}
                              right: {(DQ (kubeletonly))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)})
                    (SimpleCommand
                      words: [{(cat)}]
                      redirects: [
                        (HereDoc
                          op_id: Redir_DLess
                          fd: 16777215
                          body: 
                            {
                              (DQ 
                                (
'To start using your cluster, you can open up another terminal/tab and run:\n'
                                ) ('\n') ('  export KUBECONFIG=') (${ VSub_Name CERT_DIR) ('/admin.kubeconfig\n') 
                                ('  cluster/kubectl.sh\n') ('\n') ('Alternatively, you can write to the default kubeconfig:\n') ('\n') 
                                ('  export KUBERNETES_PROVIDER=local\n') ('\n') ('  cluster/kubectl.sh config set-cluster local --server=https://') (${ VSub_Name API_HOST) (':') 
                                (${ VSub_Name API_SECURE_PORT) (' --certificate-authority=') (${ VSub_Name ROOT_CA_FILE) ('\n') 
                                ('  cluster/kubectl.sh config set-credentials myself ') (${ VSub_Name AUTH_ARGS) ('\n') 
                                (
'  cluster/kubectl.sh config set-context local --cluster=local --user=myself\n'
                                ) ('  cluster/kubectl.sh config use-context local\n') ('  cluster/kubectl.sh\n')
                              )
                            }
                          do_expansion: True
                          here_end: EOF
                          was_filled: True
                          spids: [6761]
                        )
                      ]
                    )
                  ]
                  spids: [16777215 6753]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: 16777215
                      body: 
                        {
                          (DQ ('The kubelet was started.\n') ('\n') ('Logs:\n') ('  ') 
                            (${ VSub_Name KUBELET_LOG) ('\n')
                          )
                        }
                      do_expansion: True
                      here_end: EOF
                      was_filled: True
                      spids: [6804]
                    )
                  ]
                )
              ]
              spids: [6799 6816]
            )
          ]
          spids: [6569]
        )
      spids: [6565 6568]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ (${ VSub_Name START_MODE))}
                      right: {(DQ (kubeletonly))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (etcd) (Lit_Other ':') (Lit_Other ':') (validate)}
            )
          ]
          spids: [16777215 6843]
        )
      ]
      spids: [16777215 6854]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (C {(Lit_Other '[')} {(DQ (${ VSub_Name CONTAINER_RUNTIME))} 
                      {(Lit_Other '=') (Lit_Other '=')} {(DQ (docker))} {(Lit_Other ']')}
                    )
                    (Pipeline
                      children: [
                        (C 
                          {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
                            (ensure_docker_daemon_connectivity)
                          }
                        )
                      ]
                      negated: True
                    )
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(exit)} {(1)})]
          spids: [16777215 6889]
        )
      ]
      spids: [16777215 6896]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobDEqual
                      left: {(DQ (${ VSub_Name CONTAINER_RUNTIME))}
                      right: {(DQ (rkt))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(test_rkt)})]
          spids: [16777215 6918]
        )
      ]
      spids: [16777215 6923]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ (${ VSub_Name START_MODE))}
                      right: {(DQ (kubeletonly))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(test_apiserver_off)})]
          spids: [16777215 6945]
        )
      ]
      spids: [16777215 6950]
    )
    (C 
      {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
        (test_openssl_installed)
      }
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') (ensure-cfssl)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$GO_OUT'))} {(Lit_Other '=') (Lit_Other '=')} {(DQ )} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(detect_binary)})]
          spids: [16777215 6990]
        )
      ]
      spids: [16777215 6995]
    )
    (C {(echo)} {(DQ ('Detected host and ready to start services.  Doing some housekeeping first...'))})
    (C {(echo)} {(DQ ('Using GO_OUT ') ($ VSub_Name '$GO_OUT'))})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBELET_CIDFILE)
          op: Equal
          rhs: {(/tmp/kubelet.cid)}
          spids: [7010]
        )
      ]
      spids: [7010]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobEqual
                      left: {(DQ (${ VSub_Name ENABLE_DAEMON))}
                      right: {(false)}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(trap)} {(cleanup)} {(EXIT)})]
          spids: [16777215 7030]
        )
      ]
      spids: [16777215 7039]
    )
    (C {(echo)} {(DQ ('Starting services now!'))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ (${ VSub_Name START_MODE))}
                      right: {(DQ (kubeletonly))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(start_etcd)})
            (C {(set_service_accounts)})
            (C {(start_apiserver)})
            (C {(start_controller_manager)})
            (C {(start_kubeproxy)})
            (C {(start_kubedns)})
            (C {(start_kubedashboard)})
          ]
          spids: [16777215 7067]
        )
      ]
      spids: [16777215 7090]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobNEqual
                      left: {(DQ (${ VSub_Name START_MODE))}
                      right: {(DQ (nokubelet))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Case
              to_match: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(uname)} {(-s)})])
                      left_token: <Left_CommandSub '$('>
                      spids: [7126 7130]
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [
                    (C {(warning)} 
                      {(DQ ('kubelet is not currently supported in darwin, kubelet aborted.'))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:KUBELET_LOG)
                          op: Equal
                          rhs: {(DQ )}
                          spids: [7147]
                        )
                      ]
                      spids: [7147]
                    )
                  ]
                  spids: [7136 7137 7152 16777215]
                )
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [(C {(start_kubelet)})]
                  spids: [7155 7156 7162 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(warning)} 
                      {(DQ ('Unsupported host OS.  Must be Linux or Mac OS X, kubelet aborted.'))}
                    )
                  ]
                  spids: [7165 7166 7176 16777215]
                )
              ]
              spids: [7123 7133 7179]
            )
          ]
          spids: [16777215 7112]
        )
      ]
      spids: [16777215 7181]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name PSP_ADMISSION))})
                      right: 
                        (BoolBinary
                          op_id: BoolBinary_GlobEqual
                          left: {(DQ (${ VSub_Name AUTHORIZATION_MODE))}
                          right: {(Lit_Other '*') (RBAC) (Lit_Other '*')}
                        )
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(create_psp_policy)})]
          spids: [16777215 7213]
        )
      ]
      spids: [16777215 7218]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobEqual
                      left: {(DQ ($ VSub_Name '$DEFAULT_STORAGE_CLASS'))}
                      right: {(DQ (true))}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(create_storage_class)})]
          spids: [16777215 7238]
        )
      ]
      spids: [16777215 7243]
    )
    (C {(print_success)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobEqual
                      left: {(DQ (${ VSub_Name ENABLE_DAEMON))}
                      right: {(false)}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (While
              cond: [(Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [(Sentence child:(C {(sleep)} {(1)}) terminator:<Op_Semi ';'>)]
                  spids: [7274 7281]
                )
            )
          ]
          spids: [16777215 7266]
        )
      ]
      spids: [16777215 7283]
    )
  ]
)