// Path: java/anyremote/client/android/util/ISocket.java
// public interface ISocket {
// 	public void close();
// 	// public boolean isConnected(); BluetoothSocket API level 14 or higher
// 	public InputStream getInputStream();
// 	public OutputStream getOutputStream();
// 
// }
// 
// Path: java/anyremote/client/android/util/ProtocolMessage.java
// public class ProtocolMessage {
// 	public static final int FULL     = 0;
// 	public static final int FIRST    = 1;
// 	public static final int INTERMED = 2;
// 	public static final int LAST     = 3;
// 	
// 	public int id;
// 	public int stage;
// 	public Vector tokens;
// }
// 
// Path: java/anyremote/client/android/util/UserException.java
// public class UserException extends Exception {
// 	private String error, details;
// 	
// 	static final long serialVersionUID = 1232123;
// 
// 	public UserException(String error, String details) {
// 
// 		this(error, details, null);
// 	}
// 
// 	public UserException(String error, String details, Exception ex) {
// 
// 		this.error = error;
// 
// 		if (details == null) {
// 			if (ex != null && ex.getMessage() != null) {
// 				this.details = ex.getMessage();
// 			} else {
// 				this.details = "";
// 			}
// 		} else {
// 			if (ex != null && ex.getMessage() != null) {
// 				if (details.endsWith(".")) {
// 					details = details.substring(0, details.length() - 1);
// 				}
// 				this.details = details + " (" + ex.getMessage() + ").";
// 			} else {
// 				this.details = details;
// 			}
// 		}
// 
// 	}
// 
// 	// Get the error details
// 	public String getDetails() {
// 		return details;
// 	}
// 
// 	// Get the error title
// 	public String getError() {
// 		return error;
// 	}
// }


import java.util.Vector;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import anyremote.client.android.util.ISocket;
import anyremote.client.android.util.ProtocolMessage;
import anyremote.client.android.util.UserException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

					if (id == Dispatcher.CMD_NO) {

						anyRemote._log("Connection", "Incorrect command "
								+ aWord);
						getWord(false); // skip until ");" or until end of
										// available bytes

						readStage = READ_NO;
						curCmdId = Dispatcher.CMD_NO;
						continue;
					}

					readStage = READ_CMDID;

					if (id == Dispatcher.CMD_IMAGE || id == Dispatcher.CMD_COVER) {
						charMode = false;
						// btoRead = 0; // in binary mode we will read full
						// image
					}

					curCmdId = id;
					cmdTokens.addElement(new Integer(id));

				} else {
					cmdTokens.addElement(aWord);
				}

				if (readingEndsAt == ENDS_AT_CEND) { // command was read fully

// Path: java/anyremote/client/android/util/ISocket.java
// public interface ISocket {
// 	public void close();
// 	// public boolean isConnected(); BluetoothSocket API level 14 or higher
// 	public InputStream getInputStream();
// 	public OutputStream getOutputStream();
// 
// }
// 
// Path: java/anyremote/client/android/util/ProtocolMessage.java
// public class ProtocolMessage {
// 	public static final int FULL     = 0;
// 	public static final int FIRST    = 1;
// 	public static final int INTERMED = 2;
// 	public static final int LAST     = 3;
// 	
// 	public int id;
// 	public int stage;
// 	public Vector tokens;
// }
// 
// Path: java/anyremote/client/android/util/UserException.java
// public class UserException extends Exception {
// 	private String error, details;
// 	
// 	static final long serialVersionUID = 1232123;
// 
// 	public UserException(String error, String details) {
// 
// 		this(error, details, null);
// 	}
// 
// 	public UserException(String error, String details, Exception ex) {
// 
// 		this.error = error;
// 
// 		if (details == null) {
// 			if (ex != null && ex.getMessage() != null) {
// 				this.details = ex.getMessage();
// 			} else {
// 				this.details = "";
// 			}
// 		} else {
// 			if (ex != null && ex.getMessage() != null) {
// 				if (details.endsWith(".")) {
// 					details = details.substring(0, details.length() - 1);
// 				}
// 				this.details = details + " (" + ex.getMessage() + ").";
// 			} else {
// 				this.details = details;
// 			}
// 		}
// 
// 	}
// 
// 	// Get the error details
// 	public String getDetails() {
// 		return details;
// 	}
// 
// 	// Get the error title
// 	public String getError() {
// 		return error;
// 	}
// }


// Path: java/anyremote/client/android/Connection.java
import java.util.Vector;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import anyremote.client.android.util.ISocket;
import anyremote.client.android.util.ProtocolMessage;
import anyremote.client.android.util.UserException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;


					if (id == Dispatcher.CMD_NO) {

						anyRemote._log("Connection", "Incorrect command "
								+ aWord);
						getWord(false); // skip until ");" or until end of
										// available bytes

						readStage = READ_NO;
						curCmdId = Dispatcher.CMD_NO;
						continue;
					}

					readStage = READ_CMDID;

					if (id == Dispatcher.CMD_IMAGE || id == Dispatcher.CMD_COVER) {
						charMode = false;
						// btoRead = 0; // in binary mode we will read full
						// image
					}

					curCmdId = id;
					cmdTokens.addElement(new Integer(id));

				} else {
					cmdTokens.addElement(aWord);
				}

				if (readingEndsAt == ENDS_AT_CEND) { // command was read fully

					int stage = (readStage == READ_PART ? ProtocolMessage.LAST