(List (FunctionDef error [] (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: "][VarSub @]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/stderr]} "> 1), > ) ) (FunctionDef error_exit [] (List (Com {[LIT_CHARS error]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (FunctionDef needarg [] (Com {[LIT_CHARS echo]} {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ";\n"][LIT_CHARS " [ -z "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " ] && echo 'Missing argument: "][VarSub 1][LIT_CHARS "' && usage;\n"][LIT_CHARS " shift"]]} ) ) (FunctionDef arg_or_default [] (Com {[LIT_CHARS echo]} {[LIT_CHARS eval]} {[DQ [LIT_CHARS "[ x"][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " = x"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS -][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " ] && "][VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS 2][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " && shift 2;\n"][LIT_CHARS " [ -z "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " ] && "][VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\\""][VarSub 2][\ LIT_ESCAPED_CHAR "\\\""]]} ) ) (FunctionDef arg_or_prompt [] (Com {[LIT_CHARS echo]} {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ";\n"][LIT_CHARS " [ -n "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " ] && shift ;\n"][LIT_CHARS " [ -z "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " ] && read -p "][\ LIT_ESCAPED_CHAR "\\\""][VarSub 1][LIT_CHARS " ["][VarSub 2][LIT_CHARS "]: "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][VarSub 1][LIT_CHARS " ;\n"][LIT_CHARS " [ -z "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " ] && "][VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\\""][VarSub 2][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ";"]]} ) ) (FunctionDef require [] (List (= scope= flags=0 words=[{[LIT_CHARS value]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('args', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('key', {[VarSub 2]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub args]]} {[LIT_CHARS -o]} {[LIT_CHARS -n]} {[DQ [VarSub args transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [VarSub 2] [LIT_CHARS "*"]}]]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS read]} {[LIT_CHARS -p]} {[DQ [VarSub key][LIT_CHARS ": "]]} {[LIT_CHARS value]} ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -n]} {[DQ [VarSub args]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('args', {[DQ [VarSub args][LIT_CHARS ","]]})]) ) (= scope= flags=0 words=[] bindings=[('args', {[DQ [VarSub args][VarSub key][LIT_CHARS ","][VarSub value]]})]) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub args]]} ) ) ) (FunctionDef stripindexes [] (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]} ) ) (FunctionDef extract_dbus_match [] (List (= scope= flags=0 words=[] bindings=[('argument', {[VarSub 1]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -r]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "s_^/[[:digit:]]+/"][VarSub argument][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\S"][LIT_CHARS "+"][\ LIT_ESCAPED_CHAR "\\s"][LIT_CHARS "+__p"]]} ) ) ) (FunctionDef dbus_call [] (List (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('object', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('method', {[DQ [VarSub 3]]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 3]} ) (Com {[LIT_CHARS dbus-send]} {[LIT_CHARS --system]} {[LIT_CHARS --print-reply]} {[LIT_CHARS --fixed]} {[LIT_CHARS --dest] [LIT_DBRACKET_LIKE "="] [DQ [VarSub dest]]} {[DQ [VarSub object]]} {[DQ [VarSub method]]} {[DQ [VarSub @]]} ) ) ) (FunctionDef dbus_property [] (List (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('object', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('interface', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('property', {[DQ [VarSub 4]]})]) (Com {[LIT_CHARS dbus_call]} {[DQ [VarSub dest]]} {[DQ [VarSub object]]} {[LIT_CHARS org.freedesktop.DBus.Properties.Get]} {[DQ [LIT_CHARS "string:"][VarSub interface]]} {[DQ [LIT_CHARS "string:"][VarSub property]]} ) ) ) (FunctionDef dbus_properties [] (List (= scope= flags=0 words=[] bindings=[('dest', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('object', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('interface', {[DQ [VarSub 3]]})]) (Com {[LIT_CHARS dbus_call]} {[DQ [VarSub dest]]} {[DQ [VarSub object]]} {[LIT_CHARS org.freedesktop.DBus.Properties.GetAll]} {[DQ [LIT_CHARS "string:"][VarSub interface]]} ) ) ) (FunctionDef unpack_tuple [] (List (= scope= flags=0 words=[] bindings=[('cmd', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('argidx', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (List (= scope= flags=0 words=[] bindings=[('varname', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [VarSub cmd][LIT_CHARS " -e s/^"][\ LIT_ESCAPED_CHAR "\\\\"][LIT_CHARS /][VarSub argidx][LIT_CHARS /][VarSub varname][LIT_CHARS ":/"]]})]) (= scope= flags=0 words=[] bindings=[('argidx', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub argidx]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (Com {[VarSub cmd]} ) ) ) (FunctionDef format_dbus_dict [] (Com {[LIT_CHARS awk]} {[SQ ]} ) ) (FunctionDef indent [] (List (= scope= flags=0 words=[] bindings=[('level', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[{[LIT_CHARS space]}] bindings=[]) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -n]} {[DQ [VarSub level]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('level', {[LIT_CHARS 1]})]) ) (= scope= flags=0 words=[] bindings=[('space', {[ComSub (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%"][VarSub level][LIT_CHARS "s%"][VarSub level][LIT_CHARS s]]} {[SQ ]} {[SQ ]})]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -E]} {[DQ [LIT_CHARS "s/^(.+)/"][VarSub space][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS /]]} ) ) ) )