(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]}) (= scope= flags=0 words=[] bindings=[('BUILDTYPE', {[VarSub BUILDTYPE test_op=VS_TEST_HYPHEN {[LIT_CHARS Debug]}]})]) (While (DParen {A Atom NODE_ARITH_WORD {[DQ [VarSub #]]}}) (List (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS -d]]}}) (List (= scope= flags=0 words=[] bindings=[('DEVICE_ID', {[VarSub 2]})]) (Com {[LIT_CHARS shift]}) ) (DBracket {B? LOGICAL_BINARY_OR {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS -i]]}} {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS --resourcePath]]}}}) (List (= scope= flags=0 words=[] bindings=[('RESOURCE_PATH', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('APP_ARGS', {[Array {[DQ [VarSub APP_ARGS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]}]})]) (Com {[LIT_CHARS shift]}) ) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS -s]]}}) (List (= scope= flags=0 words=[] bindings=[('DEVICE_SERIAL', {[DQ [LIT_CHARS "-s "][VarSub 2]]})]) (Com {[LIT_CHARS shift]}) ) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS -t]]}}) (List (= scope= flags=0 words=[] bindings=[('BUILDTYPE', {[VarSub 2]})]) (Com {[LIT_CHARS shift]}) ) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS --release]]}}) (= scope= flags=0 words=[] bindings=[('BUILDTYPE', {[LIT_CHARS Release]})]) (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[DQ [LIT_CHARS --clang]]}}) (= scope= flags=0 words=[] bindings=[('USE_CLANG', {[DQ [LIT_CHARS true]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('APP_ARGS', {[Array {[DQ [VarSub APP_ARGS bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} {[DQ [VarSub 1]]}]})]) ) (Com {[LIT_CHARS shift]}) ) ) (FunctionDef verbose [] (If (DBracket {B1 UNARY_STRING_n {[VarSub VERBOSE]}}) (Com {[LIT_CHARS echo]} {[VarSub @]}) ) ) (FunctionDef exportVar [] (List (= scope= flags=0 words=[] bindings=[('NAME', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('VALUE', {[VarSub 2]})]) (Com {[LIT_CHARS verbose]} {[LIT_CHARS export]} {[VarSub NAME] [LIT_OTHER "="] [\ LIT_ESCAPED_CHAR "\\\""] [VarSub VALUE] [\ LIT_ESCAPED_CHAR "\\\""]}) (= scope= flags=1 words=[{[VarSub NAME] [LIT_OTHER "="] [DQ [VarSub VALUE]]}] bindings=[]) ) ) (FunctionDef absPath [] (Subshell (List (Com {[LIT_CHARS cd]} {[VarSub 1]}) (Com {[LIT_CHARS pwd]}) ) ) ) (= scope= flags=0 words=[] bindings=[('SCRIPT_DIR', {[ComSub (Com {[LIT_CHARS absPath]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE][LIT_CHARS "[0]}"]]})]]})]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub ANDROID_SDK_ROOT]]} {[LIT_OTHER "]"]}) (If (= scope= flags=0 words=[] bindings=[('ANDROID_SDK_ROOT', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS which]} {[LIT_CHARS android]})]})][LIT_CHARS /..]]})]) (Com {[LIT_CHARS exportVar]} {[LIT_CHARS ANDROID_SDK_ROOT]} {[VarSub ANDROID_SDK_ROOT]}) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "No ANDROID_SDK_ROOT set and can't auto detect it from location of android binary."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (= scope= flags=0 words=[] bindings=[('THIRD_PARTY_EXTERNAL_DIR', {[VarSub SCRIPT_DIR] [LIT_CHARS /../third_party/externals]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[DQ [VarSub THIRD_PARTY_EXTERNAL_DIR]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: Unable to find the required third_party dependencies needed to build."]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " To fix this add the following line to your .gclient file and run 'gclient sync'"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " target_os = ['android']"]]}) (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef setup_device [] (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [LIT_CHARS "OS=android"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " host_os="][ComSub (Pipeline (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_os=android"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " android_base="][ComSub (Com {[LIT_CHARS absPath]} {[VarSub SCRIPT_DIR] [LIT_CHARS /..]})]]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub GYP_DEFINES]]} {[LIT_OTHER "*"] [LIT_VAR_LIKE "skia_shared_lib="] [LIT_OTHER "*"]}}) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_shared_lib=1"]]})]) ) (= scope= flags=0 words=[] bindings=[('TARGET_DEVICE', {[DQ [VarSub 1]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub TARGET_DEVICE]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[LIT_CHARS .android_config]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('TARGET_DEVICE', {[ComSub (Com {[LIT_CHARS cat]} {[LIT_CHARS .android_config]})]})]) (Com {[LIT_CHARS verbose]} {[DQ [LIT_CHARS "no target device (-d), using "][VarSub TARGET_DEVICE][LIT_CHARS " from most recent build"]]}) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('TARGET_DEVICE', {[DQ [LIT_CHARS arm_v7_thumb]]})]) (Com {[LIT_CHARS verbose]} {[DQ [LIT_CHARS "no target device (-d), using "][VarSub TARGET_DEVICE]]}) ) ) ) (Case to_match={[VarSub TARGET_DEVICE]}, pat_word_list=[[{[LIT_CHARS nexus_s]}], [{[LIT_CHARS nexus_4]}, {[LIT_CHARS nexus_7]}, {[LIT_CHARS nexus_10]}], [{[LIT_CHARS xoom]}], [{[LIT_CHARS galaxy_nexus]}], [{[LIT_CHARS intel_rhb]}, {[LIT_CHARS razr_i]}], [{[LIT_CHARS x86]}], [{[LIT_CHARS x86_64]}, {[LIT_CHARS x64]}], [{[LIT_CHARS arm_v7]}], [{[LIT_CHARS arm_v7_thumb]}, {[LIT_CHARS nvidia_logan]}, {[LIT_CHARS nexus_5]}], [{[LIT_CHARS arm]}], [{[LIT_CHARS arm_thumb]}], [{[LIT_CHARS arm64]}], [{[LIT_CHARS mips]}], [{[LIT_CHARS mips_dsp2]}], [{[LIT_CHARS mips64]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_resource_cache_mb_limit=24"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon=0 arm_version=7 arm_thumb=1"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon=1 arm_version=7 arm_thumb=1"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_resource_cache_mb_limit=32"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=x86 skia_arch_width=32"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_resource_cache_mb_limit=32"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS x86]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=x86 skia_arch_width=32"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS x86]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=x86 skia_arch_width=64"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS x86_64]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon_optional=1 arm_version=7 arm_thumb=0"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon_optional=1 arm_version=7 arm_thumb=1"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon=0 arm_thumb=0"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm arm_neon=0 arm_thumb=1"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=arm64 skia_arch_width=64"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS arm64]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=mips skia_arch_width=32"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_resource_cache_mb_limit=32"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS mips]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=mips skia_arch_width=32"]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " mips_arch_variant=mips32r2 mips_dsp=2"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS mips]]})]) ) (List (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type=mips skia_arch_width=64"]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_ARCH', {[DQ [LIT_CHARS mips64]]})]) ) (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub ANDROID_IGNORE_UNKNOWN_DEVICE]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: unknown device "][VarSub TARGET_DEVICE]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " skia_arch_type="][VarSub ANDROID_ARCH test_op=VS_TEST_HYPHEN {[LIT_CHARS arm]}]]})]) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " "][VarSub ANDROID_GYP_DEFINES]]})]) ) ) (Com {[LIT_CHARS verbose]} {[DQ [LIT_CHARS "The build is targeting the device: "][VarSub TARGET_DEVICE]]}) (Com {[LIT_CHARS exportVar]} {[LIT_CHARS DEVICE_ID]} {[VarSub TARGET_DEVICE]}) (Com {[LIT_CHARS source]} {[VarSub SCRIPT_DIR] [LIT_CHARS /utils/setup_toolchain.sh]}) (= scope= flags=0 words=[] bindings=[('DEFINES', {[DQ [VarSub DEFINES][LIT_CHARS " android_toolchain="][VarSub TOOLCHAIN_TYPE]]})]) (Com {[LIT_CHARS exportVar]} {[LIT_CHARS GYP_DEFINES]} {[DQ [VarSub DEFINES][LIT_CHARS " "][VarSub GYP_DEFINES]]}) (= scope= flags=0 words=[] bindings=[('SKIA_SRC_DIR', {[ComSub (List (Com {[LIT_CHARS cd]} {[DQ [VarSub SCRIPT_DIR][LIT_CHARS /../../..]]}) (Com {[LIT_CHARS pwd]}) )]})]) (= scope= flags=0 words=[] bindings=[('DEFAULT_SKIA_OUT', {[DQ [VarSub SKIA_SRC_DIR][LIT_CHARS /out/config/android-][VarSub TARGET_DEVICE]]})]) (Com {[LIT_CHARS exportVar]} {[LIT_CHARS SKIA_OUT]} {[DQ [VarSub SKIA_OUT test_op=VS_TEST_COLON_HYPHEN {[VarSub DEFAULT_SKIA_OUT]}]]}) ) ) (FunctionDef adb_pull_if_needed [] (List (Com {[LIT_CHARS source]} {[VarSub SCRIPT_DIR] [LIT_CHARS /utils/setup_adb.sh]}) (= scope= flags=0 words=[] bindings=[('ANDROID_SRC', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('HOST_DST', {[DQ [VarSub 2]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[VarSub HOST_DST]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('ANDROID_MD5', {[ComSub (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS shell]} {[LIT_CHARS md5]} {[VarSub ANDROID_SRC]})]})]) (If (Com {[LIT_OTHER "["]} {[ComSub (Com {[LIT_CHARS uname]})]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS Darwin]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('HOST_MD5', {[ComSub (Com {[LIT_CHARS md5]} {[LIT_CHARS -q]} {[VarSub HOST_DST]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('HOST_MD5', {[ComSub (Com {[LIT_CHARS md5sum]} {[VarSub HOST_DST]})]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ANDROID_MD5 transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 32]}}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub HOST_MD5 transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 32]}}]]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub HOST_DST][LIT_CHARS " "]]}) (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS pull]} {[VarSub ANDROID_SRC]} {[VarSub HOST_DST]}) ) ) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub HOST_DST][LIT_CHARS " "]]}) (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS pull]} {[VarSub ANDROID_SRC]} {[VarSub HOST_DST]}) ) ) ) ) (FunctionDef adb_push_if_needed [] (List (Com {[LIT_CHARS source]} {[VarSub SCRIPT_DIR] [LIT_CHARS /utils/setup_adb.sh]}) (= scope= flags=0 words=[] bindings=[('HOST_SRC', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_DST', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_LS', {[ComSub (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS shell]} {[LIT_CHARS ls]} {[LIT_CHARS -ld]} {[VarSub ANDROID_DST]})]})]) (= scope= flags=0 words=[] bindings=[('HOST_LS', {[ComSub (Com {[LIT_CHARS ls]} {[LIT_CHARS -ld]} {[VarSub HOST_SRC]})]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ANDROID_LS transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS d]]} {[LIT_CHARS -a]} {[DQ [VarSub HOST_LS transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS -]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('ANDROID_DST', {[DQ [VarSub ANDROID_DST][LIT_CHARS /][ComSub (Com {[LIT_CHARS basename]} {[VarSub HOST_SRC]})]]})]) ) (= scope= flags=0 words=[] bindings=[('ANDROID_LS', {[ComSub (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS shell]} {[LIT_CHARS ls]} {[LIT_CHARS -ld]} {[VarSub ANDROID_DST]})]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ANDROID_LS transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS -]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('ANDROID_MD5', {[ComSub (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS shell]} {[LIT_CHARS md5]} {[VarSub ANDROID_DST]})]})]) (If (Com {[LIT_OTHER "["]} {[ComSub (Com {[LIT_CHARS uname]})]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS Darwin]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('HOST_MD5', {[ComSub (Com {[LIT_CHARS md5]} {[LIT_CHARS -q]} {[VarSub HOST_SRC]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('HOST_MD5', {[ComSub (Com {[LIT_CHARS md5sum]} {[VarSub HOST_SRC]})]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ANDROID_MD5 transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 32]}}]]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub HOST_MD5 transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 32]}}]]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub ANDROID_DST][LIT_CHARS " "]]}) (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS push]} {[VarSub HOST_SRC]} {[VarSub ANDROID_DST]}) ) ) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub ANDROID_LS transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS d]]} {[LIT_OTHER "]"]}) (For FILE_ITEM [{[ComSub (Com {[LIT_CHARS ls]} {[VarSub HOST_SRC]})]}]) (Com {[LIT_CHARS adb_push_if_needed]} {[DQ [VarSub HOST_SRC][LIT_CHARS /][VarSub FILE_ITEM]]} {[DQ [VarSub ANDROID_DST][LIT_CHARS /][VarSub FILE_ITEM]]}) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('HOST_LS', {[ComSub (Com {[LIT_CHARS ls]} {[LIT_CHARS -ld]} {[VarSub HOST_SRC]})]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_LS transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS d]]} {[LIT_OTHER "]"]}) (List (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS shell]} {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ANDROID_DST]}) (Com {[LIT_CHARS adb_push_if_needed]} {[VarSub HOST_SRC]} {[VarSub ANDROID_DST]}) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub ANDROID_DST][LIT_CHARS " "]]}) (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS shell]} {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub ANDROID_DST]]})]]}) (Com {[VarSub ADB]} {[VarSub DEVICE_SERIAL]} {[LIT_CHARS push]} {[VarSub HOST_SRC]} {[VarSub ANDROID_DST]}) ) ) ) ) ) ) (Com {[LIT_CHARS setup_device]} {[DQ [VarSub DEVICE_ID]]}) )