(CommandList children: [ (FuncDef name: _ssh_queries body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(DQ ('cipher cipher-auth mac kex key protocol-version'))} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [14 32] ) } ] ) } spids: [11] ) ] spids: [11] ) ] spids: [8] ) spids: [4 7] ) (FuncDef name: _ssh_query body: (BraceGroup children: [ (SimpleCommand words: [ { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(ssh)}) spids: [46 50] ) } {(-Q)} {($ VSub_Number '$2')} ] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[56])] ) ] spids: [43] ) spids: [39 42] ) (FuncDef name: _ssh_ciphers body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:ciphers) op: Equal rhs: {(SQ <'$( _ssh_query "$1" cipher )'>)} spids: [71] ) ] spids: [69] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr:(WordTest w:{($ VSub_Name '$ciphers')})) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ciphers) op: Equal rhs: { (DQ ('3des-cbc aes128-cbc aes192-cbc aes256-cbc\n') ( ' aes128-ctr aes192-ctr aes256-ctr arcfour128 arcfour256 arcfour\n' ) (' blowfish-cbc cast128-cbc') ) } spids: [85] ) ] spids: [85] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$ciphers'))} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [96 112] ) } ] ) } spids: [93] ) ] spids: [93] ) ] spids: [66] ) spids: [62 65] ) (FuncDef name: _ssh_macs body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:macs) op: Equal rhs: {(SQ <'$( _ssh_query "$1" mac )'>)} spids: [128] ) ] spids: [126] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr:(WordTest w:{($ VSub_Name '$macs')})) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:macs) op: Equal rhs: { (DQ ('hmac-md5 hmac-sha1 umac-64@openssh.com hmac-ripemd160\n') (' hmac-sha1-96 hmac-md5-96') ) } spids: [142] ) ] spids: [142] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$macs'))} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [152 168] ) } ] ) } spids: [149] ) ] spids: [149] ) ] spids: [123] ) spids: [119 122] ) (FuncDef name: _ssh_options body: (BraceGroup children: [ (C {(compopt)} {(-o)} {(nospace)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-S)} {(Lit_Other '=')} {(-W)} { (SQ <'AddressFamily BatchMode BindAddress\n'> < ' ChallengeResponseAuthentication CheckHostIP Cipher Ciphers\n' > <' ClearAllForwardings Compression CompressionLevel ConnectionAttempts\n'> < ' ConnectTimeout ControlMaster ControlPath ControlPersist DynamicForward\n' > <' EnableSSHKeysign EscapeChar ExitOnForwardFailure ForwardAgent\n'> < ' ForwardX11 ForwardX11Timeout ForwardX11Trusted GatewayPorts\n' > <' GlobalKnownHostsFile GSSAPIAuthentication GSSAPIClientIdentity\n'> < ' GSSAPIDelegateCredentials GSSAPIKeyExchange GSSAPIRenewalForcesRekey\n' > <' GSSAPIServerIdentity GSSAPITrustDns HashKnownHosts Host\n'> < ' HostbasedAuthentication HostKeyAlgorithms HostKeyAlias HostName\n' > <' IdentityFile IdentitiesOnly IPQoS KbdInteractiveDevices KexAlgorithms\n'> <' LocalCommand LocalForward LogLevel MACs\n'> <' NoHostAuthenticationForLocalhost NumberOfPasswordPrompts\n'> < ' PasswordAuthentication PermitLocalCommand PKCS11Provider Port\n' > <' PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication\n'> < ' RekeyLimit RemoteForward RequestTTY RhostsRSAAuthentication\n' > <' RSAAuthentication SendEnv ServerAliveCountMax ServerAliveInterval\n'> < ' SmartcardDevice StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice\n' > <' UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS\n'> <' VisualHostKey XAuthLocation'> ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [192 231] ) } ] ) } spids: [189] ) ] spids: [189] ) ] spids: [179] ) spids: [175 178] ) (FuncDef name: _ssh_suboption body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:prev) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')}) spids: [267 271] ) } spids: [266] ) (assign_pair lhs: (LhsName name:cur) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*=')}) spids: [274 278] ) } spids: [273] ) ] spids: [264] ) (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [ {(BatchMode)} {(ChallengeResponseAuthentication)} {(CheckHostIP)} {(ClearAllForwardings)} {(ControlPersist)} {(Compression)} {(EnableSSHKeysign)} {(ExitOnForwardFailure)} {(ForwardAgent)} {(ForwardX11)} {(ForwardX11Trusted)} {(GatewayPorts)} {(GSSAPIAuthentication)} {(GSSAPIKeyExchange)} {(GSSAPIDelegateCredentials)} {(GSSAPIRenewalForcesRekey)} {(GSSAPITrustDns)} {(HashKnownHosts)} {(HostbasedAuthentication)} {(IdentitiesOnly)} {(KbdInteractiveAuthentication)} {(KbdInteractiveDevices)} {(NoHostAuthenticationForLocalhost)} {(PasswordAuthentication)} {(PubkeyAuthentication)} {(RhostsRSAAuthentication)} {(RSAAuthentication)} {(StrictHostKeyChecking)} {(TCPKeepAlive)} {(UsePrivilegedPort)} {(VerifyHostKeyDNS)} {(VisualHostKey)} ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'yes no'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [378 394] ) } ] ) } spids: [375] ) ] spids: [375] ) ] spids: [289 372 399 16777215] ) (case_arm pat_list: [{(AddressFamily)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'any inet inet6'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [409 425] ) } ] ) } spids: [406] ) ] spids: [406] ) ] spids: [402 403 430 16777215] ) (case_arm pat_list: [{(BindAddress)}] action: [(C {(_ip_addresses)})] spids: [433 434 440 16777215] ) (case_arm pat_list: [{(Cipher)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'blowfish des 3des'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [450 466] ) } ] ) } spids: [447] ) ] spids: [447] ) ] spids: [443 444 471 16777215] ) (case_arm pat_list: [{(IPQoS)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'af1{1..4} af2{2..3} af3{1..3} af4{1..3}\n'> < ' cs{0..7} ef lowdelay throughput reliability' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [481 498] ) } ] ) } spids: [478] ) ] spids: [478] ) ] spids: [474 475 503 16777215] ) (case_arm pat_list: [{(HostbasedKeyTypes)} {(HostKeyAlgorithms)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _ssh_query "$2" key )'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [515 531] ) } ] ) } spids: [512] ) ] spids: [512] ) ] spids: [506 509 536 16777215] ) (case_arm pat_list: [{(KexAlgorithms)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _ssh_query "$2" kex )'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [546 562] ) } ] ) } spids: [543] ) ] spids: [543] ) ] spids: [539 540 567 16777215] ) (case_arm pat_list: [{(Protocol)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'1 2 1,2 2,1'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [577 593] ) } ] ) } spids: [574] ) ] spids: [574] ) ] spids: [570 571 598 16777215] ) (case_arm pat_list: [{(RequestTTY)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'no yes force auto'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [608 624] ) } ] ) } spids: [605] ) ] spids: [605] ) ] spids: [601 602 629 16777215] ) (case_arm pat_list: [{(Tunnel)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'yes no point-to-point ethernet'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [639 657] ) } ] ) } spids: [636] ) ] spids: [636] ) ] spids: [632 633 662 16777215] ) (case_arm pat_list: [{(PreferredAuthentications)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'gssapi-with-mic host-based publickey\n'> <' keyboard-interactive password'> ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [672 689] ) } ] ) } spids: [669] ) ] spids: [669] ) ] spids: [665 666 694 16777215] ) (case_arm pat_list: [{(MACs)}] action: [(C {(_ssh_macs)} {(DQ ($ VSub_Number '$2'))})] spids: [697 698 708 16777215] ) (case_arm pat_list: [{(Ciphers)}] action: [(C {(_ssh_ciphers)} {(DQ ($ VSub_Number '$2'))})] spids: [711 712 722 16777215] ) ] spids: [282 286 725] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [257] ) spids: [253 256] ) (FuncDef name: _ssh_suboption_check body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:cureq) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_get_cword)} {(Lit_Other ':') (Lit_Other '=')})] ) left_token: <Left_Backtick '`'> spids: [758 763] ) } spids: [757] ) (assign_pair lhs: (LhsName name:preveq) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(_get_pword)} {(Lit_Other ':') (Lit_Other '=')})] ) left_token: <Left_Backtick '`'> spids: [766 771] ) } spids: [765] ) ] spids: [755] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$cureq')} right: {(Lit_Other '*') (BoolBinary_GlobEqual '=') (Lit_Other '*')} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$preveq')} right: {(BoolUnary_o -o)} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_ssh_suboption)} {($ VSub_Name '$cureq')} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_QMark '$?')} ) ] spids: [16777215 797] ) ] spids: [16777215 814] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [748] ) spids: [744 747] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (FuncDef name: _ssh body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:cur) op:Equal spids:[833]) (assign_pair lhs:(LhsName name:prev) op:Equal spids:[835]) (assign_pair lhs:(LhsName name:words) op:Equal spids:[837]) (assign_pair lhs:(LhsName name:cword) op:Equal spids:[839]) ] spids: [831] ) (AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)} {(-n)} {(Lit_Other ':')}) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:configfile) op:Equal spids:[856])] spids: [854] ) (Assignment keyword: Assign_Local flags: [-a] pairs: [(assign_pair lhs:(LhsName name:config) op:Equal spids:[863])] spids: [859] ) (AndOr ops: [Op_DAmp] children: [ (C {(_ssh_suboption_check)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [{(-F)} {(-i)} {(-S)}] action: [ (C {(_filedir)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [888 893 904 16777215] ) (case_arm pat_list: [{(-c)}] action: [ (C {(_ssh_ciphers)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [907 908 923 16777215] ) (case_arm pat_list: [{(-m)}] action: [ (C {(_ssh_macs)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [926 927 942 16777215] ) (case_arm pat_list: [{(-l)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-u)} {(--)} {(DQ ($ VSub_Name '$cur'))}) ] ) left_token: <Left_CommandSub '$('> spids: [952 964] ) } ] ) } spids: [949] ) ] spids: [949] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [945 946 974 16777215] ) (case_arm pat_list: [{(-O)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'check forward exit stop'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [984 1000] ) } ] ) } spids: [981] ) ] spids: [981] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [977 978 1010 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_ssh_options)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1013 1014 1025 16777215] ) (case_arm pat_list: [{(-Q)}] action: [ (C {(_ssh_queries)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1028 1029 1044 16777215] ) (case_arm pat_list: [{(-w)}] action: [ (C {(_available_interfaces)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1047 1048 1059 16777215] ) (case_arm pat_list: [{(-b)}] action: [ (C {(_ip_addresses)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1062 1063 1074 16777215] ) (case_arm pat_list: [{(-D)} {(-e)} {(-I)} {(-L)} {(-p)} {(-R)} {(-W)}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [1077 1090 1098 16777215] ) ] spids: [881 885 1101] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$cur'))} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cur) op: Equal rhs: { (BracedVarSub token: <VSub_Name cur> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-F)}) spids: [1125 1129] ) } spids: [1124] ) ] spids: [1124] ) (C {(_filedir)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(-F)} do_all: F do_prefix: T do_suffix: F ) spids: [1143 1152] ) ) } ] ) } spids: [1139] ) ] spids: [1139] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cur) op: Equal rhs: {(-F) ($ VSub_Name '$cur')} spids: [1158] ) ] spids: [1158] ) ] spids: [16777215 1121] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$cur'))} right: {(-) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "$1" )'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1188 1204] ) } ] ) } spids: [1185] ) ] spids: [1185] ) ] spids: [1166 1182] ) ] else_action: [ (C {(set)} {(--)} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [1221 1226] ) ) } ) (While cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: { (BracedVarSub token: <VSub_Number 1> prefix_op: VSub_Pound spids: [1267 1270] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dequote)} { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin: (ArithWord w: {(Lit_Digits 2)} ) ) spids: [1288 1292] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1284 1294] ) ) } spids: [1282] ) ] spids: [1282] ) ] spids: [16777215 1279] ) ] else_action: [ (C {(shift)}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (WordTest w:{($ VSub_Number '$1')}) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dequote)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1314 1320] ) ) } spids: [1312] ) ] spids: [1312] ) ] ) ] spids: [1298 1324] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 1260] ) ] spids: [16777215 1330] ) (C {(shift)}) ] spids: [1243 1336] ) ) (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ VSub_Name '$configfile'))} {(DQ ($ VSub_Name '$cur'))} ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:args) op:Equal spids:[1357])] spids: [1355] ) (C {(_count_args)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: {($ VSub_Name '$args')} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(compopt)} {(-o)} {(filenames)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-c)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1389 1401] ) } ] ) } spids: [1386] ) ] spids: [1386] ) ] spids: [16777215 1376] ) ] spids: [16777215 1406] ) ] spids: [1209 1409] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [828] ) spids: [824 827] ) (C {(shopt)} {(-u)} {(hostcomplete)}) (C {(complete)} {(-F)} {(_ssh)} {(ssh)} {(slogin)} {(autossh)}) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (FuncDef name: _sftp body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:cur) op:Equal spids:[1457]) (assign_pair lhs:(LhsName name:prev) op:Equal spids:[1459]) (assign_pair lhs:(LhsName name:words) op:Equal spids:[1461]) (assign_pair lhs:(LhsName name:cword) op:Equal spids:[1463]) ] spids: [1455] ) (AndOr ops: [Op_DPipe] children: [(C {(_init_completion)}) (ControlFlow token:<ControlFlow_Return return>)] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:configfile) op:Equal spids:[1476])] spids: [1474] ) (AndOr ops: [Op_DAmp] children: [ (C {(_ssh_suboption_check)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [{(-b)} {(-F)} {(-i)}] action: [ (C {(_filedir)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1497 1502 1513 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_ssh_options)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1516 1517 1528 16777215] ) (case_arm pat_list: [{(-c)}] action: [ (C {(_ssh_ciphers)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1531 1532 1543 16777215] ) (case_arm pat_list: [{(-S)}] action: [ (C {(_command)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [1546 1547 1558 16777215] ) (case_arm pat_list: [{(-B)} {(-D)} {(-l)} {(-P)} {(-R)} {(-s)}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [1561 1572 1580 16777215] ) ] spids: [1490 1494 1583] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$cur'))} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cur) op: Equal rhs: { (BracedVarSub token: <VSub_Name cur> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-F)}) spids: [1607 1611] ) } spids: [1606] ) ] spids: [1606] ) (C {(_filedir)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(-F)} do_all: F do_prefix: T do_suffix: F ) spids: [1625 1634] ) ) } ] ) } spids: [1621] ) ] spids: [1621] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cur) op: Equal rhs: {(-F) ($ VSub_Name '$cur')} spids: [1640] ) ] spids: [1640] ) ] spids: [16777215 1603] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$cur'))} right: {(-) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "$1" )'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1670 1686] ) } ] ) } spids: [1667] ) ] spids: [1667] ) ] spids: [1648 1664] ) ] else_action: [ (C {(set)} {(--)} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [1703 1708] ) ) } ) (While cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: { (BracedVarSub token: <VSub_Number 1> prefix_op: VSub_Pound spids: [1749 1752] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dequote)} { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin: (ArithWord w: {(Lit_Digits 2)} ) ) spids: [1770 1774] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [1766 1776] ) ) } spids: [1764] ) ] spids: [1764] ) ] spids: [16777215 1761] ) ] else_action: [ (C {(shift)}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (WordTest w:{($ VSub_Number '$1')}) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dequote)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1796 1802] ) ) } spids: [1794] ) ] spids: [1794] ) ] ) ] spids: [1780 1806] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 1742] ) ] spids: [16777215 1812] ) (C {(shift)}) ] spids: [1725 1818] ) ) (C {(_known_hosts_real)} {(-a)} {(-F)} {(DQ ($ VSub_Name '$configfile'))} {(DQ ($ VSub_Name '$cur'))} ) ] spids: [1691 1836] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [1452] ) spids: [1448 1451] ) (C {(shopt)} {(-u)} {(hostcomplete)}) (C {(complete)} {(-F)} {(_sftp)} {(sftp)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_scp_path_esc) op: Equal rhs: {(SQ <'[][(){}<>",:;^&!$=?`|\\\\'>) (DQ ("'")) (SQ <'[:space:]]'>)} spids: [1868] ) ] spids: [1868] ) (FuncDef name: _scp_remote_files body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\n'>] ) } spids: [1895] ) ] spids: [1893] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cur) op: Equal rhs: { (BracedVarSub token: <VSub_Name cur> suffix_op: (PatSub pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (':')} replace: {(':')} do_all: F do_prefix: F do_suffix: F ) spids: [1907 1914] ) } spids: [1906] ) ] spids: [1906] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:userhost) op: Equal rhs: { (BracedVarSub token: <VSub_Name cur> suffix_op: (StringUnary op_id: VOp1_DPercent arg_word: {('?(') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('):*')} ) spids: [1921 1927] ) } spids: [1920] ) ] spids: [1918] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: { (BracedVarSub token: <VSub_Name cur> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*:')}) spids: [1933 1937] ) } spids: [1932] ) ] spids: [1930] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(sed)} {(-e)} {(SQ <'s/\\\\\\\\\\\\\\('>) ($ VSub_Name '$_scp_path_esc') (SQ <'\\)/\\\\\\1/g'>) } ] redirects: [ (Redir op_id: Redir_TLess fd: 16777215 arg_word: {(DQ ($ VSub_Name '$path'))} spids: [1960] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1946 1965] ) } spids: [1945] ) ] spids: [1945] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{($ VSub_Name '$path')})) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(ssh)} {(-o)} {(SQ <'Batchmode yes'>)} {($ VSub_Name '$userhost')} {(pwd)} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2001] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1988 2003] ) } spids: [1987] ) ] spids: [1987] ) ] spids: [16777215 1984] ) ] spids: [16777215 2006] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:files) op:Equal spids:[2012])] spids: [2010] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(BoolUnary_d -d)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:files) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(ssh)} {(-o)} {(SQ <'Batchmode yes'>)} {($ VSub_Name '$userhost')} {(command)} {(ls)} {(-aF1dL)} {(DQ ($ VSub_Name '$path') ('*'))} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2061] ) ] ) (C {(sed)} {(-e)} {(SQ <s/>) ($ VSub_Name '$_scp_path_esc') (SQ <'/\\\\\\\\\\\\&/g'>) } {(-e)} {(SQ <'/[^\\/]$/d'>)} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2036 2086] ) } spids: [2035] ) ] spids: [2035] ) ] spids: [16777215 2028] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:files) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(ssh)} {(-o)} {(SQ <'Batchmode yes'>)} {($ VSub_Name '$userhost')} {(command)} {(ls)} {(-aF1dL)} {(DQ ($ VSub_Name '$path') ('*'))} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2126] ) ] ) (C {(sed)} {(-e)} {(SQ <s/>) ($ VSub_Name '$_scp_path_esc') (SQ <'/\\\\\\\\\\\\&/g'>) } {(-e)} {(SQ <'s/[*@|=]$//g'>)} {(-e)} {(SQ <'s/[^\\/]$/& /g'>)} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2101 2159] ) } spids: [2100] ) ] spids: [2100] ) ] spids: [2089 2162] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$files')}])} spids: [2165] ) ] spids: [2165] ) ] spids: [1890] ) spids: [1886 1889] ) (FuncDef name: _scp_local_files body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\n'>] ) } spids: [2196] ) ] spids: [2194] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:dirsonly) op:Equal rhs:{(false)} spids:[2205])] spids: [2203] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(BoolUnary_d -d)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dirsonly) op: Equal rhs: {(true)} spids: [2225] ) ] spids: [2225] ) (C {(shift)}) ] spids: [16777215 2222] ) ] spids: [16777215 2232] ) (If arms: [ (if_arm cond: [(Sentence child:(C {($ VSub_Name '$dirsonly')}) terminator:<Op_Semi ';'>)] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(command)} {(ls)} {(-aF1dL)} {($ VSub_Name '$cur') (Lit_Other '*')} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2259] ) ] ) (C {(sed)} {(-e)} { (DQ (s/) ($ VSub_Name '$_scp_path_esc') (/) (EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('&/g') ) } {(-e)} {(SQ <'/[^\\/]$/d'>)} {(-e)} {(DQ ('s/^/') ($ VSub_Number '$1') (/))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2248 2292] ) } ] ) } spids: [2245] ) ] spids: [2245] ) ] spids: [16777215 2242] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(command)} {(ls)} {(-aF1dL)} {($ VSub_Name '$cur') (Lit_Other '*')} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [2314] ) ] ) (C {(sed)} {(-e)} { (DQ (s/) ($ VSub_Name '$_scp_path_esc') (/) (EscapedLiteralPart token: <Lit_EscapedChar '\\\\'> ) (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('&/g') ) } {(-e)} {(SQ <'s/[*@|=]$//g'>)} {(-e)} {(SQ <'s/[^\\/]$/& /g'>)} {(-e)} {(DQ ('s/^/') ($ VSub_Number '$1') (/))} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2303 2355] ) } ] ) } spids: [2300] ) ] spids: [2300] ) ] spids: [2297 2360] ) ] spids: [2191] ) spids: [2187 2190] ) (AndOr ops: [Op_DAmp] children: [ (FuncDef name: _scp body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:cur) op:Equal spids:[2380]) (assign_pair lhs:(LhsName name:prev) op:Equal spids:[2382]) (assign_pair lhs:(LhsName name:words) op:Equal spids:[2384]) (assign_pair lhs:(LhsName name:cword) op:Equal spids:[2386]) ] spids: [2378] ) (AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)} {(-n)} {(Lit_Other ':')}) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal spids: [2403] ) (assign_pair lhs:(LhsName name:prefix) op:Equal spids:[2405]) ] spids: [2401] ) (AndOr ops: [Op_DAmp] children: [ (C {(_ssh_suboption_check)}) (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(' ')} do_all: F do_prefix: F do_suffix: T ) spids: [2420 2429] ) ) } ] ) } spids: [2416] ) ] spids: [2416] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2413] ) ] ) (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [{(-l)} {(-P)}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [2451 2454 2462 16777215] ) (case_arm pat_list: [{(-F)} {(-i)}] action: [ (C {(_filedir)}) (C {(compopt)} {(Lit_Other '+') (o)} {(nospace)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2465 2468 2487 16777215] ) (case_arm pat_list: [{(-c)}] action: [ (C {(_ssh_ciphers)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(' ')} do_all: F do_prefix: F do_suffix: T ) spids: [2501 2510] ) ) } ] ) } spids: [2497] ) ] spids: [2497] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2490 2491 2521 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_ssh_options)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2524 2525 2536 16777215] ) (case_arm pat_list: [{(-S)}] action: [ (C {(_command)}) (C {(compopt)} {(Lit_Other '+') (o)} {(nospace)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2539 2540 2559 16777215] ) ] spids: [2444 2448 2562] ) (AndOr ops: [Op_DPipe] children: [ (C {(_expand)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (Case to_match: {($ VSub_Name '$cur')} arms: [ (case_arm pat_list: [ {(ExtGlobPart op:<ExtGlob_Bang '!('> spids:[2583 2587]) (/) (Lit_Other '*')} {(Lit_Other '[') (.) (Lit_Tilde '~') (Lit_Other ']') (Lit_Other '*')} ] spids: [2583 2596 2598 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (Lit_Other ':') (Lit_Other '*')}] action: [ (Sentence child: (C {(_scp_remote_files)}) terminator: <Op_Semi ';'> ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2604 2607 2617 16777215] ) ] spids: [2576 2580 2620] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$cur'))} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cur) op: Equal rhs: { (BracedVarSub token: <VSub_Name cur> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-F)}) spids: [2644 2648] ) } spids: [2643] ) ] spids: [2643] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: {(-F)} spids: [2651] ) ] spids: [2651] ) ] spids: [16777215 2640] ) ] else_action: [ (C {(set)} {(--)} { (DQ (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [2667 2672] ) ) } ) (While cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: {($ VSub_Pound '$#')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$1')} right: {(-F) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_gt left: { (BracedVarSub token: <VSub_Number 1> prefix_op: VSub_Pound spids: [2713 2716] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dequote)} { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (Slice begin: (ArithWord w: {(Lit_Digits 2)} ) ) spids: [2734 2738] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [2730 2740] ) ) } spids: [2728] ) ] spids: [2728] ) ] spids: [16777215 2725] ) ] else_action: [ (C {(shift)}) (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (WordTest w:{($ VSub_Number '$1')}) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:configfile) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dequote)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2760 2766] ) ) } spids: [2758] ) ] spids: [2758] ) ] ) ] spids: [2744 2770] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 2706] ) ] spids: [16777215 2776] ) (C {(shift)}) ] spids: [2689 2782] ) ) (Case to_match: {($ VSub_Name '$cur')} arms: [ (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'$( _parse_usage "${words[0]}" )'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2801 2819] ) } ] ) } spids: [2798] ) ] spids: [2798] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name COMPREPLY> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (PatSub pat: {} replace: {(' ')} do_all: F do_prefix: F do_suffix: T ) spids: [2828 2837] ) ) } ] ) } spids: [2824] ) ] spids: [2824] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [2793 2795 2848 16777215] ) (case_arm pat_list: [ {(Lit_Other '*') (/) (Lit_Other '*')} {(Lit_Other '[') (.) (Lit_Tilde '~') (Lit_Other ']') (Lit_Other '*')} ] spids: [2851 2860 2867 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(_known_hosts_real)} {(-c)} {(-a)} {(-F)} {(DQ ($ VSub_Name '$configfile'))} {(DQ ($ VSub_Name '$cur'))} ) ] spids: [2870 2871 2891 16777215] ) ] spids: [2786 2790 2894] ) ] spids: [2655 2897] ) (C {(_scp_local_files)} {(DQ ($ VSub_Name '$prefix'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2375] ) spids: [2371 2374] ) (C {(complete)} {(-F)} {(_scp)} {(-o)} {(nospace)} {(scp)}) ] ) ] )