(List (= scope= flags=0 words=[] bindings=[('HELPERTOOLS', {[LIT_CHARS /Library/PrivilegedHelperTools]})]) (= scope= flags=0 words=[] bindings=[('SERVICE_NAME', {[LIT_CHARS org.chromium.chromoting]})]) (= scope= flags=0 words=[] bindings=[('CONFIG_FILE', {[DQ [VarSub HELPERTOOLS][LIT_CHARS /][VarSub SERVICE_NAME][LIT_CHARS .json]]})]) (= scope= flags=0 words=[] bindings=[('SCRIPT_FILE', {[DQ [VarSub HELPERTOOLS][LIT_CHARS /][VarSub SERVICE_NAME][LIT_CHARS .me2me.sh]]})]) (= scope= flags=0 words=[] bindings=[('USERS_TMP_FILE', {[DQ [VarSub SCRIPT_FILE][LIT_CHARS .users]]})]) (= scope= flags=0 words=[] bindings=[('PLIST', {[LIT_CHARS /Library/LaunchAgents/org.chromium.chromoting.plist]})]) (= scope= flags=0 words=[] bindings=[('PAM_CONFIG', {[LIT_CHARS /etc/pam.d/chrome-remote-desktop]})]) (= scope= flags=0 words=[] bindings=[('ENABLED_FILE', {[DQ [VarSub HELPERTOOLS][LIT_CHARS /][VarSub SERVICE_NAME][LIT_CHARS .me2me_enabled]]})]) (= scope= flags=0 words=[] bindings=[('ENABLED_FILE_BACKUP', {[DQ [VarSub ENABLED_FILE][LIT_CHARS .backup]]})]) (= scope= flags=0 words=[] bindings=[('LOG_FILE', {[LIT_CHARS /var/log/org.chromium.chromoting.log]})]) (= scope= flags=0 words=[] bindings=[('KSADMIN', {[LIT_CHARS /Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin]})]) (= scope= flags=0 words=[] bindings=[('KSUPDATE', {[LIT_CHARS https] [LIT_OTHER ":"] [LIT_CHARS //tools.google.com/service/update2]})]) (= scope= flags=0 words=[] bindings=[('KSPID', {[LIT_CHARS com.google.chrome_remote_desktop]})]) (= scope= flags=0 words=[] bindings=[('KSPVERSION', {[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS VERSION] [LIT_OTHER "@"] [LIT_OTHER "@"]})]) (FunctionDef on_error [] (List (Com {[LIT_CHARS logger]} {[LIT_CHARS An]} {[LIT_CHARS error]} {[LIT_CHARS occurred]} {[LIT_CHARS during]} {[LIT_CHARS Chrome]} {[LIT_CHARS Remote]} {[LIT_CHARS Desktop]} {[LIT_CHARS setup.]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef find_login_window_for_user [] (List (= scope= flags=0 words=[] bindings=[('user', {[VarSub 1]})]) (Pipeline (Com {[LIT_CHARS ps]} {[LIT_CHARS -ec]} {[LIT_CHARS -u]} {[DQ [VarSub user]]} {[LIT_CHARS -o]} {[LIT_CHARS comm] [LIT_COMMA ","] [LIT_CHARS pid]}) (Com {[LIT_CHARS awk]} {[SQ ]}) ) ) ) (Com {[LIT_CHARS trap]} {[LIT_CHARS on_error]} {[LIT_CHARS ERR]}) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]}) (Com {[LIT_CHARS logger]} {[LIT_CHARS Running]} {[LIT_CHARS Chrome]} {[LIT_CHARS Remote]} {[LIT_CHARS Desktop]} {[LIT_CHARS postflight]} {[LIT_CHARS script]} {[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS VERSION] [LIT_OTHER "@"] [LIT_OTHER "@"]}) (Com {[VarSub KSADMIN]} {[LIT_CHARS --register]} {[LIT_CHARS --productid]} {[DQ [VarSub KSPID]]} {[LIT_CHARS --version]} {[DQ [VarSub KSPVERSION]]} {[LIT_CHARS --xcpath]} {[DQ [VarSub PLIST]]} {[LIT_CHARS --url]} {[DQ [VarSub KSUPDATE]]}) (If (DBracket {B1 UNARY_FILE_f {[DQ [VarSub ENABLED_FILE_BACKUP]]}}) (Com {[LIT_CHARS mv]} {[DQ [VarSub ENABLED_FILE_BACKUP]]} {[DQ [VarSub ENABLED_FILE]]}) ) (= scope= flags=0 words=[] bindings=[('update_pam', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('CONTROL_LINE', {[DQ [LIT_CHARS "# If you edit this file, please delete this line."]]})]) (If (AndOr OP_AND_IF (DBracket {B1 UNARY_FILE_f {[DQ [VarSub PAM_CONFIG]]}}) (Pipeline! (Com {[LIT_CHARS grep]} {[LIT_CHARS -qF]} {[DQ [VarSub CONTROL_LINE]]} {[DQ [VarSub PAM_CONFIG]]}) ) ) (= scope= flags=0 words=[] bindings=[('update_pam', {[LIT_CHARS 0]})]) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub update_pam]]} {[DQ [LIT_CHARS 1]]}}) (List (Com {[LIT_CHARS logger]} {[LIT_CHARS Creating]} {[LIT_CHARS PAM]} {[LIT_CHARS config.]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub PAM_CONFIG]]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "# Copyright (c) 2012 The Chromium Authors. All rights reserved.\n"][LIT_CHARS "# Use of this source code is governed by a BSD-style license that can be\n"][LIT_CHARS "# found in the LICENSE file.\n"][LIT_CHARS "\n"][LIT_CHARS "auth required pam_deny.so\n"][LIT_CHARS "account required pam_permit.so\n"][LIT_CHARS "password required pam_deny.so\n"][LIT_CHARS "session required pam_deny.so\n"][LIT_CHARS "\n"][LIT_CHARS "# This file is auto-updated by the Chrome Remote Desktop installer.\n"][VarSub CONTROL_LINE][LIT_CHARS "\n"]]} 0), > ) ) (ElseTrue) (Com {[LIT_CHARS logger]} {[LIT_CHARS PAM]} {[LIT_CHARS config]} {[LIT_CHARS has]} {[LIT_CHARS local]} {[LIT_CHARS edits.]} {[LIT_CHARS Not]} {[LIT_CHARS updating.]}) ) (Com {[LIT_CHARS touch]} {[DQ [VarSub LOG_FILE]]}) (Com {[LIT_CHARS chown]} {[LIT_OTHER ":"] [LIT_CHARS admin]} {[DQ [VarSub LOG_FILE]]}) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 660]} {[DQ [VarSub LOG_FILE]]}) (If (DBracket {B? LOGICAL_BINARY_AND {B1 UNARY_STRING_n {[DQ [VarSub USER]]}} {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub USER]]} {[DQ [LIT_CHARS root]]}}}) (Com {[LIT_CHARS id]} {[LIT_CHARS -u]} {[DQ [VarSub USER]]} < (FilenameRedirectNode filename={[DQ [VarSub USERS_TMP_FILE]]} >"> 1), > ) ) (If (DBracket {B1 UNARY_FILE_r {[DQ [VarSub USERS_TMP_FILE]]}}) (For uid [{[ComSub (Pipeline (Com {[LIT_CHARS sort]} {[DQ [VarSub USERS_TMP_FILE]]}) (Com {[LIT_CHARS uniq]}) )]}]) (List (Com {[LIT_CHARS logger]} {[LIT_CHARS Starting]} {[LIT_CHARS service]} {[LIT_CHARS for]} {[LIT_CHARS user]} {[DQ [VarSub uid]] [LIT_CHARS .]}) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub uid]]} {[DQ [LIT_CHARS 0]]}}) (= scope= flags=0 words=[] bindings=[('context', {[DQ [LIT_CHARS LoginWindow]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('context', {[DQ [LIT_CHARS Aqua]]})]) ) (= scope= flags=0 words=[] bindings=[('pid', {[DQ [ComSub (Com {[LIT_CHARS find_login_window_for_user]} {[DQ [VarSub uid]]})]]})]) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub pid]]}}) (List (Com {[LIT_CHARS launchctl]} {[LIT_CHARS bsexec]} {[DQ [VarSub pid]]} {[LIT_CHARS sudo]} {[LIT_CHARS -u]} {[DQ [LIT_CHARS "#"][VarSub uid]]} {[LIT_CHARS launchctl]} {[LIT_CHARS load]} {[LIT_CHARS -w]} {[LIT_CHARS -S]} {[LIT_CHARS Aqua]} {[DQ [VarSub PLIST]]}) (Com {[LIT_CHARS launchctl]} {[LIT_CHARS bsexec]} {[DQ [VarSub pid]]} {[LIT_CHARS sudo]} {[LIT_CHARS -u]} {[DQ [LIT_CHARS "#"][VarSub uid]]} {[LIT_CHARS launchctl]} {[LIT_CHARS start]} {[DQ [VarSub SERVICE_NAME]]}) ) ) ) ) ) )