(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (AndOr
                        ops: [Op_DAmp]
                        children: [
                          (C {(cd)} 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [128 136]
                              ) (/..)
                            }
                          )
                          (C {(pwd)})
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [125 142]
              )
            }
          spids: [124]
        )
      ]
      spids: [124]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBERNETES_RELEASE_URL)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBERNETES_RELEASE_URL>
                  suffix_op: 
                    (StringUnary
                      op_id: VTest_ColonHyphen
                      arg_word: {('https:') (Lit_Slash /) (Lit_Slash /) (dl.k8s.io)}
                    )
                  spids: [147 154]
                )
              )
            }
          spids: [145]
        )
      ]
      spids: [145]
    )
    (FuncDef
      name: detect_kube_release
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_n
                              child: 
                                {
                                  (DQ 
                                    (BracedVarSub
                                      token: <VSub_Name KUBE_VERSION>
                                      suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(EmptyPart)})
                                      spids: [174 177]
                                    )
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 183]
                )
              ]
              spids: [16777215 194]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalNot
                              child: 
                                (BoolUnary
                                  op_id: BoolUnary_e
                                  child: {(DQ (${ VSub_Name KUBE_ROOT) (/version))}
                                )
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("Can't determine Kubernetes release."))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[225])]
                    )
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {
                          (DQ (${ VSub_Name BASH_SOURCE) 
                            (' should only be run from a prebuilt Kubernetes release.')
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[238])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Did you mean to use get-kube.sh instead?'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[248])]
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 216]
                )
              ]
              spids: [16777215 257]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:KUBE_VERSION)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(cat)} {(DQ (${ VSub_Name KUBE_ROOT) (/version))})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [262 271]
                      )
                    }
                  spids: [261]
                )
              ]
              spids: [261]
            )
          ]
          spids: [164]
        )
      spids: [158 163]
    )
    (FuncDef
      name: detect_client_info
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:kernel)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-s)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [288 292]
                      )
                    }
                  spids: [287]
                )
              ]
              spids: [285]
            )
            (Case
              to_match: {(DQ (${ VSub_Name kernel))}
              arms: [
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_PLATFORM)
                          op: Equal
                          rhs: {(DQ (darwin))}
                          spids: [310]
                        )
                      ]
                      spids: [310]
                    )
                  ]
                  spids: [306 307 316 16777215]
                )
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_PLATFORM)
                          op: Equal
                          rhs: {(DQ (linux))}
                          spids: [323]
                        )
                      ]
                      spids: [323]
                    )
                  ]
                  spids: [319 320 329 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(DQ ('Unknown, unsupported platform: ') (${ VSub_Name kernel) (.))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[346])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Supported platforms: Linux, Darwin.'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[356])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Bailing out.'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[366])]
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(2)})
                  ]
                  spids: [332 333 16777215 375]
                )
              ]
              spids: [295 303 375]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:machine)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-m)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [390 394]
                      )
                    }
                  spids: [389]
                )
              ]
              spids: [387]
            )
            (Case
              to_match: {(DQ (${ VSub_Name machine))}
              arms: [
                (case_arm
                  pat_list: [
                    {(x86_64) (Lit_Other '*')}
                    {(i) (Lit_Other '?') (86_64) (Lit_Other '*')}
                    {(amd64) (Lit_Other '*')}
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_ARCH)
                          op: Equal
                          rhs: {(DQ (amd64))}
                          spids: [421]
                        )
                      ]
                      spids: [421]
                    )
                  ]
                  spids: [408 418 427 16777215]
                )
                (case_arm
                  pat_list: [{(aarch64) (Lit_Other '*')} {(arm64) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_ARCH)
                          op: Equal
                          rhs: {(DQ (arm64))}
                          spids: [438]
                        )
                      ]
                      spids: [438]
                    )
                  ]
                  spids: [430 435 444 16777215]
                )
                (case_arm
                  pat_list: [{(arm) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_ARCH)
                          op: Equal
                          rhs: {(DQ (arm))}
                          spids: [452]
                        )
                      ]
                      spids: [452]
                    )
                  ]
                  spids: [447 449 458 16777215]
                )
                (case_arm
                  pat_list: [{(i) (Lit_Other '?') (86) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_ARCH)
                          op: Equal
                          rhs: {(DQ (386))}
                          spids: [468]
                        )
                      ]
                      spids: [468]
                    )
                  ]
                  spids: [461 465 474 16777215]
                )
                (case_arm
                  pat_list: [{(s390x) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CLIENT_ARCH)
                          op: Equal
                          rhs: {(DQ (s390x))}
                          spids: [482]
                        )
                      ]
                      spids: [482]
                    )
                  ]
                  spids: [477 479 488 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(DQ ('Unknown, unsupported architecture (') (${ VSub_Name machine) (').'))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[506])]
                    )
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(DQ ('Supported architectures x86_64, i686, arm, arm64, s390x.'))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[516])]
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ('Bailing out.'))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[526])]
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(3)})
                  ]
                  spids: [492 493 535 16777215]
                )
              ]
              spids: [397 405 538]
            )
          ]
          spids: [282]
        )
      spids: [276 281]
    )
    (FuncDef
      name: md5sum_file
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(which)} {(md5)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [558]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [561]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(md5)} {(-q)} {(DQ ($ VSub_Number '$1'))})]
                  spids: [16777215 565]
                )
              ]
              else_action: [
                (Pipeline
                  children: [
                    (C {(md5sum)} {(DQ ($ VSub_Number '$1'))})
                    (C {(awk)} {(SQ <'{ print $1 }'>)})
                  ]
                  negated: F
                )
              ]
              spids: [577 595]
            )
          ]
          spids: [549]
        )
      spids: [543 548]
    )
    (FuncDef
      name: sha1sum_file
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(which)} {(sha1sum)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [615]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [618]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (C {(sha1sum)} {(DQ ($ VSub_Number '$1'))})
                        (C {(awk)} {(SQ <'{ print $1 }'>)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [16777215 622]
                )
              ]
              else_action: [
                (Pipeline
                  children: [
                    (C {(shasum)} {(-a1)} {(DQ ($ VSub_Number '$1'))})
                    (C {(awk)} {(SQ <'{ print $1 }'>)})
                  ]
                  negated: F
                )
              ]
              spids: [640 660]
            )
          ]
          spids: [606]
        )
      spids: [600 605]
    )
    (FuncDef
      name: download_tarball
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:download_path)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [678]
                )
              ]
              spids: [674]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [688]
                )
              ]
              spids: [684]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:url)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name DOWNLOAD_URL_PREFIX) (/) (${ VSub_Name file))}
                  spids: [694]
                )
              ]
              spids: [694]
            )
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name download_path))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (WordTest
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: (CommandList children:[(C {(which)} {(curl)})])
                                    left_token: <Left_CommandSub '$('>
                                    spids: [721 725]
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(curl)} {(-fL)} {(--retry)} {(3)} {(--keepalive-time)} {(2)} 
                      {(DQ (${ VSub_Name url))} {(-o)} {(DQ (${ VSub_Name download_path) (/) (${ VSub_Name file))}
                    )
                  ]
                  spids: [16777215 730]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (WordTest
                              w: 
                                {
                                  (CommandSubPart
                                    command_list: (CommandList children:[(C {(which)} {(wget)})])
                                    left_token: <Left_CommandSub '$('>
                                    spids: [768 772]
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(wget)} {(DQ (${ VSub_Name url))} {(-O)} 
                      {(DQ (${ VSub_Name download_path) (/) (${ VSub_Name file))}
                    )
                  ]
                  spids: [764 777]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(echo)} {(DQ ("Couldn't find curl or wget.  Bailing out."))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[810])]
                )
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(4)})
              ]
              spids: [801 819]
            )
            (C {(echo)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:md5sum)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(md5sum_file)} 
                                {(DQ (${ VSub_Name download_path) (/) (${ VSub_Name file))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [828 840]
                      )
                    }
                  spids: [827]
                )
              ]
              spids: [825]
            )
            (C {(echo)} {(DQ ('md5sum(') (${ VSub_Name file) (')=') (${ VSub_Name md5sum))})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:sha1sum)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(sha1sum_file)} 
                                {(DQ (${ VSub_Name download_path) (/) (${ VSub_Name file))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [860 872]
                      )
                    }
                  spids: [859]
                )
              ]
              spids: [857]
            )
            (C {(echo)} {(DQ ('sha1sum(') (${ VSub_Name file) (')=') (${ VSub_Name sha1sum))})
            (C {(echo)})
          ]
          spids: [671]
        )
      spids: [665 670]
    )
    (FuncDef
      name: extract_arch_tarball
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tarfile)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [911]
                )
              ]
              spids: [907]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:platform)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$2'))}
                  spids: [921]
                )
              ]
              spids: [917]
            )
            (Assignment
              keyword: Assign_Local
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:arch)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$3'))}
                  spids: [931]
                )
              ]
              spids: [927]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:platforms_dir)
                  op: Equal
                  rhs: 
                    {
                      (DQ (${ VSub_Name KUBE_ROOT) (/platforms/) (${ VSub_Name platform) (/) 
                        (${ VSub_Name arch)
                      )
                    }
                  spids: [938]
                )
              ]
              spids: [938]
            )
            (C {(echo)} 
              {(DQ ('Extracting ') (${ VSub_Name tarfile) (' into ') (${ VSub_Name platforms_dir))}
            )
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name platforms_dir))})
            (C {(tar)} {(-xzf)} {(DQ (${ VSub_Name tarfile))} {(--strip-components)} {(3)} {(-C)} 
              {(DQ (${ VSub_Name platforms_dir))}
            )
            (C {(ln)} {(-sf)} {(DQ (${ VSub_Name platforms_dir))} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(dirname)} {(${ VSub_Name tarfile)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [1021 1027]
                  ) (/bin)
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("Add '") 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(dirname)} {(${ VSub_Name tarfile)})])
                    left_token: <Left_CommandSub '$('>
                    spids: [1036 1042]
                  ) ("/bin' to your PATH to use newly-installed binaries.")
                )
              }
            )
          ]
          spids: [904]
        )
      spids: [898 903]
    )
    (C {(detect_kube_release)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOWNLOAD_URL_PREFIX)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBERNETES_RELEASE_URL) (/) (${ VSub_Name KUBE_VERSION))}
          spids: [1051]
        )
      ]
      spids: [1051]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SERVER_PLATFORM)
          op: Equal
          rhs: {(DQ (linux))}
          spids: [1063]
        )
      ]
      spids: [1063]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SERVER_ARCH)
          op: Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  token: <VSub_Name KUBERNETES_SERVER_ARCH>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(amd64)})
                  spids: [1070 1074]
                )
              )
            }
          spids: [1068]
        )
      ]
      spids: [1068]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SERVER_TAR)
          op: Equal
          rhs: 
            {
              (DQ (kubernetes-server-) (${ VSub_Name SERVER_PLATFORM) (-) (${ VSub_Name SERVER_ARCH) 
                (.tar.gz)
              )
            }
          spids: [1077]
        )
      ]
      spids: [1077]
    )
    (C {(detect_client_info)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLIENT_TAR)
          op: Equal
          rhs: 
            {
              (DQ (kubernetes-client-) (${ VSub_Name CLIENT_PLATFORM) (-) (${ VSub_Name CLIENT_ARCH) 
                (.tar.gz)
              )
            }
          spids: [1093]
        )
      ]
      spids: [1093]
    )
    (C {(echo)} {(DQ ('Kubernetes release: ') (${ VSub_Name KUBE_VERSION))})
    (C {(echo)} 
      {
        (DQ ('Server: ') (${ VSub_Name SERVER_PLATFORM) (/) (${ VSub_Name SERVER_ARCH) 
          ('  (to override, set KUBERNETES_SERVER_ARCH)')
        )
      }
    )
    (C {(echo)} 
      {
        (DQ ('Client: ') (${ VSub_Name CLIENT_PLATFORM) (/) (${ VSub_Name CLIENT_ARCH) 
          ('  (autodetected)')
        )
      }
    )
    (C {(echo)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOWNLOAD_SERVER_TAR)
          op: Equal
          rhs: {(false)}
          spids: [1153]
        )
      ]
      spids: [1153]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalNot
                      child: 
                        (BoolUnary
                          op_id: BoolUnary_e
                          child: {(DQ (${ VSub_Name KUBE_ROOT) (/server/) (${ VSub_Name SERVER_TAR))}
                        )
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:DOWNLOAD_SERVER_TAR)
                  op: Equal
                  rhs: {(true)}
                  spids: [1180]
                )
              ]
              spids: [1180]
            )
            (C {(echo)} 
              {
                (DQ ('Will download ') (${ VSub_Name SERVER_TAR) (' from ') 
                  (${ VSub_Name DOWNLOAD_URL_PREFIX)
                )
              }
            )
          ]
          spids: [16777215 1177]
        )
      ]
      spids: [16777215 1197]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOWNLOAD_CLIENT_TAR)
          op: Equal
          rhs: {(false)}
          spids: [1206]
        )
      ]
      spids: [1206]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalNot
                      child: 
                        (BoolUnary
                          op_id: BoolUnary_x
                          child: 
                            {
                              (DQ (${ VSub_Name KUBE_ROOT) (/platforms/) (${ VSub_Name CLIENT_PLATFORM) 
                                (/) (${ VSub_Name CLIENT_ARCH) (/kubectl)
                              )
                            }
                        )
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:DOWNLOAD_CLIENT_TAR)
                  op: Equal
                  rhs: {(true)}
                  spids: [1238]
                )
              ]
              spids: [1238]
            )
            (C {(echo)} 
              {
                (DQ ('Will download and extract ') (${ VSub_Name CLIENT_TAR) (' from ') 
                  (${ VSub_Name DOWNLOAD_URL_PREFIX)
                )
              }
            )
          ]
          spids: [16777215 1235]
        )
      ]
      spids: [16777215 1255]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TESTS_TAR)
          op: Equal
          rhs: {(DQ (kubernetes-test.tar.gz))}
          spids: [1258]
        )
      ]
      spids: [1258]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:DOWNLOAD_TESTS_TAR) op:Equal rhs:{(false)} spids:[1263])]
      spids: [1263]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name KUBERNETES_DOWNLOAD_TESTS>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(EmptyPart)})
                              spids: [1273 1276]
                            )
                          )
                        }
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:DOWNLOAD_TESTS_TAR)
                  op: Equal
                  rhs: {(true)}
                  spids: [1285]
                )
              ]
              spids: [1285]
            )
            (C {(echo)} 
              {
                (DQ ('Will download and extract ') (${ VSub_Name TESTS_TAR) (' from ') 
                  (${ VSub_Name DOWNLOAD_URL_PREFIX)
                )
              }
            )
          ]
          spids: [16777215 1282]
        )
      ]
      spids: [16777215 1302]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalAnd
                      left: 
                        (BoolBinary
                          op_id: BoolBinary_GlobDEqual
                          left: {(DQ (${ VSub_Name DOWNLOAD_CLIENT_TAR))}
                          right: {(false)}
                        )
                      right: 
                        (LogicalAnd
                          left: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name DOWNLOAD_SERVER_TAR))}
                              right: {(false)}
                            )
                          right: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name DOWNLOAD_TESTS_TAR))}
                              right: {(false)}
                            )
                        )
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Nothing additional to download.'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
          ]
          spids: [16777215 1350]
        )
      ]
      spids: [16777215 1364]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_z
                      child: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name KUBERNETES_SKIP_CONFIRM>
                              suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(EmptyPart)})
                              spids: [1374 1377]
                            )
                          )
                        }
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('Is this ok? [Y]/n'))})
            (C {(read)} {(confirm)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ (${ VSub_Name confirm))}
                              right: 
                                {(Lit_Other '^') (Lit_Other '[') (nN) (Lit_Other ']') (Lit_Other '$')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ (Aborting.))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [16777215 1419]
                )
              ]
              spids: [16777215 1434]
            )
          ]
          spids: [16777215 1383]
        )
      ]
      spids: [16777215 1436]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(DQ (${ VSub_Name DOWNLOAD_SERVER_TAR))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(download_tarball)} {(DQ (${ VSub_Name KUBE_ROOT) (/server))} 
              {(DQ (${ VSub_Name SERVER_TAR))}
            )
          ]
          spids: [16777215 1448]
        )
      ]
      spids: [16777215 1466]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(DQ (${ VSub_Name DOWNLOAD_CLIENT_TAR))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(download_tarball)} {(DQ (${ VSub_Name KUBE_ROOT) (/client))} 
              {(DQ (${ VSub_Name CLIENT_TAR))}
            )
            (C {(extract_arch_tarball)} 
              {(DQ (${ VSub_Name KUBE_ROOT) (/client/) (${ VSub_Name CLIENT_TAR))} {(DQ (${ VSub_Name CLIENT_PLATFORM))} {(DQ (${ VSub_Name CLIENT_ARCH))}
            )
          ]
          spids: [16777215 1478]
        )
      ]
      spids: [16777215 1521]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(DQ (${ VSub_Name DOWNLOAD_TESTS_TAR))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(download_tarball)} {(DQ (${ VSub_Name KUBE_ROOT) (/test))} 
              {(DQ (${ VSub_Name TESTS_TAR))}
            )
            (C {(echo)} 
              {(DQ ('Extracting ') (${ VSub_Name TESTS_TAR) (' into ') (${ VSub_Name KUBE_ROOT))}
            )
            (C {(tar)} {(-xzf)} {(DQ (${ VSub_Name KUBE_ROOT) (/test/) (${ VSub_Name TESTS_TAR))} 
              {(--strip-components)} {(1)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))}
            )
          ]
          spids: [16777215 1533]
        )
      ]
      spids: [16777215 1596]
    )
  ]
)