diff --git a/algebricks/algebricks-common/pom.xml b/algebricks/algebricks-common/pom.xml
index ad2e8f7..521ef12 100644
--- a/algebricks/algebricks-common/pom.xml
+++ b/algebricks/algebricks-common/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/algebricks/algebricks-compiler/pom.xml b/algebricks/algebricks-compiler/pom.xml
index 9d2a115..bd35835 100644
--- a/algebricks/algebricks-compiler/pom.xml
+++ b/algebricks/algebricks-compiler/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/algebricks/algebricks-core/pom.xml b/algebricks/algebricks-core/pom.xml
index 1166842..def5b35 100644
--- a/algebricks/algebricks-core/pom.xml
+++ b/algebricks/algebricks-core/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java b/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
index c18d554..530d19c 100644
--- a/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
+++ b/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
@@ -44,7 +44,7 @@
 
     @SuppressWarnings("rawtypes")
     public static RecordDescriptor mkRecordDescriptor(IVariableTypeEnvironment env, IOperatorSchema opSchema,
-            JobGenContext context) throws AlgebricksException {        
+            JobGenContext context) throws AlgebricksException {
         ISerializerDeserializer[] fields = new ISerializerDeserializer[opSchema.getSize()];
         ITypeTraits[] typeTraits = new ITypeTraits[opSchema.getSize()];
         ISerializerDeserializerProvider sdp = context.getSerializerDeserializerProvider();
diff --git a/algebricks/algebricks-data/pom.xml b/algebricks/algebricks-data/pom.xml
index 04fc66f..9536416 100644
--- a/algebricks/algebricks-data/pom.xml
+++ b/algebricks/algebricks-data/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/algebricks/algebricks-examples/piglet-example/pom.xml b/algebricks/algebricks-examples/piglet-example/pom.xml
index 0cf1bab..ca7467b 100644
--- a/algebricks/algebricks-examples/piglet-example/pom.xml
+++ b/algebricks/algebricks-examples/piglet-example/pom.xml
@@ -16,8 +16,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/algebricks/algebricks-rewriter/pom.xml b/algebricks/algebricks-rewriter/pom.xml
index 9ba1603..7968773 100644
--- a/algebricks/algebricks-rewriter/pom.xml
+++ b/algebricks/algebricks-rewriter/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/algebricks/algebricks-runtime/pom.xml b/algebricks/algebricks-runtime/pom.xml
index 458b5ee..e438283 100644
--- a/algebricks/algebricks-runtime/pom.xml
+++ b/algebricks/algebricks-runtime/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/algebricks/algebricks-tests/pom.xml b/algebricks/algebricks-tests/pom.xml
index a62398c..c114881 100644
--- a/algebricks/algebricks-tests/pom.xml
+++ b/algebricks/algebricks-tests/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
 	  <encoding>UTF-8</encoding>
 	</configuration>
diff --git a/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java b/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
index 282bfb8..daf6a7f 100644
--- a/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
+++ b/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
@@ -71,13 +71,6 @@
     }
 
     @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
-            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
-            JobSpecification spec) throws AlgebricksException {
-        return null;
-    }
-
-    @Override
     public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink,
             int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc) {
 
@@ -102,6 +95,13 @@
     }
 
     @Override
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
+            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
+            JobSpecification spec) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getWriteResultRuntime(IDataSource<S> arg0,
             IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, JobGenContext arg4,
             JobSpecification arg5) throws AlgebricksException {
diff --git a/hivesterix/src/main/assembly/binary-assembly.xml b/hivesterix/src/main/assembly/binary-assembly.xml
deleted file mode 100755
index de3757f..0000000
--- a/hivesterix/src/main/assembly/binary-assembly.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<assembly>
-	<id>binary-assembly</id>
-	<formats>
-		<format>zip</format>
-		<format>dir</format>
-	</formats>
-	<includeBaseDirectory>false</includeBaseDirectory>
-	<fileSets>
-		<fileSet>
-			<directory>target/appassembler/bin</directory>
-			<outputDirectory>bin</outputDirectory>
-			<fileMode>0755</fileMode>
-		</fileSet>
-		<fileSet>
-			<directory>target/appassembler/lib</directory>
-			<outputDirectory>lib</outputDirectory>
-		</fileSet>
-		<fileSet>
-			<directory>target</directory>
-			<outputDirectory>lib</outputDirectory>
-			<includes>
-				<include>*.jar</include>
-			</includes>
-		</fileSet>
-	</fileSets>
-</assembly>
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/ExpressionConstant.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/ExpressionConstant.java
deleted file mode 100644
index 3c84566..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/ExpressionConstant.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-/**
- * some constants for expression
- * 
- * @author yingyib
- * 
- */
-public class ExpressionConstant {
-
-	/**
-	 * name space for function identifier
-	 */
-	public static String NAMESPACE = "hive";
-
-	/**
-	 * field expression: modeled as function in Algebricks
-	 */
-	public static String FIELDACCESS = "fieldaccess";
-
-	/**
-	 * null string: modeled as null in Algebricks
-	 */
-	public static String NULL = "null";
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveAlgebricksBuiltInFunctionMap.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveAlgebricksBuiltInFunctionMap.java
deleted file mode 100644
index 18380f7..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveAlgebricksBuiltInFunctionMap.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.HashMap;
-
-import org.apache.hadoop.hive.ql.exec.Description;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-
-public class HiveAlgebricksBuiltInFunctionMap {
-
-	/**
-	 * hive auqa builtin function map instance
-	 */
-	public static HiveAlgebricksBuiltInFunctionMap INSTANCE = new HiveAlgebricksBuiltInFunctionMap();
-
-	/**
-	 * hive to Algebricks function name mapping
-	 */
-	private HashMap<String, FunctionIdentifier> hiveToAlgebricksMap = new HashMap<String, FunctionIdentifier>();
-
-	/**
-	 * Algebricks to hive function name mapping
-	 */
-	private HashMap<FunctionIdentifier, String> AlgebricksToHiveMap = new HashMap<FunctionIdentifier, String>();
-
-	/**
-	 * the bi-directional mapping between hive functions and Algebricks
-	 * functions
-	 */
-	private HiveAlgebricksBuiltInFunctionMap() {
-		hiveToAlgebricksMap.put("and", AlgebricksBuiltinFunctions.AND);
-		hiveToAlgebricksMap.put("or", AlgebricksBuiltinFunctions.OR);
-		hiveToAlgebricksMap.put("!", AlgebricksBuiltinFunctions.NOT);
-		hiveToAlgebricksMap.put("not", AlgebricksBuiltinFunctions.NOT);
-		hiveToAlgebricksMap.put("=", AlgebricksBuiltinFunctions.EQ);
-		hiveToAlgebricksMap.put("<>", AlgebricksBuiltinFunctions.NEQ);
-		hiveToAlgebricksMap.put(">", AlgebricksBuiltinFunctions.GT);
-		hiveToAlgebricksMap.put("<", AlgebricksBuiltinFunctions.LT);
-		hiveToAlgebricksMap.put(">=", AlgebricksBuiltinFunctions.GE);
-		hiveToAlgebricksMap.put("<=", AlgebricksBuiltinFunctions.LE);
-
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.AND, "and");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.OR, "or");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.NOT, "!");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.NOT, "not");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.EQ, "=");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.NEQ, "<>");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.GT, ">");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.LT, "<");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.GE, ">=");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.LE, "<=");
-	}
-
-	/**
-	 * get hive function name from Algebricks function identifier
-	 * 
-	 * @param AlgebricksId
-	 * @return hive
-	 */
-	public String getHiveFunctionName(FunctionIdentifier AlgebricksId) {
-		return AlgebricksToHiveMap.get(AlgebricksId);
-	}
-
-	/**
-	 * get hive UDF or Generic class's corresponding built-in functions
-	 * 
-	 * @param funcClass
-	 * @return function identifier
-	 */
-	public FunctionIdentifier getAlgebricksFunctionId(Class<?> funcClass) {
-		Description annotation = (Description) funcClass
-				.getAnnotation(Description.class);
-		String hiveUDFName = "";
-		if (annotation == null) {
-			hiveUDFName = null;
-			return null;
-		} else {
-			hiveUDFName = annotation.name();
-			return hiveToAlgebricksMap.get(hiveUDFName);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveExpressionTypeComputer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveExpressionTypeComputer.java
deleted file mode 100644
index afb7d39..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveExpressionTypeComputer.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.FunctionInfo;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-public class HiveExpressionTypeComputer implements IExpressionTypeComputer {
-
-	public static IExpressionTypeComputer INSTANCE = new HiveExpressionTypeComputer();
-
-	@Override
-	public Object getType(ILogicalExpression expr,
-			IMetadataProvider<?, ?> metadataProvider,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-		if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-			/**
-			 * function expression
-			 */
-			AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-			IFunctionInfo funcInfo = funcExpr.getFunctionInfo();
-
-			/**
-			 * argument expressions, types, object inspectors
-			 */
-			List<Mutable<ILogicalExpression>> arguments = funcExpr
-					.getArguments();
-			List<TypeInfo> argumentTypes = new ArrayList<TypeInfo>();
-
-			/**
-			 * get types of argument
-			 */
-			for (Mutable<ILogicalExpression> argument : arguments) {
-				TypeInfo type = (TypeInfo) getType(argument.getValue(),
-						metadataProvider, env);
-				argumentTypes.add(type);
-			}
-
-			ObjectInspector[] childrenOIs = new ObjectInspector[argumentTypes
-					.size()];
-
-			/**
-			 * get object inspector
-			 */
-			for (int i = 0; i < argumentTypes.size(); i++) {
-				childrenOIs[i] = TypeInfoUtils
-						.getStandardWritableObjectInspectorFromTypeInfo(argumentTypes
-								.get(i));
-			}
-
-			/**
-			 * type inference for scalar function
-			 */
-			if (funcExpr instanceof ScalarFunctionCallExpression) {
-
-				FunctionIdentifier AlgebricksId = funcInfo
-						.getFunctionIdentifier();
-				Object functionInfo = ((HiveFunctionInfo) funcInfo).getInfo();
-				String udfName = HiveAlgebricksBuiltInFunctionMap.INSTANCE
-						.getHiveFunctionName(AlgebricksId);
-				GenericUDF udf;
-				if (udfName != null) {
-					/**
-					 * get corresponding function info for built-in functions
-					 */
-					FunctionInfo fInfo = FunctionRegistry
-							.getFunctionInfo(udfName);
-					udf = fInfo.getGenericUDF();
-				} else if (functionInfo != null) {
-					/**
-					 * for GenericUDFBridge: we should not call get type of this
-					 * hive expression, because parameters may have been
-					 * changed!
-					 */
-					ExprNodeGenericFuncDesc hiveExpr = (ExprNodeGenericFuncDesc) functionInfo;
-					udf = hiveExpr.getGenericUDF();
-				} else {
-					/**
-					 * for other generic UDF
-					 */
-					Class<?> udfClass;
-					try {
-						udfClass = Class.forName(AlgebricksId.getName());
-						udf = (GenericUDF) udfClass.newInstance();
-					} catch (Exception e) {
-						e.printStackTrace();
-						throw new AlgebricksException(e.getMessage());
-					}
-				}
-				/**
-				 * doing the actual type inference
-				 */
-				ObjectInspector oi = null;
-				try {
-					oi = udf.initialize(childrenOIs);
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(oi);
-				return exprType;
-
-			} else if (funcExpr instanceof AggregateFunctionCallExpression) {
-				/**
-				 * hive aggregation info
-				 */
-				AggregationDesc aggregateDesc = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				/**
-				 * type inference for aggregation function
-				 */
-				GenericUDAFEvaluator result = aggregateDesc
-						.getGenericUDAFEvaluator();
-
-				ObjectInspector returnOI = null;
-				try {
-					returnOI = result
-							.init(aggregateDesc.getMode(), childrenOIs);
-				} catch (HiveException e) {
-					e.printStackTrace();
-				}
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(returnOI);
-				return exprType;
-			} else if (funcExpr instanceof UnnestingFunctionCallExpression) {
-				/**
-				 * type inference for UDTF function
-				 */
-				UDTFDesc hiveDesc = (UDTFDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				GenericUDTF udtf = hiveDesc.getGenericUDTF();
-				ObjectInspector returnOI = null;
-				try {
-					returnOI = udtf.initialize(childrenOIs);
-				} catch (HiveException e) {
-					e.printStackTrace();
-				}
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(returnOI);
-				return exprType;
-			} else {
-				throw new IllegalStateException(
-						"unrecognized function expression "
-								+ expr.getClass().getName());
-			}
-		} else if (expr.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
-			/**
-			 * get type for variable in the environment
-			 */
-			VariableReferenceExpression varExpr = (VariableReferenceExpression) expr;
-			LogicalVariable var = varExpr.getVariableReference();
-			TypeInfo type = (TypeInfo) env.getVarType(var);
-			return type;
-		} else if (expr.getExpressionTag() == LogicalExpressionTag.CONSTANT) {
-			/**
-			 * get type for constant, from its java class
-			 */
-			ConstantExpression constExpr = (ConstantExpression) expr;
-			HivesterixConstantValue value = (HivesterixConstantValue) constExpr
-					.getValue();
-			TypeInfo type = TypeInfoFactory
-					.getPrimitiveTypeInfoFromJavaPrimitive(value.getObject()
-							.getClass());
-			return type;
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveFunctionInfo.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveFunctionInfo.java
deleted file mode 100644
index 220bd00..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveFunctionInfo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.io.Serializable;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-
-public class HiveFunctionInfo implements IFunctionInfo, Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * primary function identifier
-	 */
-	private transient FunctionIdentifier fid;
-
-	/**
-	 * secondary function identifier: function name
-	 */
-	private transient Object secondaryFid;
-
-	public HiveFunctionInfo(FunctionIdentifier fid, Object secondFid) {
-		this.fid = fid;
-		this.secondaryFid = secondFid;
-	}
-
-	@Override
-	public FunctionIdentifier getFunctionIdentifier() {
-		return fid;
-	}
-
-	public Object getInfo() {
-		return secondaryFid;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveMergeAggregationExpressionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveMergeAggregationExpressionFactory.java
deleted file mode 100644
index 8dea691..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveMergeAggregationExpressionFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IMergeAggregationExpressionFactory;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-
-/**
- * generate merge aggregation expression from an aggregation expression
- * 
- * @author yingyib
- * 
- */
-public class HiveMergeAggregationExpressionFactory implements
-		IMergeAggregationExpressionFactory {
-
-	public static IMergeAggregationExpressionFactory INSTANCE = new HiveMergeAggregationExpressionFactory();
-
-	@Override
-	public ILogicalExpression createMergeAggregation(ILogicalExpression expr,
-			IOptimizationContext context) throws AlgebricksException {
-		/**
-		 * type inference for scalar function
-		 */
-		if (expr instanceof AggregateFunctionCallExpression) {
-			AggregateFunctionCallExpression funcExpr = (AggregateFunctionCallExpression) expr;
-			/**
-			 * hive aggregation info
-			 */
-			AggregationDesc aggregator = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-					.getFunctionInfo()).getInfo();
-			LogicalVariable inputVar = context.newVar();
-			ExprNodeDesc col = new ExprNodeColumnDesc(
-					TypeInfoFactory.voidTypeInfo, inputVar.toString(), null,
-					false);
-			ArrayList<ExprNodeDesc> parameters = new ArrayList<ExprNodeDesc>();
-			parameters.add(col);
-
-			GenericUDAFEvaluator.Mode mergeMode;
-			if (aggregator.getMode() == GenericUDAFEvaluator.Mode.PARTIAL1)
-				mergeMode = GenericUDAFEvaluator.Mode.PARTIAL2;
-			else if (aggregator.getMode() == GenericUDAFEvaluator.Mode.COMPLETE)
-				mergeMode = GenericUDAFEvaluator.Mode.FINAL;
-			else
-				mergeMode = aggregator.getMode();
-			AggregationDesc mergeDesc = new AggregationDesc(
-					aggregator.getGenericUDAFName(),
-					aggregator.getGenericUDAFEvaluator(), parameters,
-					aggregator.getDistinct(), mergeMode);
-
-			String UDAFName = mergeDesc.getGenericUDAFName();
-			List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
-			arguments.add(new MutableObject<ILogicalExpression>(
-					new VariableReferenceExpression(inputVar)));
-
-			FunctionIdentifier funcId = new FunctionIdentifier(
-					ExpressionConstant.NAMESPACE, UDAFName + "("
-							+ mergeDesc.getMode() + ")");
-			HiveFunctionInfo funcInfo = new HiveFunctionInfo(funcId, mergeDesc);
-			AggregateFunctionCallExpression aggregationExpression = new AggregateFunctionCallExpression(
-					funcInfo, false, arguments);
-			return aggregationExpression;
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveNullableTypeComputer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveNullableTypeComputer.java
deleted file mode 100644
index 10c9b8a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveNullableTypeComputer.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer;
-
-public class HiveNullableTypeComputer implements INullableTypeComputer {
-
-	public static INullableTypeComputer INSTANCE = new HiveNullableTypeComputer();
-
-	@Override
-	public Object makeNullableType(Object type) throws AlgebricksException {
-		return type;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivePartialAggregationTypeComputer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivePartialAggregationTypeComputer.java
deleted file mode 100644
index 7062e26..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivePartialAggregationTypeComputer.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.Mode;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IPartialAggregationTypeComputer;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-public class HivePartialAggregationTypeComputer implements
-		IPartialAggregationTypeComputer {
-
-	public static IPartialAggregationTypeComputer INSTANCE = new HivePartialAggregationTypeComputer();
-
-	@Override
-	public Object getType(ILogicalExpression expr,
-			IVariableTypeEnvironment env,
-			IMetadataProvider<?, ?> metadataProvider)
-			throws AlgebricksException {
-		if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-			IExpressionTypeComputer tc = HiveExpressionTypeComputer.INSTANCE;
-			/**
-			 * function expression
-			 */
-			AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-
-			/**
-			 * argument expressions, types, object inspectors
-			 */
-			List<Mutable<ILogicalExpression>> arguments = funcExpr
-					.getArguments();
-			List<TypeInfo> argumentTypes = new ArrayList<TypeInfo>();
-
-			/**
-			 * get types of argument
-			 */
-			for (Mutable<ILogicalExpression> argument : arguments) {
-				TypeInfo type = (TypeInfo) tc.getType(argument.getValue(),
-						metadataProvider, env);
-				argumentTypes.add(type);
-			}
-
-			ObjectInspector[] childrenOIs = new ObjectInspector[argumentTypes
-					.size()];
-
-			/**
-			 * get object inspector
-			 */
-			for (int i = 0; i < argumentTypes.size(); i++) {
-				childrenOIs[i] = TypeInfoUtils
-						.getStandardWritableObjectInspectorFromTypeInfo(argumentTypes
-								.get(i));
-			}
-
-			/**
-			 * type inference for scalar function
-			 */
-			if (funcExpr instanceof AggregateFunctionCallExpression) {
-				/**
-				 * hive aggregation info
-				 */
-				AggregationDesc aggregateDesc = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				/**
-				 * type inference for aggregation function
-				 */
-				GenericUDAFEvaluator result = aggregateDesc
-						.getGenericUDAFEvaluator();
-
-				ObjectInspector returnOI = null;
-				try {
-					returnOI = result.init(
-							getPartialMode(aggregateDesc.getMode()),
-							childrenOIs);
-				} catch (HiveException e) {
-					e.printStackTrace();
-				}
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(returnOI);
-				return exprType;
-			} else {
-				throw new IllegalStateException("illegal expressions "
-						+ expr.getClass().getName());
-			}
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-
-	private Mode getPartialMode(Mode mode) {
-		Mode partialMode;
-		if (mode == Mode.FINAL)
-			partialMode = Mode.PARTIAL2;
-		else if (mode == Mode.COMPLETE)
-			partialMode = Mode.PARTIAL1;
-		else
-			partialMode = mode;
-		return partialMode;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivesterixConstantValue.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivesterixConstantValue.java
deleted file mode 100644
index de9cea6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivesterixConstantValue.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IAlgebricksConstantValue;
-
-public class HivesterixConstantValue implements IAlgebricksConstantValue {
-
-	private Object object;
-
-	public HivesterixConstantValue(Object object) {
-		this.setObject(object);
-	}
-
-	@Override
-	public boolean isFalse() {
-		return object == Boolean.FALSE;
-	}
-
-	@Override
-	public boolean isNull() {
-		return object == null;
-	}
-
-	@Override
-	public boolean isTrue() {
-		return object == Boolean.TRUE;
-	}
-
-	public void setObject(Object object) {
-		this.object = object;
-	}
-
-	public Object getObject() {
-		return object;
-	}
-
-	@Override
-	public String toString() {
-		return object.toString();
-	}
-
-	@Override
-	public boolean equals(Object o) {
-		if (!(o instanceof HivesterixConstantValue)) {
-			return false;
-		}
-		HivesterixConstantValue v2 = (HivesterixConstantValue) o;
-		return object.equals(v2.getObject());
-	}
-
-	@Override
-	public int hashCode() {
-		return object.hashCode();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/Schema.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/Schema.java
deleted file mode 100644
index 2b1d191..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/Schema.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-
-public class Schema implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	private List<String> fieldNames;
-
-	private List<TypeInfo> fieldTypes;
-
-	public Schema(List<String> fieldNames, List<TypeInfo> fieldTypes) {
-		this.fieldNames = fieldNames;
-		this.fieldTypes = fieldTypes;
-	}
-
-	public ObjectInspector toObjectInspector() {
-		return LazyUtils.getLazyObjectInspector(fieldNames, fieldTypes);
-	}
-
-	public List<String> getNames() {
-		return fieldNames;
-	}
-
-	public List<TypeInfo> getTypes() {
-		return fieldTypes;
-	}
-
-	public Object[] getSchema() {
-		return fieldTypes.toArray();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveAlgebricksTranslator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveAlgebricksTranslator.java
deleted file mode 100644
index 2765e44..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveAlgebricksTranslator.java
+++ /dev/null
@@ -1,849 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan;
-
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.UDF;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.plan.api.OperatorType;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.ExpressionConstant;
-import edu.uci.ics.hivesterix.logical.expression.HiveAlgebricksBuiltInFunctionMap;
-import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo;
-import edu.uci.ics.hivesterix.logical.expression.HivesterixConstantValue;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.ExtractVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.FilterVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.GroupByVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.JoinVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.LateralViewJoinVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.LimitVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.MapJoinVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.ProjectVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.SortVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.TableScanWriteVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.UnionVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Visitor;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
-
-@SuppressWarnings("rawtypes")
-public class HiveAlgebricksTranslator implements Translator {
-
-	private int currentVariable = 0;
-
-	private List<Mutable<ILogicalOperator>> logicalOp = new ArrayList<Mutable<ILogicalOperator>>();
-
-	private boolean continueTraverse = true;
-
-	private IMetadataProvider<PartitionDesc, Object> metaData;
-
-	/**
-	 * map variable name to the logical variable
-	 */
-	private HashMap<String, LogicalVariable> nameToLogicalVariableMap = new HashMap<String, LogicalVariable>();
-
-	/**
-	 * map field name to LogicalVariable
-	 */
-	private HashMap<String, LogicalVariable> fieldToLogicalVariableMap = new HashMap<String, LogicalVariable>();
-
-	/**
-	 * map logical variable to name
-	 */
-	private HashMap<LogicalVariable, String> logicalVariableToFieldMap = new HashMap<LogicalVariable, String>();
-
-	/**
-	 * asterix root operators
-	 */
-	private List<Mutable<ILogicalOperator>> rootOperators = new ArrayList<Mutable<ILogicalOperator>>();
-
-	/**
-	 * a list of visitors
-	 */
-	private List<Visitor> visitors = new ArrayList<Visitor>();
-
-	/**
-	 * output writer to print things out
-	 */
-	private static PrintWriter outputWriter = new PrintWriter(
-			new OutputStreamWriter(System.out));
-
-	/**
-	 * map a logical variable to type info
-	 */
-	private HashMap<LogicalVariable, TypeInfo> variableToType = new HashMap<LogicalVariable, TypeInfo>();
-
-	@Override
-	public LogicalVariable getVariable(String fieldName, TypeInfo type) {
-		LogicalVariable var = fieldToLogicalVariableMap.get(fieldName);
-		if (var == null) {
-			currentVariable++;
-			var = new LogicalVariable(currentVariable);
-			fieldToLogicalVariableMap.put(fieldName, var);
-			nameToLogicalVariableMap.put(var.toString(), var);
-			variableToType.put(var, type);
-			logicalVariableToFieldMap.put(var, fieldName);
-		}
-		return var;
-	}
-
-	@Override
-	public LogicalVariable getNewVariable(String fieldName, TypeInfo type) {
-		currentVariable++;
-		LogicalVariable var = new LogicalVariable(currentVariable);
-		fieldToLogicalVariableMap.put(fieldName, var);
-		nameToLogicalVariableMap.put(var.toString(), var);
-		variableToType.put(var, type);
-		logicalVariableToFieldMap.put(var, fieldName);
-		return var;
-	}
-
-	@Override
-	public void replaceVariable(LogicalVariable oldVar, LogicalVariable newVar) {
-		String name = this.logicalVariableToFieldMap.get(oldVar);
-		if (name != null) {
-			fieldToLogicalVariableMap.put(name, newVar);
-			nameToLogicalVariableMap.put(newVar.toString(), newVar);
-			nameToLogicalVariableMap.put(oldVar.toString(), newVar);
-			logicalVariableToFieldMap.put(newVar, name);
-		}
-	}
-
-	@Override
-	public IMetadataProvider<PartitionDesc, Object> getMetadataProvider() {
-		return metaData;
-	}
-
-	/**
-	 * only get an variable, without rewriting it
-	 * 
-	 * @param fieldName
-	 * @return
-	 */
-	private LogicalVariable getVariableOnly(String fieldName) {
-		return fieldToLogicalVariableMap.get(fieldName);
-	}
-
-	private void updateVariable(String fieldName, LogicalVariable variable) {
-		LogicalVariable var = fieldToLogicalVariableMap.get(fieldName);
-		if (var == null) {
-			fieldToLogicalVariableMap.put(fieldName, variable);
-			nameToLogicalVariableMap.put(fieldName, variable);
-		} else if (!var.equals(variable)) {
-			fieldToLogicalVariableMap.put(fieldName, variable);
-			nameToLogicalVariableMap.put(fieldName, variable);
-		}
-	}
-
-	/**
-	 * get a list of logical variables from the schema
-	 * 
-	 * @param schema
-	 * @return
-	 */
-	@Override
-	public List<LogicalVariable> getVariablesFromSchema(Schema schema) {
-		List<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		List<String> names = schema.getNames();
-
-		for (String name : names)
-			variables.add(nameToLogicalVariableMap.get(name));
-		return variables;
-	}
-
-	/**
-	 * get variable to typeinfo map
-	 * 
-	 * @return
-	 */
-	public HashMap<LogicalVariable, TypeInfo> getVariableContext() {
-		return this.variableToType;
-	}
-
-	/**
-	 * get the number of variables s
-	 * 
-	 * @return
-	 */
-	public int getVariableCounter() {
-		return currentVariable + 1;
-	}
-
-	/**
-	 * translate from hive operator tree to asterix operator tree
-	 * 
-	 * @param hive
-	 *            roots
-	 * @return Algebricks roots
-	 */
-	public void translate(List<Operator> hiveRoot,
-			ILogicalOperator parentOperator,
-			HashMap<String, PartitionDesc> aliasToPathMap)
-			throws AlgebricksException {
-		/**
-		 * register visitors
-		 */
-		visitors.add(new FilterVisitor());
-		visitors.add(new GroupByVisitor());
-		visitors.add(new JoinVisitor());
-		visitors.add(new LateralViewJoinVisitor());
-		visitors.add(new UnionVisitor());
-		visitors.add(new LimitVisitor());
-		visitors.add(new MapJoinVisitor());
-		visitors.add(new ProjectVisitor());
-		visitors.add(new SortVisitor());
-		visitors.add(new ExtractVisitor());
-		visitors.add(new TableScanWriteVisitor(aliasToPathMap));
-
-		List<Mutable<ILogicalOperator>> refList = translate(hiveRoot,
-				new MutableObject<ILogicalOperator>(parentOperator));
-		insertReplicateOperator(refList);
-		if (refList != null)
-			rootOperators.addAll(refList);
-	}
-
-	/**
-	 * translate operator DAG
-	 * 
-	 * @param hiveRoot
-	 * @param AlgebricksParentOperator
-	 * @return
-	 */
-	private List<Mutable<ILogicalOperator>> translate(List<Operator> hiveRoot,
-			Mutable<ILogicalOperator> AlgebricksParentOperator)
-			throws AlgebricksException {
-
-		for (Operator hiveOperator : hiveRoot) {
-			continueTraverse = true;
-			Mutable<ILogicalOperator> currentOperatorRef = null;
-			if (hiveOperator.getType() == OperatorType.FILTER) {
-				FilterOperator fop = (FilterOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.REDUCESINK) {
-				ReduceSinkOperator fop = (ReduceSinkOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.JOIN) {
-				JoinOperator fop = (JoinOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null) {
-						continueTraverse = true;
-						break;
-					} else
-						continueTraverse = false;
-				}
-				if (currentOperatorRef == null)
-					return null;
-			} else if (hiveOperator.getType() == OperatorType.LATERALVIEWJOIN) {
-				LateralViewJoinOperator fop = (LateralViewJoinOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-				if (currentOperatorRef == null)
-					return null;
-			} else if (hiveOperator.getType() == OperatorType.MAPJOIN) {
-				MapJoinOperator fop = (MapJoinOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null) {
-						continueTraverse = true;
-						break;
-					} else
-						continueTraverse = false;
-				}
-				if (currentOperatorRef == null)
-					return null;
-			} else if (hiveOperator.getType() == OperatorType.SELECT) {
-				SelectOperator fop = (SelectOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.EXTRACT) {
-				ExtractOperator fop = (ExtractOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.GROUPBY) {
-				GroupByOperator fop = (GroupByOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.TABLESCAN) {
-				TableScanOperator fop = (TableScanOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.FILESINK) {
-				FileSinkOperator fop = (FileSinkOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.LIMIT) {
-				LimitOperator lop = (LimitOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(lop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.UDTF) {
-				UDTFOperator lop = (UDTFOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(lop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.UNION) {
-				UnionOperator lop = (UnionOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(lop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null) {
-						continueTraverse = true;
-						break;
-					} else
-						continueTraverse = false;
-				}
-			} else
-				;
-			if (hiveOperator.getChildOperators() != null
-					&& hiveOperator.getChildOperators().size() > 0
-					&& continueTraverse) {
-				@SuppressWarnings("unchecked")
-				List<Operator> children = hiveOperator.getChildOperators();
-				if (currentOperatorRef == null)
-					currentOperatorRef = AlgebricksParentOperator;
-				translate(children, currentOperatorRef);
-			}
-			if (hiveOperator.getChildOperators() == null
-					|| hiveOperator.getChildOperators().size() == 0)
-				logicalOp.add(currentOperatorRef);
-		}
-		return logicalOp;
-	}
-
-	/**
-	 * used in select, group by to get no-column-expression columns
-	 * 
-	 * @param cols
-	 * @return
-	 */
-	public ILogicalOperator getAssignOperator(Mutable<ILogicalOperator> parent,
-			List<ExprNodeDesc> cols, ArrayList<LogicalVariable> variables) {
-
-		ArrayList<Mutable<ILogicalExpression>> expressions = new ArrayList<Mutable<ILogicalExpression>>();
-
-		/**
-		 * variables to be appended in the assign operator
-		 */
-		ArrayList<LogicalVariable> appendedVariables = new ArrayList<LogicalVariable>();
-
-		// one variable can only be assigned once
-		for (ExprNodeDesc hiveExpr : cols) {
-			rewriteExpression(hiveExpr);
-
-			if (hiveExpr instanceof ExprNodeColumnDesc) {
-				ExprNodeColumnDesc desc2 = (ExprNodeColumnDesc) hiveExpr;
-				String fieldName = desc2.getTabAlias() + "."
-						+ desc2.getColumn();
-
-				// System.out.println("project expr: " + fieldName);
-
-				if (fieldName.indexOf("$$") < 0) {
-					LogicalVariable var = getVariable(fieldName,
-							hiveExpr.getTypeInfo());
-					desc2.setColumn(var.toString());
-					desc2.setTabAlias("");
-					variables.add(var);
-				} else {
-					LogicalVariable var = nameToLogicalVariableMap.get(desc2
-							.getColumn());
-					String name = this.logicalVariableToFieldMap.get(var);
-					var = this.getVariableOnly(name);
-					variables.add(var);
-				}
-			} else {
-				Mutable<ILogicalExpression> asterixExpr = translateScalarFucntion(hiveExpr);
-				expressions.add(asterixExpr);
-				LogicalVariable var = getVariable(hiveExpr.getExprString()
-						+ asterixExpr.hashCode(), hiveExpr.getTypeInfo());
-				variables.add(var);
-				appendedVariables.add(var);
-			}
-		}
-
-		/**
-		 * create an assign operator to deal with appending
-		 */
-		ILogicalOperator assignOp = null;
-		if (appendedVariables.size() > 0) {
-			assignOp = new AssignOperator(appendedVariables, expressions);
-			assignOp.getInputs().add(parent);
-		}
-		return assignOp;
-	}
-
-	private ILogicalPlan plan;
-
-	public ILogicalPlan genLogicalPlan() {
-		plan = new ALogicalPlanImpl(rootOperators);
-		return plan;
-	}
-
-	public void printOperators() throws AlgebricksException {
-		LogicalOperatorPrettyPrintVisitor pvisitor = new LogicalOperatorPrettyPrintVisitor();
-		StringBuilder buffer = new StringBuilder();
-		PlanPrettyPrinter.printPlan(plan, buffer, pvisitor, 0);
-		outputWriter.println(buffer);
-		outputWriter.println("rewritten variables: ");
-		outputWriter.flush();
-		printVariables();
-
-	}
-
-	public static void setOutputPrinter(PrintWriter writer) {
-		outputWriter = writer;
-	}
-
-	private void printVariables() {
-		Set<Entry<String, LogicalVariable>> entries = fieldToLogicalVariableMap
-				.entrySet();
-
-		for (Entry<String, LogicalVariable> entry : entries) {
-			outputWriter.println(entry.getKey() + " -> " + entry.getValue());
-		}
-		outputWriter.flush();
-	}
-
-	/**
-	 * generate the object inspector for the output of an operator
-	 * 
-	 * @param operator
-	 *            The Hive operator
-	 * @return an ObjectInspector object
-	 */
-	public Schema generateInputSchema(Operator operator) {
-		List<String> variableNames = new ArrayList<String>();
-		List<TypeInfo> typeList = new ArrayList<TypeInfo>();
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-
-		for (ColumnInfo col : columns) {
-			// typeList.add();
-			TypeInfo type = col.getType();
-			typeList.add(type);
-
-			String fieldName = col.getInternalName();
-			variableNames.add(fieldName);
-		}
-
-		return new Schema(variableNames, typeList);
-	}
-
-	/**
-	 * rewrite the names of output columns for feature expression evaluators to
-	 * use
-	 * 
-	 * @param operator
-	 */
-	public void rewriteOperatorOutputSchema(Operator operator) {
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-
-		for (ColumnInfo column : columns) {
-			String columnName = column.getTabAlias() + "."
-					+ column.getInternalName();
-			if (columnName.indexOf("$$") < 0) {
-				LogicalVariable var = getVariable(columnName, column.getType());
-				column.setInternalName(var.toString());
-			}
-		}
-	}
-
-	@Override
-	public void rewriteOperatorOutputSchema(List<LogicalVariable> variables,
-			Operator operator) {
-
-		//printOperatorSchema(operator);
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-		if (variables.size() != columns.size()) {
-			throw new IllegalStateException("output cardinality error "
-					+ operator.getName() + " variable size: "
-					+ variables.size() + " expected " + columns.size());
-		}
-
-		for (int i = 0; i < variables.size(); i++) {
-			LogicalVariable var = variables.get(i);
-			ColumnInfo column = columns.get(i);
-			String fieldName = column.getTabAlias() + "."
-					+ column.getInternalName();
-			if (fieldName.indexOf("$$") < 0) {
-				updateVariable(fieldName, var);
-				column.setInternalName(var.toString());
-			}
-		}
-		//printOperatorSchema(operator);
-	}
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpression(ExprNodeDesc expr) {
-		if (expr instanceof ExprNodeColumnDesc) {
-			ExprNodeColumnDesc desc = (ExprNodeColumnDesc) expr;
-			String fieldName = desc.getTabAlias() + "." + desc.getColumn();
-			if (fieldName.indexOf("$$") < 0) {
-				LogicalVariable var = getVariableOnly(fieldName);
-				if (var == null) {
-					fieldName = "." + desc.getColumn();
-					var = getVariableOnly(fieldName);
-					if (var == null) {
-						fieldName = "null." + desc.getColumn();
-						var = getVariableOnly(fieldName);
-						if (var == null) {
-							throw new IllegalStateException(fieldName
-									+ " is wrong!!! ");
-						}
-					}
-				}
-				String name = this.logicalVariableToFieldMap.get(var);
-				var = getVariableOnly(name);
-				desc.setColumn(var.toString());
-			}
-		} else {
-			if (expr.getChildren() != null && expr.getChildren().size() > 0) {
-				List<ExprNodeDesc> children = expr.getChildren();
-				for (ExprNodeDesc desc : children)
-					rewriteExpression(desc);
-			}
-		}
-	}
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpressionPartial(ExprNodeDesc expr) {
-		if (expr instanceof ExprNodeColumnDesc) {
-			ExprNodeColumnDesc desc = (ExprNodeColumnDesc) expr;
-			String fieldName = desc.getTabAlias() + "." + desc.getColumn();
-			if (fieldName.indexOf("$$") < 0) {
-				LogicalVariable var = getVariableOnly(fieldName);
-				desc.setColumn(var.toString());
-			}
-		} else {
-			if (expr.getChildren() != null && expr.getChildren().size() > 0) {
-				List<ExprNodeDesc> children = expr.getChildren();
-				for (ExprNodeDesc desc : children)
-					rewriteExpressionPartial(desc);
-			}
-		}
-	}
-
-	// private void printOperatorSchema(Operator operator) {
-	// // System.out.println(operator.getName());
-	// // List<ColumnInfo> columns = operator.getSchema().getSignature();
-	// // for (ColumnInfo column : columns) {
-	// // System.out.print(column.getTabAlias() + "." +
-	// // column.getInternalName() + "  ");
-	// // }
-	// // System.out.println();
-	// }
-
-	/**
-	 * translate scalar function expression
-	 * 
-	 * @param hiveExpr
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateScalarFucntion(
-			ExprNodeDesc hiveExpr) {
-		ILogicalExpression AlgebricksExpr;
-
-		if (hiveExpr instanceof ExprNodeGenericFuncDesc) {
-			List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
-			List<ExprNodeDesc> children = hiveExpr.getChildren();
-
-			for (ExprNodeDesc child : children)
-				arguments.add(translateScalarFucntion(child));
-
-			ExprNodeGenericFuncDesc funcExpr = (ExprNodeGenericFuncDesc) hiveExpr;
-			GenericUDF genericUdf = funcExpr.getGenericUDF();
-			UDF udf = null;
-			if (genericUdf instanceof GenericUDFBridge) {
-				GenericUDFBridge bridge = (GenericUDFBridge) genericUdf;
-				try {
-					udf = bridge.getUdfClass().newInstance();
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-
-			/**
-			 * set up the hive function
-			 */
-			Object hiveFunction = genericUdf;
-			if (udf != null)
-				hiveFunction = udf;
-
-			FunctionIdentifier funcId = HiveAlgebricksBuiltInFunctionMap.INSTANCE
-					.getAlgebricksFunctionId(hiveFunction.getClass());
-			if (funcId == null) {
-				funcId = new FunctionIdentifier(ExpressionConstant.NAMESPACE,
-						hiveFunction.getClass().getName());
-			}
-
-			Object functionInfo = null;
-			if (genericUdf instanceof GenericUDFBridge) {
-				functionInfo = funcExpr;
-			}
-
-			/**
-			 * generate the function call expression
-			 */
-			ScalarFunctionCallExpression AlgebricksFuncExpr = new ScalarFunctionCallExpression(
-					new HiveFunctionInfo(funcId, functionInfo), arguments);
-			AlgebricksExpr = AlgebricksFuncExpr;
-
-		} else if (hiveExpr instanceof ExprNodeColumnDesc) {
-			ExprNodeColumnDesc column = (ExprNodeColumnDesc) hiveExpr;
-			LogicalVariable var = this.getVariable(column.getColumn());
-			AlgebricksExpr = new VariableReferenceExpression(var);
-
-		} else if (hiveExpr instanceof ExprNodeFieldDesc) {
-			FunctionIdentifier funcId;
-			funcId = new FunctionIdentifier(ExpressionConstant.NAMESPACE,
-					ExpressionConstant.FIELDACCESS);
-
-			ScalarFunctionCallExpression AlgebricksFuncExpr = new ScalarFunctionCallExpression(
-					new HiveFunctionInfo(funcId, hiveExpr));
-			AlgebricksExpr = AlgebricksFuncExpr;
-		} else if (hiveExpr instanceof ExprNodeConstantDesc) {
-			ExprNodeConstantDesc hiveConst = (ExprNodeConstantDesc) hiveExpr;
-			Object value = hiveConst.getValue();
-			AlgebricksExpr = new ConstantExpression(
-					new HivesterixConstantValue(value));
-		} else if (hiveExpr instanceof ExprNodeNullDesc) {
-			FunctionIdentifier funcId;
-			funcId = new FunctionIdentifier(ExpressionConstant.NAMESPACE,
-					ExpressionConstant.NULL);
-
-			ScalarFunctionCallExpression AlgebricksFuncExpr = new ScalarFunctionCallExpression(
-					new HiveFunctionInfo(funcId, hiveExpr));
-
-			AlgebricksExpr = AlgebricksFuncExpr;
-		} else {
-			throw new IllegalStateException("unknown hive expression");
-		}
-		return new MutableObject<ILogicalExpression>(AlgebricksExpr);
-	}
-
-	/**
-	 * translate aggregation function expression
-	 * 
-	 * @param aggregateDesc
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateAggregation(
-			AggregationDesc aggregateDesc) {
-
-		String UDAFName = aggregateDesc.getGenericUDAFName();
-
-		List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
-		List<ExprNodeDesc> children = aggregateDesc.getParameters();
-
-		for (ExprNodeDesc child : children)
-			arguments.add(translateScalarFucntion(child));
-
-		FunctionIdentifier funcId = new FunctionIdentifier(
-				ExpressionConstant.NAMESPACE, UDAFName + "("
-						+ aggregateDesc.getMode() + ")");
-		HiveFunctionInfo funcInfo = new HiveFunctionInfo(funcId, aggregateDesc);
-		AggregateFunctionCallExpression aggregationExpression = new AggregateFunctionCallExpression(
-				funcInfo, false, arguments);
-		return new MutableObject<ILogicalExpression>(aggregationExpression);
-	}
-
-	/**
-	 * translate aggregation function expression
-	 * 
-	 * @param aggregator
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateUnnestFunction(
-			UDTFDesc udtfDesc, Mutable<ILogicalExpression> argument) {
-
-		String UDTFName = udtfDesc.getUDTFName();
-
-		FunctionIdentifier funcId = new FunctionIdentifier(
-				ExpressionConstant.NAMESPACE, UDTFName);
-		UnnestingFunctionCallExpression unnestingExpression = new UnnestingFunctionCallExpression(
-				new HiveFunctionInfo(funcId, udtfDesc));
-		unnestingExpression.getArguments().add(argument);
-		return new MutableObject<ILogicalExpression>(unnestingExpression);
-	}
-
-	/**
-	 * get typeinfo
-	 */
-	@Override
-	public TypeInfo getType(LogicalVariable var) {
-		return variableToType.get(var);
-	}
-
-	/**
-	 * get variable from variable name
-	 */
-	@Override
-	public LogicalVariable getVariable(String name) {
-		return nameToLogicalVariableMap.get(name);
-	}
-
-	@Override
-	public LogicalVariable getVariableFromFieldName(String fieldName) {
-		return this.getVariableOnly(fieldName);
-	}
-
-	/**
-	 * set the metadata provider
-	 */
-	@Override
-	public void setMetadataProvider(
-			IMetadataProvider<PartitionDesc, Object> metadata) {
-		this.metaData = metadata;
-	}
-
-	/**
-	 * insert ReplicateOperator when necessary
-	 */
-	private void insertReplicateOperator(List<Mutable<ILogicalOperator>> roots) {
-		Map<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>> childToParentsMap = new HashMap<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>>();
-		buildChildToParentsMapping(roots, childToParentsMap);
-		for (Entry<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>> entry : childToParentsMap
-				.entrySet()) {
-			List<Mutable<ILogicalOperator>> pList = entry.getValue();
-			if (pList.size() > 1) {
-				ILogicalOperator rop = new ReplicateOperator(pList.size());
-				Mutable<ILogicalOperator> ropRef = new MutableObject<ILogicalOperator>(
-						rop);
-				Mutable<ILogicalOperator> childRef = entry.getKey();
-				rop.getInputs().add(childRef);
-				for (Mutable<ILogicalOperator> parentRef : pList) {
-					ILogicalOperator parentOp = parentRef.getValue();
-					int index = parentOp.getInputs().indexOf(childRef);
-					parentOp.getInputs().set(index, ropRef);
-				}
-			}
-		}
-	}
-
-	/**
-	 * build the mapping from child to Parents
-	 * 
-	 * @param roots
-	 * @param childToParentsMap
-	 */
-	private void buildChildToParentsMapping(
-			List<Mutable<ILogicalOperator>> roots,
-			Map<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>> map) {
-		for (Mutable<ILogicalOperator> opRef : roots) {
-			List<Mutable<ILogicalOperator>> childRefs = opRef.getValue()
-					.getInputs();
-			for (Mutable<ILogicalOperator> childRef : childRefs) {
-				List<Mutable<ILogicalOperator>> parentList = map.get(childRef);
-				if (parentList == null) {
-					parentList = new ArrayList<Mutable<ILogicalOperator>>();
-					map.put(childRef, parentList);
-				}
-				if (!parentList.contains(opRef))
-					parentList.add(opRef);
-			}
-			buildChildToParentsMapping(childRefs, map);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveLogicalPlanAndMetaData.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveLogicalPlanAndMetaData.java
deleted file mode 100644
index 494e796..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveLogicalPlanAndMetaData.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan;
-
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlanAndMetadata;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class HiveLogicalPlanAndMetaData implements ILogicalPlanAndMetadata {
-
-	IMetadataProvider metadata;
-	ILogicalPlan plan;
-
-	public HiveLogicalPlanAndMetaData(ILogicalPlan plan,
-			IMetadataProvider metadata) {
-		this.plan = plan;
-		this.metadata = metadata;
-	}
-
-	@Override
-	public IMetadataProvider getMetadataProvider() {
-		return metadata;
-	}
-
-	@Override
-	public ILogicalPlan getPlan() {
-		return plan;
-	}
-
-	@Override
-	public AlgebricksPartitionConstraint getClusterLocations() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveOperatorAnnotations.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveOperatorAnnotations.java
deleted file mode 100644
index 0d234fb..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveOperatorAnnotations.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan;
-
-public class HiveOperatorAnnotations {
-
-	// hints
-	public static final String LOCAL_GROUP_BY = "LOCAL_GROUP_BY";
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ExtractVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ExtractVisitor.java
deleted file mode 100644
index 9a84164..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ExtractVisitor.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-
-public class ExtractVisitor extends DefaultVisitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ExtractOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/FilterVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/FilterVisitor.java
deleted file mode 100644
index b276ba9..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/FilterVisitor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.FilterDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
-
-public class FilterVisitor extends DefaultVisitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(FilterOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-
-		FilterDesc desc = (FilterDesc) operator.getConf();
-		ExprNodeDesc predicate = desc.getPredicate();
-		t.rewriteExpression(predicate);
-
-		Mutable<ILogicalExpression> exprs = t.translateScalarFucntion(desc
-				.getPredicate());
-		ILogicalOperator currentOperator = new SelectOperator(exprs);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-
-		// populate the schema from upstream operator
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/GroupByVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/GroupByVisitor.java
deleted file mode 100644
index d2180a3..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/GroupByVisitor.java
+++ /dev/null
@@ -1,291 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.GroupByDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
-import org.apache.hadoop.hive.ql.plan.api.OperatorType;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.Mode;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.HiveOperatorAnnotations;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.OperatorAnnotations;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class GroupByVisitor extends DefaultVisitor {
-
-	private List<Mutable<ILogicalExpression>> AlgebricksAggs = new ArrayList<Mutable<ILogicalExpression>>();
-	private List<IFunctionInfo> localAggs = new ArrayList<IFunctionInfo>();
-	private boolean isDistinct = false;
-	private boolean gbyKeyNotRedKey = false;
-
-	@Override
-	public Mutable<ILogicalOperator> visit(GroupByOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException {
-
-		// get descriptors
-		GroupByDesc desc = (GroupByDesc) operator.getConf();
-		GroupByDesc.Mode mode = desc.getMode();
-
-		List<ExprNodeDesc> keys = desc.getKeys();
-		List<AggregationDesc> aggregators = desc.getAggregators();
-
-		Operator child = operator.getChildOperators().get(0);
-
-		if (child.getType() == OperatorType.REDUCESINK) {
-			List<ExprNodeDesc> partKeys = ((ReduceSinkDesc) child.getConf())
-					.getPartitionCols();
-			if (keys.size() != partKeys.size())
-				gbyKeyNotRedKey = true;
-		}
-
-		if (mode == GroupByDesc.Mode.PARTIAL1 || mode == GroupByDesc.Mode.HASH
-				|| mode == GroupByDesc.Mode.COMPLETE
-				|| (aggregators.size() == 0 && isDistinct == false)
-				|| gbyKeyNotRedKey) {
-			AlgebricksAggs.clear();
-			// add an assign operator if the key is not a column expression
-			ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-			ILogicalOperator currentOperator = null;
-			ILogicalOperator assignOperator = t.getAssignOperator(
-					AlgebricksParentOperatorRef, keys, keyVariables);
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-
-			// get key variable expression list
-			List<Mutable<ILogicalExpression>> keyExprs = new ArrayList<Mutable<ILogicalExpression>>();
-			for (LogicalVariable var : keyVariables) {
-				keyExprs.add(t.translateScalarFucntion(new ExprNodeColumnDesc(
-						TypeInfoFactory.intTypeInfo, var.toString(), "", false)));
-			}
-
-			if (aggregators.size() == 0) {
-				List<Mutable<ILogicalExpression>> distinctExprs = new ArrayList<Mutable<ILogicalExpression>>();
-				for (LogicalVariable var : keyVariables) {
-					Mutable<ILogicalExpression> varExpr = new MutableObject<ILogicalExpression>(
-							new VariableReferenceExpression(var));
-					distinctExprs.add(varExpr);
-				}
-				t.rewriteOperatorOutputSchema(keyVariables, operator);
-				isDistinct = true;
-				ILogicalOperator lop = new DistinctOperator(distinctExprs);
-				lop.getInputs().add(AlgebricksParentOperatorRef);
-				return new MutableObject<ILogicalOperator>(lop);
-			}
-
-			// get the pair<LogicalVariable, ILogicalExpression> list
-			List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> keyParameters = new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>();
-			keyVariables.clear();
-			for (Mutable<ILogicalExpression> expr : keyExprs) {
-				LogicalVariable keyVar = t.getVariable(expr.getValue()
-						.toString(), TypeInfoFactory.unknownTypeInfo);
-				keyParameters.add(new Pair(keyVar, expr));
-				keyVariables.add(keyVar);
-			}
-
-			// get the parameters for the aggregator operator
-			ArrayList<LogicalVariable> aggVariables = new ArrayList<LogicalVariable>();
-			ArrayList<Mutable<ILogicalExpression>> aggExprs = new ArrayList<Mutable<ILogicalExpression>>();
-
-			// get the type of each aggregation function
-			HashMap<AggregationDesc, TypeInfo> aggToType = new HashMap<AggregationDesc, TypeInfo>();
-			List<ColumnInfo> columns = operator.getSchema().getSignature();
-			int offset = keys.size();
-			for (int i = offset; i < columns.size(); i++) {
-				aggToType.put(aggregators.get(i - offset), columns.get(i)
-						.getType());
-			}
-
-			localAggs.clear();
-			// rewrite parameter expressions for all aggregators
-			for (AggregationDesc aggregator : aggregators) {
-				for (ExprNodeDesc parameter : aggregator.getParameters()) {
-					t.rewriteExpression(parameter);
-				}
-				Mutable<ILogicalExpression> aggExpr = t
-						.translateAggregation(aggregator);
-				AbstractFunctionCallExpression localAggExpr = (AbstractFunctionCallExpression) aggExpr
-						.getValue();
-				localAggs.add(localAggExpr.getFunctionInfo());
-
-				AggregationDesc logicalAgg = new AggregationDesc(
-						aggregator.getGenericUDAFName(),
-						aggregator.getGenericUDAFEvaluator(),
-						aggregator.getParameters(), aggregator.getDistinct(),
-						Mode.COMPLETE);
-				Mutable<ILogicalExpression> logicalAggExpr = t
-						.translateAggregation(logicalAgg);
-
-				AlgebricksAggs.add(logicalAggExpr);
-				if (!gbyKeyNotRedKey)
-					aggExprs.add(logicalAggExpr);
-				else
-					aggExprs.add(aggExpr);
-
-				aggVariables.add(t.getVariable(aggregator.getExprString()
-						+ aggregator.getMode(), aggToType.get(aggregator)));
-			}
-
-			if (child.getType() != OperatorType.REDUCESINK)
-				gbyKeyNotRedKey = false;
-
-			// get the sub plan list
-			AggregateOperator aggOperator = new AggregateOperator(aggVariables,
-					aggExprs);
-			NestedTupleSourceOperator nestedTupleSource = new NestedTupleSourceOperator(
-					new MutableObject<ILogicalOperator>());
-			aggOperator.getInputs().add(
-					new MutableObject<ILogicalOperator>(nestedTupleSource));
-
-			List<Mutable<ILogicalOperator>> subRoots = new ArrayList<Mutable<ILogicalOperator>>();
-			subRoots.add(new MutableObject<ILogicalOperator>(aggOperator));
-			ILogicalPlan subPlan = new ALogicalPlanImpl(subRoots);
-			List<ILogicalPlan> subPlans = new ArrayList<ILogicalPlan>();
-			subPlans.add(subPlan);
-
-			// create the group by operator
-			currentOperator = new edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator(
-					keyParameters,
-					new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>(),
-					subPlans);
-			currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-			nestedTupleSource.getDataSourceReference()
-					.setValue(currentOperator);
-
-			List<LogicalVariable> outputVariables = new ArrayList<LogicalVariable>();
-			outputVariables.addAll(keyVariables);
-			outputVariables.addAll(aggVariables);
-			t.rewriteOperatorOutputSchema(outputVariables, operator);
-
-			if (gbyKeyNotRedKey) {
-				currentOperator.getAnnotations().put(
-						HiveOperatorAnnotations.LOCAL_GROUP_BY, Boolean.TRUE);
-			}
-
-			HiveConf conf = ConfUtil.getHiveConf();
-			Boolean extGby = conf.getBoolean(
-					"hive.algebricks.groupby.external", false);
-
-			if (extGby && isSerializable(aggregators)) {
-				currentOperator.getAnnotations()
-						.put(OperatorAnnotations.USE_EXTERNAL_GROUP_BY,
-								Boolean.TRUE);
-			}
-			return new MutableObject<ILogicalOperator>(currentOperator);
-		} else {
-			isDistinct = false;
-			// rewrite parameter expressions for all aggregators
-			int i = 0;
-			for (AggregationDesc aggregator : aggregators) {
-				for (ExprNodeDesc parameter : aggregator.getParameters()) {
-					t.rewriteExpression(parameter);
-				}
-				Mutable<ILogicalExpression> agg = t
-						.translateAggregation(aggregator);
-				AggregateFunctionCallExpression originalAgg = (AggregateFunctionCallExpression) AlgebricksAggs
-						.get(i).getValue();
-				originalAgg.setStepOneAggregate(localAggs.get(i));
-				AggregateFunctionCallExpression currentAgg = (AggregateFunctionCallExpression) agg
-						.getValue();
-				if (currentAgg.getFunctionInfo() != null) {
-					originalAgg.setTwoStep(true);
-					originalAgg.setStepTwoAggregate(currentAgg
-							.getFunctionInfo());
-				}
-				i++;
-			}
-			return null;
-		}
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Operator downStream = (Operator) operator.getChildOperators().get(0);
-		if (!(downStream instanceof GroupByOperator)) {
-			return null;
-		}
-
-		ReduceSinkDesc desc = (ReduceSinkDesc) operator.getConf();
-		List<ExprNodeDesc> keys = desc.getKeyCols();
-		List<ExprNodeDesc> values = desc.getValueCols();
-
-		// insert assign for keys
-		ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-		t.getAssignOperator(AlgebricksParentOperatorRef, keys, keyVariables);
-
-		// insert assign for values
-		ArrayList<LogicalVariable> valueVariables = new ArrayList<LogicalVariable>();
-		t.getAssignOperator(AlgebricksParentOperatorRef, values, valueVariables);
-
-		ArrayList<LogicalVariable> columns = new ArrayList<LogicalVariable>();
-		columns.addAll(keyVariables);
-		columns.addAll(valueVariables);
-
-		t.rewriteOperatorOutputSchema(columns, operator);
-		return null;
-	}
-
-	private boolean isSerializable(List<AggregationDesc> descs)
-			throws AlgebricksException {
-		try {
-			for (AggregationDesc desc : descs) {
-				GenericUDAFEvaluator udaf = desc.getGenericUDAFEvaluator();
-				AggregationBuffer buf = udaf.getNewAggregationBuffer();
-				Class<?> bufferClass = buf.getClass();
-				Field[] fields = bufferClass.getDeclaredFields();
-				for (Field field : fields) {
-					field.setAccessible(true);
-					String type = field.getType().toString();
-					if (!(type.equals("int") || type.equals("long")
-							|| type.equals("float") || type.equals("double") || type
-								.equals("boolean"))) {
-						return false;
-					}
-				}
-
-			}
-			return true;
-		} catch (Exception e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/JoinVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/JoinVisitor.java
deleted file mode 100644
index aea4be5..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/JoinVisitor.java
+++ /dev/null
@@ -1,445 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.JoinCondDesc;
-import org.apache.hadoop.hive.ql.plan.JoinDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-
-@SuppressWarnings("rawtypes")
-public class JoinVisitor extends DefaultVisitor {
-
-	/**
-	 * reduce sink operator to variables
-	 */
-	private HashMap<Operator, List<LogicalVariable>> reduceSinkToKeyVariables = new HashMap<Operator, List<LogicalVariable>>();
-
-	/**
-	 * reduce sink operator to variables
-	 */
-	private HashMap<Operator, List<String>> reduceSinkToFieldNames = new HashMap<Operator, List<String>>();
-
-	/**
-	 * reduce sink operator to variables
-	 */
-	private HashMap<Operator, List<TypeInfo>> reduceSinkToTypes = new HashMap<Operator, List<TypeInfo>>();
-
-	/**
-	 * map a join operator (in hive) to its parent operators (in hive)
-	 */
-	private HashMap<Operator, List<Operator>> operatorToHiveParents = new HashMap<Operator, List<Operator>>();
-
-	/**
-	 * map a join operator (in hive) to its parent operators (in asterix)
-	 */
-	private HashMap<Operator, List<ILogicalOperator>> operatorToAsterixParents = new HashMap<Operator, List<ILogicalOperator>>();
-
-	/**
-	 * the latest traversed reduce sink operator
-	 */
-	private Operator latestReduceSink = null;
-
-	/**
-	 * the latest generated parent for join
-	 */
-	private ILogicalOperator latestAlgebricksOperator = null;
-
-	/**
-	 * process a join operator
-	 */
-	@Override
-	public Mutable<ILogicalOperator> visit(JoinOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t) {
-		latestAlgebricksOperator = AlgebricksParentOperator.getValue();
-		translateJoinOperatorPreprocess(operator, t);
-		List<Operator> parents = operatorToHiveParents.get(operator);
-		if (parents.size() < operator.getParentOperators().size()) {
-			return null;
-		} else {
-			ILogicalOperator joinOp = translateJoinOperator(operator,
-					AlgebricksParentOperator, t);
-			// clearStatus();
-			return new MutableObject<ILogicalOperator>(joinOp);
-		}
-	}
-
-	private void reorder(Byte[] order, List<ILogicalOperator> parents,
-			List<Operator> hiveParents) {
-		ILogicalOperator[] lops = new ILogicalOperator[parents.size()];
-		Operator[] ops = new Operator[hiveParents.size()];
-
-		for (Operator op : hiveParents) {
-			ReduceSinkOperator rop = (ReduceSinkOperator) op;
-			ReduceSinkDesc rdesc = rop.getConf();
-			int tag = rdesc.getTag();
-
-			int index = -1;
-			for (int i = 0; i < order.length; i++)
-				if (order[i] == tag) {
-					index = i;
-					break;
-				}
-			lops[index] = parents.get(hiveParents.indexOf(op));
-			ops[index] = op;
-		}
-
-		parents.clear();
-		hiveParents.clear();
-
-		for (int i = 0; i < lops.length; i++) {
-			parents.add(lops[i]);
-			hiveParents.add(ops[i]);
-		}
-	}
-
-	/**
-	 * translate a hive join operator to asterix join operator->assign
-	 * operator->project operator
-	 * 
-	 * @param parentOperator
-	 * @param operator
-	 * @return
-	 */
-	private ILogicalOperator translateJoinOperator(Operator operator,
-			Mutable<ILogicalOperator> parentOperator, Translator t) {
-
-		JoinDesc joinDesc = (JoinDesc) operator.getConf();
-
-		// get the projection expression (already re-written) from each source
-		// table
-		Map<Byte, List<ExprNodeDesc>> exprMap = joinDesc.getExprs();
-		reorder(joinDesc.getTagOrder(), operatorToAsterixParents.get(operator),
-				operatorToHiveParents.get(operator));
-
-		// make an reduce join operator
-		ILogicalOperator currentOperator = generateJoinTree(
-				joinDesc.getCondsList(),
-				operatorToAsterixParents.get(operator),
-				operatorToHiveParents.get(operator), 0, t);
-		parentOperator = new MutableObject<ILogicalOperator>(currentOperator);
-
-		// add assign and project operator on top of a join
-		// output variables
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		Set<Entry<Byte, List<ExprNodeDesc>>> entries = exprMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> iterator = entries.iterator();
-		while (iterator.hasNext()) {
-			List<ExprNodeDesc> outputExprs = iterator.next().getValue();
-			ILogicalOperator assignOperator = t.getAssignOperator(
-					parentOperator, outputExprs, variables);
-
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				parentOperator = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-		}
-
-		ILogicalOperator po = new ProjectOperator(variables);
-		po.getInputs().add(parentOperator);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		return po;
-	}
-
-	/**
-	 * deal with reduce sink operator for the case of join
-	 */
-	@Override
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator operator,
-			Mutable<ILogicalOperator> parentOperator, Translator t) {
-
-		Operator downStream = (Operator) operator.getChildOperators().get(0);
-		if (!(downStream instanceof JoinOperator))
-			return null;
-
-		ReduceSinkDesc desc = (ReduceSinkDesc) operator.getConf();
-		List<ExprNodeDesc> keys = desc.getKeyCols();
-		List<ExprNodeDesc> values = desc.getValueCols();
-		List<ExprNodeDesc> partitionCols = desc.getPartitionCols();
-
-		/**
-		 * rewrite key, value, paritioncol expressions
-		 */
-		for (ExprNodeDesc key : keys)
-			t.rewriteExpression(key);
-		for (ExprNodeDesc value : values)
-			t.rewriteExpression(value);
-		for (ExprNodeDesc col : partitionCols)
-			t.rewriteExpression(col);
-
-		ILogicalOperator currentOperator = null;
-
-		// add assign operator for keys if necessary
-		ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-		ILogicalOperator assignOperator = t.getAssignOperator(parentOperator,
-				keys, keyVariables);
-		if (assignOperator != null) {
-			currentOperator = assignOperator;
-			parentOperator = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		// add assign operator for values if necessary
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		assignOperator = t.getAssignOperator(parentOperator, values, variables);
-		if (assignOperator != null) {
-			currentOperator = assignOperator;
-			parentOperator = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		// unified schema: key, value
-		ArrayList<LogicalVariable> unifiedKeyValues = new ArrayList<LogicalVariable>();
-		unifiedKeyValues.addAll(keyVariables);
-		for (LogicalVariable value : variables)
-			if (keyVariables.indexOf(value) < 0)
-				unifiedKeyValues.add(value);
-
-		// insert projection operator, it is a *must*,
-		// in hive, reduce sink sometimes also do the projection operator's
-		// task
-		currentOperator = new ProjectOperator(unifiedKeyValues);
-		currentOperator.getInputs().add(parentOperator);
-		parentOperator = new MutableObject<ILogicalOperator>(currentOperator);
-
-		reduceSinkToKeyVariables.put(operator, keyVariables);
-		List<String> fieldNames = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		for (LogicalVariable var : unifiedKeyValues) {
-			fieldNames.add(var.toString());
-			types.add(t.getType(var));
-		}
-		reduceSinkToFieldNames.put(operator, fieldNames);
-		reduceSinkToTypes.put(operator, types);
-		t.rewriteOperatorOutputSchema(variables, operator);
-
-		latestAlgebricksOperator = currentOperator;
-		latestReduceSink = operator;
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-	/**
-	 * partial rewrite a join operator
-	 * 
-	 * @param operator
-	 * @param t
-	 */
-	private void translateJoinOperatorPreprocess(Operator operator, Translator t) {
-		JoinDesc desc = (JoinDesc) operator.getConf();
-		ReduceSinkDesc reduceSinkDesc = (ReduceSinkDesc) latestReduceSink
-				.getConf();
-		int tag = reduceSinkDesc.getTag();
-
-		Map<Byte, List<ExprNodeDesc>> exprMap = desc.getExprs();
-		List<ExprNodeDesc> exprs = exprMap.get(Byte.valueOf((byte) tag));
-
-		for (ExprNodeDesc expr : exprs)
-			t.rewriteExpression(expr);
-
-		List<Operator> parents = operatorToHiveParents.get(operator);
-		if (parents == null) {
-			parents = new ArrayList<Operator>();
-			operatorToHiveParents.put(operator, parents);
-		}
-		parents.add(latestReduceSink);
-
-		List<ILogicalOperator> asterixParents = operatorToAsterixParents
-				.get(operator);
-		if (asterixParents == null) {
-			asterixParents = new ArrayList<ILogicalOperator>();
-			operatorToAsterixParents.put(operator, asterixParents);
-		}
-		asterixParents.add(latestAlgebricksOperator);
-	}
-
-	// generate a join tree from a list of exchange/reducesink operator
-	// both exchanges and reduce sinks have the same order
-	private ILogicalOperator generateJoinTree(List<JoinCondDesc> conds,
-			List<ILogicalOperator> exchanges, List<Operator> reduceSinks,
-			int offset, Translator t) {
-		// get a list of reduce sink descs (input descs)
-		int inputSize = reduceSinks.size() - offset;
-
-		if (inputSize == 2) {
-			ILogicalOperator currentRoot;
-
-			List<ReduceSinkDesc> reduceSinkDescs = new ArrayList<ReduceSinkDesc>();
-			for (int i = reduceSinks.size() - 1; i >= offset; i--)
-				reduceSinkDescs.add((ReduceSinkDesc) reduceSinks.get(i)
-						.getConf());
-
-			// get the object inspector for the join
-			List<String> fieldNames = new ArrayList<String>();
-			List<TypeInfo> types = new ArrayList<TypeInfo>();
-			for (int i = reduceSinks.size() - 1; i >= offset; i--) {
-				fieldNames
-						.addAll(reduceSinkToFieldNames.get(reduceSinks.get(i)));
-				types.addAll(reduceSinkToTypes.get(reduceSinks.get(i)));
-			}
-
-			// get number of equality conjunctions in the final join condition
-			int size = reduceSinkDescs.get(0).getKeyCols().size();
-
-			// make up the join conditon expression
-			List<ExprNodeDesc> joinConditionChildren = new ArrayList<ExprNodeDesc>();
-			for (int i = 0; i < size; i++) {
-				// create a join key pair
-				List<ExprNodeDesc> keyPair = new ArrayList<ExprNodeDesc>();
-				for (ReduceSinkDesc sink : reduceSinkDescs) {
-					keyPair.add(sink.getKeyCols().get(i));
-				}
-				// create a hive equal condition
-				ExprNodeDesc equality = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo,
-						new GenericUDFOPEqual(), keyPair);
-				// add the equal condition to the conjunction list
-				joinConditionChildren.add(equality);
-			}
-			// get final conjunction expression
-			ExprNodeDesc conjunct = null;
-
-			if (joinConditionChildren.size() > 1)
-				conjunct = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(),
-						joinConditionChildren);
-			else if (joinConditionChildren.size() == 1)
-				conjunct = joinConditionChildren.get(0);
-			else {
-				// there is no join equality condition, equal-join
-				conjunct = new ExprNodeConstantDesc(
-						TypeInfoFactory.booleanTypeInfo, new Boolean(true));
-			}
-			// get an ILogicalExpression from hive's expression
-			Mutable<ILogicalExpression> expression = t
-					.translateScalarFucntion(conjunct);
-
-			Mutable<ILogicalOperator> leftBranch = new MutableObject<ILogicalOperator>(
-					exchanges.get(exchanges.size() - 1));
-			Mutable<ILogicalOperator> rightBranch = new MutableObject<ILogicalOperator>(
-					exchanges.get(exchanges.size() - 2));
-			// get the join operator
-			if (conds.get(offset).getType() == JoinDesc.LEFT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-				Mutable<ILogicalOperator> temp = leftBranch;
-				leftBranch = rightBranch;
-				rightBranch = temp;
-			} else if (conds.get(offset).getType() == JoinDesc.RIGHT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-			} else
-				currentRoot = new InnerJoinOperator(expression);
-
-			currentRoot.getInputs().add(leftBranch);
-			currentRoot.getInputs().add(rightBranch);
-
-			// rewriteOperatorOutputSchema(variables, operator);
-			return currentRoot;
-		} else {
-			// get the child join operator and insert and one-to-one exchange
-			ILogicalOperator joinSrcOne = generateJoinTree(conds, exchanges,
-					reduceSinks, offset + 1, t);
-			// joinSrcOne.addInput(childJoin);
-
-			ILogicalOperator currentRoot;
-
-			List<ReduceSinkDesc> reduceSinkDescs = new ArrayList<ReduceSinkDesc>();
-			for (int i = offset; i < offset + 2; i++)
-				reduceSinkDescs.add((ReduceSinkDesc) reduceSinks.get(i)
-						.getConf());
-
-			// get the object inspector for the join
-			List<String> fieldNames = new ArrayList<String>();
-			List<TypeInfo> types = new ArrayList<TypeInfo>();
-			for (int i = offset; i < reduceSinks.size(); i++) {
-				fieldNames
-						.addAll(reduceSinkToFieldNames.get(reduceSinks.get(i)));
-				types.addAll(reduceSinkToTypes.get(reduceSinks.get(i)));
-			}
-
-			// get number of equality conjunctions in the final join condition
-			int size = reduceSinkDescs.get(0).getKeyCols().size();
-
-			// make up the join condition expression
-			List<ExprNodeDesc> joinConditionChildren = new ArrayList<ExprNodeDesc>();
-			for (int i = 0; i < size; i++) {
-				// create a join key pair
-				List<ExprNodeDesc> keyPair = new ArrayList<ExprNodeDesc>();
-				for (ReduceSinkDesc sink : reduceSinkDescs) {
-					keyPair.add(sink.getKeyCols().get(i));
-				}
-				// create a hive equal condition
-				ExprNodeDesc equality = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo,
-						new GenericUDFOPEqual(), keyPair);
-				// add the equal condition to the conjunction list
-				joinConditionChildren.add(equality);
-			}
-			// get final conjunction expression
-			ExprNodeDesc conjunct = null;
-
-			if (joinConditionChildren.size() > 1)
-				conjunct = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(),
-						joinConditionChildren);
-			else if (joinConditionChildren.size() == 1)
-				conjunct = joinConditionChildren.get(0);
-			else {
-				// there is no join equality condition, full outer join
-				conjunct = new ExprNodeConstantDesc(
-						TypeInfoFactory.booleanTypeInfo, new Boolean(true));
-			}
-			// get an ILogicalExpression from hive's expression
-			Mutable<ILogicalExpression> expression = t
-					.translateScalarFucntion(conjunct);
-
-			Mutable<ILogicalOperator> leftBranch = new MutableObject<ILogicalOperator>(
-					joinSrcOne);
-			Mutable<ILogicalOperator> rightBranch = new MutableObject<ILogicalOperator>(
-					exchanges.get(offset));
-
-			// get the join operator
-			if (conds.get(offset).getType() == JoinDesc.LEFT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-				Mutable<ILogicalOperator> temp = leftBranch;
-				leftBranch = rightBranch;
-				rightBranch = temp;
-			} else if (conds.get(offset).getType() == JoinDesc.RIGHT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-			} else
-				currentRoot = new InnerJoinOperator(expression);
-
-			// set the inputs from Algebricks join operator
-			// add the current table
-			currentRoot.getInputs().add(leftBranch);
-			currentRoot.getInputs().add(rightBranch);
-
-			return currentRoot;
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LateralViewJoinVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LateralViewJoinVisitor.java
deleted file mode 100644
index 004a8c2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LateralViewJoinVisitor.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-
-/**
- * The lateral view join operator is used for FROM src LATERAL VIEW udtf()...
- * This operator was implemented with the following operator DAG in mind.
- * 
- * For a query such as
- * 
- * SELECT pageid, adid.* FROM example_table LATERAL VIEW explode(adid_list) AS
- * adid
- * 
- * The top of the operator DAG will look similar to
- * 
- * [Table Scan] | [Lateral View Forward] / \ [Select](*) [Select](adid_list) | |
- * | [UDTF] (explode) \ / [Lateral View Join] | | [Select] (pageid, adid.*) |
- * ....
- * 
- * Rows from the table scan operator are first to a lateral view forward
- * operator that just forwards the row and marks the start of a LV. The select
- * operator on the left picks all the columns while the select operator on the
- * right picks only the columns needed by the UDTF.
- * 
- * The output of select in the left branch and output of the UDTF in the right
- * branch are then sent to the lateral view join (LVJ). In most cases, the UDTF
- * will generate > 1 row for every row received from the TS, while the left
- * select operator will generate only one. For each row output from the TS, the
- * LVJ outputs all possible rows that can be created by joining the row from the
- * left select and one of the rows output from the UDTF.
- * 
- * Additional lateral views can be supported by adding a similar DAG after the
- * previous LVJ operator.
- */
-
-@SuppressWarnings("rawtypes")
-public class LateralViewJoinVisitor extends DefaultVisitor {
-
-	private UDTFDesc udtf;
-
-	private List<Mutable<ILogicalOperator>> parents = new ArrayList<Mutable<ILogicalOperator>>();
-
-	@Override
-	public Mutable<ILogicalOperator> visit(LateralViewJoinOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException {
-
-		parents.add(AlgebricksParentOperatorRef);
-		if (operator.getParentOperators().size() > parents.size()) {
-			return null;
-		}
-
-		Operator parent0 = operator.getParentOperators().get(0);
-		ILogicalOperator parentOperator;
-		ILogicalExpression unnestArg;
-		if (parent0 instanceof UDTFOperator) {
-			List<LogicalVariable> unnestVars = new ArrayList<LogicalVariable>();
-			VariableUtilities.getLiveVariables(parents.get(1).getValue(),
-					unnestVars);
-			unnestArg = new VariableReferenceExpression(unnestVars.get(0));
-			parentOperator = parents.get(1).getValue();
-		} else {
-			List<LogicalVariable> unnestVars = new ArrayList<LogicalVariable>();
-			VariableUtilities.getLiveVariables(parents.get(0).getValue(),
-					unnestVars);
-			unnestArg = new VariableReferenceExpression(unnestVars.get(0));
-			parentOperator = parents.get(0).getValue();
-		}
-
-		LogicalVariable var = t.getVariable(udtf.toString(),
-				TypeInfoFactory.unknownTypeInfo);
-
-		Mutable<ILogicalExpression> unnestExpr = t.translateUnnestFunction(
-				udtf, new MutableObject<ILogicalExpression>(unnestArg));
-		ILogicalOperator currentOperator = new UnnestOperator(var, unnestExpr);
-
-		List<LogicalVariable> outputVars = new ArrayList<LogicalVariable>();
-		VariableUtilities.getLiveVariables(parentOperator, outputVars);
-		outputVars.add(var);
-		currentOperator.getInputs().add(
-				new MutableObject<ILogicalOperator>(parentOperator));
-
-		parents.clear();
-		udtf = null;
-		t.rewriteOperatorOutputSchema(outputVars, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UDTFOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-		udtf = (UDTFDesc) operator.getConf();
-
-		// populate the schema from upstream operator
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LimitVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LimitVisitor.java
deleted file mode 100644
index 84cdf00..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LimitVisitor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.plan.LimitDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.HivesterixConstantValue;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-
-public class LimitVisitor extends DefaultVisitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(LimitOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-
-		LimitDesc desc = (LimitDesc) operator.getConf();
-		int limit = desc.getLimit();
-		Integer limitValue = new Integer(limit);
-
-		ILogicalExpression expr = new ConstantExpression(
-				new HivesterixConstantValue(limitValue));
-		ILogicalOperator currentOperator = new edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.LimitOperator(
-				expr, true);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/MapJoinVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/MapJoinVisitor.java
deleted file mode 100644
index fa5d014..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/MapJoinVisitor.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-
-@SuppressWarnings("rawtypes")
-public class MapJoinVisitor extends DefaultVisitor {
-
-	/**
-	 * map a join operator (in hive) to its parent operators (in asterix)
-	 */
-	private HashMap<Operator, List<Mutable<ILogicalOperator>>> opMap = new HashMap<Operator, List<Mutable<ILogicalOperator>>>();
-
-	@Override
-	public Mutable<ILogicalOperator> visit(MapJoinOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		List<Operator<? extends Serializable>> joinSrc = operator
-				.getParentOperators();
-		List<Mutable<ILogicalOperator>> parents = opMap.get(operator);
-		if (parents == null) {
-			parents = new ArrayList<Mutable<ILogicalOperator>>();
-			opMap.put(operator, parents);
-		}
-		parents.add(AlgebricksParentOperatorRef);
-		if (joinSrc.size() != parents.size())
-			return null;
-
-		ILogicalOperator currentOperator;
-		// make an map join operator
-		// TODO: will have trouble for n-way joins
-		MapJoinDesc joinDesc = (MapJoinDesc) operator.getConf();
-
-		Map<Byte, List<ExprNodeDesc>> keyMap = joinDesc.getKeys();
-		// get the projection expression (already re-written) from each source
-		// table
-		Map<Byte, List<ExprNodeDesc>> exprMap = joinDesc.getExprs();
-
-		int inputSize = operator.getParentOperators().size();
-		// get a list of reduce sink descs (input descs)
-
-		// get the parent operator
-		List<Mutable<ILogicalOperator>> parentOps = parents;
-
-		List<String> fieldNames = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		for (Operator ts : joinSrc) {
-			List<ColumnInfo> columns = ts.getSchema().getSignature();
-			for (ColumnInfo col : columns) {
-				fieldNames.add(col.getInternalName());
-				types.add(col.getType());
-			}
-		}
-
-		// get number of equality conjunctions in the final join condition
-		Set<Entry<Byte, List<ExprNodeDesc>>> keyEntries = keyMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> entry = keyEntries.iterator();
-
-		int size = 0;
-		if (entry.hasNext())
-			size = entry.next().getValue().size();
-
-		// make up the join conditon expression
-		List<ExprNodeDesc> joinConditionChildren = new ArrayList<ExprNodeDesc>();
-		for (int i = 0; i < size; i++) {
-			// create a join key pair
-			List<ExprNodeDesc> keyPair = new ArrayList<ExprNodeDesc>();
-			for (int j = 0; j < inputSize; j++) {
-				keyPair.add(keyMap.get(Byte.valueOf((byte) j)).get(i));
-			}
-			// create a hive equal condition
-			ExprNodeDesc equality = new ExprNodeGenericFuncDesc(
-					TypeInfoFactory.booleanTypeInfo, new GenericUDFOPEqual(),
-					keyPair);
-			// add the equal condition to the conjunction list
-			joinConditionChildren.add(equality);
-		}
-		// get final conjunction expression
-		ExprNodeDesc conjunct = null;
-
-		if (joinConditionChildren.size() > 1)
-			conjunct = new ExprNodeGenericFuncDesc(
-					TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(),
-					joinConditionChildren);
-		else if (joinConditionChildren.size() == 1)
-			conjunct = joinConditionChildren.get(0);
-		else {
-			// there is no join equality condition, full outer join
-			conjunct = new ExprNodeConstantDesc(
-					TypeInfoFactory.booleanTypeInfo, new Boolean(true));
-		}
-		// get an ILogicalExpression from hive's expression
-		Mutable<ILogicalExpression> expression = t
-				.translateScalarFucntion(conjunct);
-
-		ArrayList<LogicalVariable> left = new ArrayList<LogicalVariable>();
-		ArrayList<LogicalVariable> right = new ArrayList<LogicalVariable>();
-
-		Set<Entry<Byte, List<ExprNodeDesc>>> kentries = keyMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> kiterator = kentries
-				.iterator();
-		int iteration = 0;
-		ILogicalOperator assignOperator = null;
-		while (kiterator.hasNext()) {
-			List<ExprNodeDesc> outputExprs = kiterator.next().getValue();
-
-			if (iteration == 0)
-				assignOperator = t.getAssignOperator(
-						AlgebricksParentOperatorRef, outputExprs, left);
-			else
-				assignOperator = t.getAssignOperator(
-						AlgebricksParentOperatorRef, outputExprs, right);
-
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-			iteration++;
-		}
-
-		List<Mutable<ILogicalOperator>> inputs = parentOps;
-
-		// get the join operator
-		currentOperator = new InnerJoinOperator(expression);
-
-		// set the inputs from asterix join operator
-		for (Mutable<ILogicalOperator> input : inputs)
-			currentOperator.getInputs().add(input);
-		AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-				currentOperator);
-
-		// add assign and project operator
-		// output variables
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		Set<Entry<Byte, List<ExprNodeDesc>>> entries = exprMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> iterator = entries.iterator();
-		while (iterator.hasNext()) {
-			List<ExprNodeDesc> outputExprs = iterator.next().getValue();
-			assignOperator = t.getAssignOperator(AlgebricksParentOperatorRef,
-					outputExprs, variables);
-
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-		}
-
-		currentOperator = new ProjectOperator(variables);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		// opMap.clear();
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ProjectVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ProjectVisitor.java
deleted file mode 100644
index 0d2067c..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ProjectVisitor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.SelectDesc;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-
-public class ProjectVisitor extends DefaultVisitor {
-
-	/**
-	 * translate project operator
-	 */
-	@Override
-	public Mutable<ILogicalOperator> visit(SelectOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t) {
-
-		SelectDesc desc = (SelectDesc) operator.getConf();
-
-		if (desc == null)
-			return null;
-
-		List<ExprNodeDesc> cols = desc.getColList();
-
-		if (cols == null)
-			return null;
-
-		// insert assign operator if necessary
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-
-		for (ExprNodeDesc expr : cols)
-			t.rewriteExpression(expr);
-
-		ILogicalOperator assignOp = t.getAssignOperator(
-				AlgebricksParentOperator, cols, variables);
-		ILogicalOperator currentOperator = null;
-		if (assignOp != null) {
-			currentOperator = assignOp;
-			AlgebricksParentOperator = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		currentOperator = new ProjectOperator(variables);
-		currentOperator.getInputs().add(AlgebricksParentOperator);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/SortVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/SortVisitor.java
deleted file mode 100644
index a2c0d03..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/SortVisitor.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.OrderColumn;
-
-public class SortVisitor extends DefaultVisitor {
-
-	@SuppressWarnings("rawtypes")
-	@Override
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException {
-		ReduceSinkDesc desc = (ReduceSinkDesc) operator.getConf();
-		Operator downStream = (Operator) operator.getChildOperators().get(0);
-		List<ExprNodeDesc> keys = desc.getKeyCols();
-		if (!(downStream instanceof ExtractOperator
-				&& desc.getNumReducers() == 1 && keys.size() > 0)) {
-			return null;
-		}
-
-		List<ExprNodeDesc> schema = new ArrayList<ExprNodeDesc>();
-		List<ExprNodeDesc> values = desc.getValueCols();
-		List<ExprNodeDesc> partitionCols = desc.getPartitionCols();
-		for (ExprNodeDesc key : keys) {
-			t.rewriteExpression(key);
-		}
-		for (ExprNodeDesc value : values) {
-			t.rewriteExpression(value);
-		}
-		for (ExprNodeDesc col : partitionCols) {
-			t.rewriteExpression(col);
-		}
-
-		// add a order-by operator and limit if any
-		List<Pair<IOrder, Mutable<ILogicalExpression>>> pairs = new ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>>();
-		char[] orders = desc.getOrder().toCharArray();
-		int i = 0;
-		for (ExprNodeDesc key : keys) {
-			Mutable<ILogicalExpression> expr = t.translateScalarFucntion(key);
-			IOrder order = orders[i] == '+' ? OrderOperator.ASC_ORDER
-					: OrderOperator.DESC_ORDER;
-
-			Pair<IOrder, Mutable<ILogicalExpression>> pair = new Pair<IOrder, Mutable<ILogicalExpression>>(
-					order, expr);
-			pairs.add(pair);
-			i++;
-		}
-
-		// get input variables
-		ArrayList<LogicalVariable> inputVariables = new ArrayList<LogicalVariable>();
-		VariableUtilities.getProducedVariables(
-				AlgebricksParentOperatorRef.getValue(), inputVariables);
-
-		ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-		ILogicalOperator currentOperator;
-		ILogicalOperator assignOp = t.getAssignOperator(
-				AlgebricksParentOperatorRef, keys, keyVariables);
-		if (assignOp != null) {
-			currentOperator = assignOp;
-			AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		OrderColumn[] keyColumns = new OrderColumn[keyVariables.size()];
-
-		for (int j = 0; j < keyColumns.length; j++)
-			keyColumns[j] = new OrderColumn(keyVariables.get(j),
-					pairs.get(j).first.getKind());
-
-		// handle order operator
-		currentOperator = new OrderOperator(pairs);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-		AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-				currentOperator);
-
-		// project back, remove generated sort-key columns if any
-		if (assignOp != null) {
-			currentOperator = new ProjectOperator(inputVariables);
-			currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-			AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		/**
-		 * a special rule for hive's order by output schema of reduce sink
-		 * operator only contains the columns
-		 */
-		for (ExprNodeDesc value : values) {
-			schema.add(value);
-		}
-
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		ILogicalOperator assignOperator = t.getAssignOperator(
-				AlgebricksParentOperatorRef, schema, variables);
-		t.rewriteOperatorOutputSchema(variables, operator);
-
-		if (assignOperator != null) {
-			currentOperator = assignOperator;
-			AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/TableScanWriteVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/TableScanWriteVisitor.java
deleted file mode 100644
index 3e12bb9..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/TableScanWriteVisitor.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.TableScanDesc;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveDataSink;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveDataSource;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveMetaDataProvider;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-
-public class TableScanWriteVisitor extends DefaultVisitor {
-
-	/**
-	 * map from alias to partition desc
-	 */
-	private HashMap<String, PartitionDesc> aliasToPathMap;
-
-	/**
-	 * map from partition desc to data source
-	 */
-	private HashMap<PartitionDesc, IDataSource<PartitionDesc>> dataSourceMap = new HashMap<PartitionDesc, IDataSource<PartitionDesc>>();
-
-	/**
-	 * constructor
-	 * 
-	 * @param aliasToPathMap
-	 */
-	public TableScanWriteVisitor(HashMap<String, PartitionDesc> aliasToPathMap) {
-		this.aliasToPathMap = aliasToPathMap;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(TableScanOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		TableScanDesc desc = (TableScanDesc) operator.getConf();
-		if (desc == null) {
-			List<LogicalVariable> schema = new ArrayList<LogicalVariable>();
-			VariableUtilities.getLiveVariables(
-					AlgebricksParentOperator.getValue(), schema);
-			t.rewriteOperatorOutputSchema(schema, operator);
-			return null;
-		}
-
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-		for (int i = columns.size() - 1; i >= 0; i--)
-			if (columns.get(i).getIsVirtualCol() == true)
-				columns.remove(i);
-
-		// start with empty tuple operator
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		List<String> names = new ArrayList<String>();
-		for (ColumnInfo column : columns) {
-			types.add(column.getType());
-
-			LogicalVariable var = t.getVariableFromFieldName(column
-					.getTabAlias() + "." + column.getInternalName());
-			LogicalVariable varNew;
-
-			if (var != null) {
-				varNew = t.getVariable(
-						column.getTabAlias() + "." + column.getInternalName()
-								+ operator.toString(), column.getType());
-				t.replaceVariable(var, varNew);
-				var = varNew;
-			} else
-				var = t.getNewVariable(
-						column.getTabAlias() + "." + column.getInternalName(),
-						column.getType());
-
-			variables.add(var);
-			names.add(column.getInternalName());
-		}
-		Schema currentSchema = new Schema(names, types);
-
-		String alias = desc.getAlias();
-		PartitionDesc partDesc = aliasToPathMap.get(alias);
-		IDataSource<PartitionDesc> dataSource = new HiveDataSource<PartitionDesc>(
-				partDesc, currentSchema.getSchema());
-		ILogicalOperator currentOperator = new DataSourceScanOperator(
-				variables, dataSource);
-
-		// set empty tuple source operator
-		ILogicalOperator ets = new EmptyTupleSourceOperator();
-		currentOperator.getInputs().add(
-				new MutableObject<ILogicalOperator>(ets));
-
-		// setup data source
-		dataSourceMap.put(partDesc, dataSource);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(FileSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t) {
-
-		if (hiveOperator.getChildOperators() != null
-				&& hiveOperator.getChildOperators().size() > 0)
-			return null;
-
-		Schema currentSchema = t.generateInputSchema(hiveOperator
-				.getParentOperators().get(0));
-
-		IDataSink sink = new HiveDataSink(hiveOperator,
-				currentSchema.getSchema());
-		List<Mutable<ILogicalExpression>> exprList = new ArrayList<Mutable<ILogicalExpression>>();
-		for (String column : currentSchema.getNames()) {
-			exprList.add(new MutableObject<ILogicalExpression>(
-					new VariableReferenceExpression(t.getVariable(column))));
-		}
-
-		ILogicalOperator currentOperator = new WriteOperator(exprList, sink);
-		if (AlgebricksParentOperator != null) {
-			currentOperator.getInputs().add(AlgebricksParentOperator);
-		}
-
-		IMetadataProvider<PartitionDesc, Object> metaData = new HiveMetaDataProvider<PartitionDesc, Object>(
-				hiveOperator, currentSchema, dataSourceMap);
-		t.setMetadataProvider(metaData);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/UnionVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/UnionVisitor.java
deleted file mode 100644
index f4e74f6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/UnionVisitor.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Triple;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-
-public class UnionVisitor extends DefaultVisitor {
-
-	List<Mutable<ILogicalOperator>> parents = new ArrayList<Mutable<ILogicalOperator>>();
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UnionOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-
-		parents.add(AlgebricksParentOperator);
-		if (operator.getParentOperators().size() > parents.size()) {
-			return null;
-		}
-
-		List<LogicalVariable> leftVars = new ArrayList<LogicalVariable>();
-		List<LogicalVariable> rightVars = new ArrayList<LogicalVariable>();
-
-		VariableUtilities.getUsedVariables(parents.get(0).getValue(), leftVars);
-		VariableUtilities
-				.getUsedVariables(parents.get(1).getValue(), rightVars);
-
-		List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> triples = new ArrayList<Triple<LogicalVariable, LogicalVariable, LogicalVariable>>();
-		List<LogicalVariable> unionVars = new ArrayList<LogicalVariable>();
-
-		for (int i = 0; i < leftVars.size(); i++) {
-			LogicalVariable unionVar = t.getVariable(leftVars.get(i).getId()
-					+ "union" + AlgebricksParentOperator.hashCode(),
-					TypeInfoFactory.unknownTypeInfo);
-			unionVars.add(unionVar);
-			Triple<LogicalVariable, LogicalVariable, LogicalVariable> triple = new Triple<LogicalVariable, LogicalVariable, LogicalVariable>(
-					leftVars.get(i), rightVars.get(i), unionVar);
-			t.replaceVariable(leftVars.get(i), unionVar);
-			t.replaceVariable(rightVars.get(i), unionVar);
-			triples.add(triple);
-		}
-		ILogicalOperator currentOperator = new edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator(
-				triples);
-		for (Mutable<ILogicalOperator> parent : parents)
-			currentOperator.getInputs().add(parent);
-
-		t.rewriteOperatorOutputSchema(unionVars, operator);
-		parents.clear();
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/DefaultVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/DefaultVisitor.java
deleted file mode 100644
index 20013e3..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/DefaultVisitor.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor.base;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.CollectOperator;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.exec.ForwardOperator;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.MapOperator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.ScriptOperator;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-
-/**
- * a default empty implementation of visitor
- * 
- * @author yingyib
- */
-public class DefaultVisitor implements Visitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(CollectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(JoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ExtractOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(MapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(SMBMapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	public Mutable<ILogicalOperator> visit(FileSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(FilterOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(GroupByOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(
-			LateralViewForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(
-			LateralViewJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(LimitOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(MapOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ScriptOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(SelectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(TableScanOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UDTFOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UnionOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Translator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Translator.java
deleted file mode 100644
index 9165386..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Translator.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor.base;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-@SuppressWarnings("rawtypes")
-public interface Translator {
-
-	/**
-	 * generate input schema
-	 * 
-	 * @param operator
-	 * @return
-	 */
-	public Schema generateInputSchema(Operator operator);
-
-	/**
-	 * rewrite the names of output columns for feture expression evaluators to
-	 * use
-	 * 
-	 * @param operator
-	 */
-	public void rewriteOperatorOutputSchema(List<LogicalVariable> vars,
-			Operator operator);
-
-	/**
-	 * rewrite the names of output columns for feture expression evaluators to
-	 * use
-	 * 
-	 * @param operator
-	 */
-	public void rewriteOperatorOutputSchema(Operator operator);
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpression(ExprNodeDesc expr);
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpressionPartial(ExprNodeDesc expr);
-
-	/**
-	 * get an assign operator as a child of parent
-	 * 
-	 * @param parent
-	 * @param cols
-	 * @param variables
-	 * @return
-	 */
-	public ILogicalOperator getAssignOperator(Mutable<ILogicalOperator> parent,
-			List<ExprNodeDesc> cols, ArrayList<LogicalVariable> variables);
-
-	/**
-	 * get type for a logical variable
-	 * 
-	 * @param var
-	 * @return type info
-	 */
-	public TypeInfo getType(LogicalVariable var);
-
-	/**
-	 * translate an expression from hive to Algebricks
-	 * 
-	 * @param desc
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateScalarFucntion(ExprNodeDesc desc);
-
-	/**
-	 * translate an aggregation from hive to Algebricks
-	 * 
-	 * @param aggregateDesc
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateAggregation(
-			AggregationDesc aggregateDesc);
-
-	/**
-	 * translate unnesting (UDTF) function expression
-	 * 
-	 * @param aggregator
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateUnnestFunction(
-			UDTFDesc udtfDesc, Mutable<ILogicalExpression> argument);
-
-	/**
-	 * get variable from a schema
-	 * 
-	 * @param schema
-	 * @return
-	 */
-	public List<LogicalVariable> getVariablesFromSchema(Schema schema);
-
-	/**
-	 * get variable from name
-	 * 
-	 * @param name
-	 * @return
-	 */
-	public LogicalVariable getVariable(String name);
-
-	/**
-	 * get variable from field name
-	 * 
-	 * @param name
-	 * @return
-	 */
-	public LogicalVariable getVariableFromFieldName(String name);
-
-	/**
-	 * get variable from name, type
-	 * 
-	 * @param fieldName
-	 * @param type
-	 * @return
-	 */
-	public LogicalVariable getVariable(String fieldName, TypeInfo type);
-
-	/**
-	 * get new variable from name, type
-	 * 
-	 * @param fieldName
-	 * @param type
-	 * @return
-	 */
-	public LogicalVariable getNewVariable(String fieldName, TypeInfo type);
-
-	/**
-	 * set the metadata provider
-	 * 
-	 * @param metadata
-	 */
-	public void setMetadataProvider(
-			IMetadataProvider<PartitionDesc, Object> metadata);
-
-	/**
-	 * get the metadata provider
-	 * 
-	 * @param metadata
-	 */
-	public IMetadataProvider<PartitionDesc, Object> getMetadataProvider();
-
-	/**
-	 * replace the variable
-	 * 
-	 * @param oldVar
-	 * @param newVar
-	 */
-	public void replaceVariable(LogicalVariable oldVar, LogicalVariable newVar);
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Visitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Visitor.java
deleted file mode 100644
index 745f93e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Visitor.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor.base;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.CollectOperator;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.exec.ForwardOperator;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.MapOperator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.ScriptOperator;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-
-public interface Visitor {
-
-	public Mutable<ILogicalOperator> visit(CollectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(JoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ExtractOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(MapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(SMBMapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(FilterOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(GroupByOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(
-			LateralViewForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(
-			LateralViewJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(LimitOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(MapOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ScriptOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(SelectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(TableScanOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(FileSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(UDTFOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(UnionOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rulecollections/HiveRuleCollections.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rulecollections/HiveRuleCollections.java
deleted file mode 100644
index 4ebea0a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rulecollections/HiveRuleCollections.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rulecollections;
-
-import java.util.LinkedList;
-
-import edu.uci.ics.hivesterix.optimizer.rules.InsertProjectBeforeWriteRule;
-import edu.uci.ics.hivesterix.optimizer.rules.IntroduceEarlyProjectRule;
-import edu.uci.ics.hivesterix.optimizer.rules.LocalGroupByRule;
-import edu.uci.ics.hivesterix.optimizer.rules.RemoveRedundantSelectRule;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.BreakSelectIntoConjunctsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ComplexJoinInferenceRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateAssignsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateSelectsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.EliminateSubplanRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.EnforceStructuralPropertiesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractCommonOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractGbyExpressionsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.FactorRedundantGroupAndDecorVarsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InferTypesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InsertProjectBeforeUnionRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceAggregateCombinerRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByCombinerRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PullSelectOutOfEqJoin;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushLimitDownRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectDownRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectIntoDataSourceScanRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectDownRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectIntoJoinRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ReinferAllTypesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveRedundantProjectionRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveUnusedAssignAndAggregateRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetAlgebricksPhysicalOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetExecutionModeRule;
-
-public final class HiveRuleCollections {
-
-	public final static LinkedList<IAlgebraicRewriteRule> NORMALIZATION = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		NORMALIZATION.add(new EliminateSubplanRule());
-		NORMALIZATION.add(new IntroduceAggregateCombinerRule());
-		NORMALIZATION.add(new BreakSelectIntoConjunctsRule());
-		NORMALIZATION.add(new IntroduceAggregateCombinerRule());
-		NORMALIZATION.add(new PushSelectIntoJoinRule());
-		NORMALIZATION.add(new ExtractGbyExpressionsRule());
-		NORMALIZATION.add(new RemoveRedundantSelectRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> COND_PUSHDOWN_AND_JOIN_INFERENCE = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new PushSelectDownRule());
-		COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new InlineVariablesRule());
-		COND_PUSHDOWN_AND_JOIN_INFERENCE
-				.add(new FactorRedundantGroupAndDecorVarsRule());
-		COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new EliminateSubplanRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> LOAD_FIELDS = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		// should LoadRecordFieldsRule be applied in only one pass over the
-		// plan?
-		LOAD_FIELDS.add(new InlineVariablesRule());
-		// LOAD_FIELDS.add(new RemoveUnusedAssignAndAggregateRule());
-		LOAD_FIELDS.add(new ComplexJoinInferenceRule());
-		LOAD_FIELDS.add(new InferTypesRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> OP_PUSHDOWN = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		OP_PUSHDOWN.add(new PushProjectDownRule());
-		OP_PUSHDOWN.add(new PushSelectDownRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> DATA_EXCHANGE = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		DATA_EXCHANGE.add(new SetExecutionModeRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> CONSOLIDATION = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		CONSOLIDATION.add(new RemoveRedundantProjectionRule());
-		CONSOLIDATION.add(new ConsolidateSelectsRule());
-		CONSOLIDATION.add(new IntroduceEarlyProjectRule());
-		CONSOLIDATION.add(new ConsolidateAssignsRule());
-		CONSOLIDATION.add(new IntroduceGroupByCombinerRule());
-		CONSOLIDATION.add(new RemoveUnusedAssignAndAggregateRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> PHYSICAL_PLAN_REWRITES = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		PHYSICAL_PLAN_REWRITES.add(new PullSelectOutOfEqJoin());
-		PHYSICAL_PLAN_REWRITES.add(new SetAlgebricksPhysicalOperatorsRule());
-		PHYSICAL_PLAN_REWRITES.add(new EnforceStructuralPropertiesRule());
-		PHYSICAL_PLAN_REWRITES.add(new PushProjectDownRule());
-		PHYSICAL_PLAN_REWRITES.add(new SetAlgebricksPhysicalOperatorsRule());
-		PHYSICAL_PLAN_REWRITES.add(new PushLimitDownRule());
-		PHYSICAL_PLAN_REWRITES.add(new InsertProjectBeforeWriteRule());
-		PHYSICAL_PLAN_REWRITES.add(new InsertProjectBeforeUnionRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> prepareJobGenRules = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		prepareJobGenRules.add(new ReinferAllTypesRule());
-		prepareJobGenRules.add(new IsolateHyracksOperatorsRule(
-				HeuristicOptimizer.hyraxOperatorsBelowWhichJobGenIsDisabled));
-		prepareJobGenRules.add(new ExtractCommonOperatorsRule());
-		prepareJobGenRules.add(new LocalGroupByRule());
-		prepareJobGenRules.add(new PushProjectIntoDataSourceScanRule());
-		prepareJobGenRules.add(new ReinferAllTypesRule());
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/InsertProjectBeforeWriteRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/InsertProjectBeforeWriteRule.java
deleted file mode 100644
index c58982e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/InsertProjectBeforeWriteRule.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.ExecutionMode;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.StreamProjectPOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class InsertProjectBeforeWriteRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) {
-		return false;
-	}
-
-	/**
-	 * When the input schema to WriteOperator is different from the output
-	 * schema in terms of variable order, add a project operator to get the
-	 * write order
-	 */
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.WRITE) {
-			return false;
-		}
-		WriteOperator opWrite = (WriteOperator) op;
-		ArrayList<LogicalVariable> finalSchema = new ArrayList<LogicalVariable>();
-		VariableUtilities.getUsedVariables(opWrite, finalSchema);
-		ArrayList<LogicalVariable> inputSchema = new ArrayList<LogicalVariable>();
-		VariableUtilities.getLiveVariables(opWrite, inputSchema);
-		if (!isIdentical(finalSchema, inputSchema)) {
-			ProjectOperator projectOp = new ProjectOperator(finalSchema);
-			Mutable<ILogicalOperator> parentOpRef = opWrite.getInputs().get(0);
-			projectOp.getInputs().add(parentOpRef);
-			opWrite.getInputs().clear();
-			opWrite.getInputs().add(
-					new MutableObject<ILogicalOperator>(projectOp));
-			projectOp.setPhysicalOperator(new StreamProjectPOperator());
-			projectOp.setExecutionMode(ExecutionMode.PARTITIONED);
-
-			AbstractLogicalOperator op2 = (AbstractLogicalOperator) parentOpRef
-					.getValue();
-			if (op2.getOperatorTag() == LogicalOperatorTag.PROJECT) {
-				ProjectOperator pi2 = (ProjectOperator) op2;
-				parentOpRef.setValue(pi2.getInputs().get(0).getValue());
-			}
-			context.computeAndSetTypeEnvironmentForOperator(projectOp);
-			return true;
-		} else
-			return false;
-
-	}
-
-	private boolean isIdentical(List<LogicalVariable> finalSchema,
-			List<LogicalVariable> inputSchema) {
-		int finalSchemaSize = finalSchema.size();
-		int inputSchemaSize = inputSchema.size();
-		if (finalSchemaSize != inputSchemaSize)
-			throw new IllegalStateException(
-					"final output schema variables missing!");
-		for (int i = 0; i < finalSchemaSize; i++) {
-			LogicalVariable var1 = finalSchema.get(i);
-			LogicalVariable var2 = inputSchema.get(i);
-			if (!var1.equals(var2))
-				return false;
-		}
-		return true;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/IntroduceEarlyProjectRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/IntroduceEarlyProjectRule.java
deleted file mode 100644
index 2bebe81..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/IntroduceEarlyProjectRule.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class IntroduceEarlyProjectRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		return false;
-	}
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.PROJECT) {
-			return false;
-		}
-		AbstractLogicalOperator middleOp = (AbstractLogicalOperator) op
-				.getInputs().get(0).getValue();
-		List<LogicalVariable> deliveredVars = new ArrayList<LogicalVariable>();
-		List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
-		List<LogicalVariable> producedVars = new ArrayList<LogicalVariable>();
-
-		VariableUtilities.getUsedVariables(op, deliveredVars);
-		VariableUtilities.getUsedVariables(middleOp, usedVars);
-		VariableUtilities.getProducedVariables(middleOp, producedVars);
-
-		Set<LogicalVariable> requiredVariables = new HashSet<LogicalVariable>();
-		requiredVariables.addAll(deliveredVars);
-		requiredVariables.addAll(usedVars);
-		requiredVariables.removeAll(producedVars);
-
-		if (middleOp.getInputs().size() <= 0 || middleOp.getInputs().size() > 1)
-			return false;
-
-		AbstractLogicalOperator targetOp = (AbstractLogicalOperator) middleOp
-				.getInputs().get(0).getValue();
-		if (targetOp.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN)
-			return false;
-
-		Set<LogicalVariable> deliveredEarlyVars = new HashSet<LogicalVariable>();
-		VariableUtilities.getLiveVariables(targetOp, deliveredEarlyVars);
-
-		deliveredEarlyVars.removeAll(requiredVariables);
-		if (deliveredEarlyVars.size() > 0) {
-			ArrayList<LogicalVariable> requiredVars = new ArrayList<LogicalVariable>();
-			requiredVars.addAll(requiredVariables);
-			ILogicalOperator earlyProjectOp = new ProjectOperator(requiredVars);
-			Mutable<ILogicalOperator> earlyProjectOpRef = new MutableObject<ILogicalOperator>(
-					earlyProjectOp);
-			Mutable<ILogicalOperator> targetRef = middleOp.getInputs().get(0);
-			middleOp.getInputs().set(0, earlyProjectOpRef);
-			earlyProjectOp.getInputs().add(targetRef);
-			context.computeAndSetTypeEnvironmentForOperator(earlyProjectOp);
-			return true;
-		}
-		return false;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/LocalGroupByRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/LocalGroupByRule.java
deleted file mode 100644
index 72cbe21..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/LocalGroupByRule.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import edu.uci.ics.hivesterix.logical.plan.HiveOperatorAnnotations;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IPhysicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.OperatorAnnotations;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class LocalGroupByRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		return false;
-	}
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.GROUP) {
-			return false;
-		}
-		Boolean localGby = (Boolean) op.getAnnotations().get(
-				HiveOperatorAnnotations.LOCAL_GROUP_BY);
-		if (localGby != null && localGby.equals(Boolean.TRUE)) {
-			Boolean hashGby = (Boolean) op.getAnnotations().get(
-					OperatorAnnotations.USE_HASH_GROUP_BY);
-			Boolean externalGby = (Boolean) op.getAnnotations().get(
-					OperatorAnnotations.USE_EXTERNAL_GROUP_BY);
-			if ((hashGby != null && (hashGby.equals(Boolean.TRUE)) || (externalGby != null && externalGby
-					.equals(Boolean.TRUE)))) {
-				reviseExchange(op);
-			} else {
-				ILogicalOperator child = op.getInputs().get(0).getValue();
-				AbstractLogicalOperator childOp = (AbstractLogicalOperator) child;
-				while (child.getInputs().size() > 0) {
-					if (childOp.getOperatorTag() == LogicalOperatorTag.ORDER)
-						break;
-					else {
-						child = child.getInputs().get(0).getValue();
-						childOp = (AbstractLogicalOperator) child;
-					}
-				}
-				if (childOp.getOperatorTag() == LogicalOperatorTag.ORDER)
-					reviseExchange(childOp);
-			}
-			return true;
-		}
-		return false;
-	}
-
-	private void reviseExchange(AbstractLogicalOperator op) {
-		ExchangeOperator exchange = (ExchangeOperator) op.getInputs().get(0)
-				.getValue();
-		IPhysicalOperator physicalOp = exchange.getPhysicalOperator();
-		if (physicalOp.getOperatorTag() == PhysicalOperatorTag.HASH_PARTITION_EXCHANGE) {
-			exchange.setPhysicalOperator(new OneToOneExchangePOperator());
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/RemoveRedundantSelectRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/RemoveRedundantSelectRule.java
deleted file mode 100644
index 9958ba8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/RemoveRedundantSelectRule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class RemoveRedundantSelectRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		return false;
-	}
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.SELECT) {
-			return false;
-		}
-		AbstractLogicalOperator inputOp = (AbstractLogicalOperator) op
-				.getInputs().get(0).getValue();
-		if (inputOp.getOperatorTag() != LogicalOperatorTag.SELECT) {
-			return false;
-		}
-		SelectOperator selectOp = (SelectOperator) op;
-		SelectOperator inputSelectOp = (SelectOperator) inputOp;
-		ILogicalExpression expr1 = selectOp.getCondition().getValue();
-		ILogicalExpression expr2 = inputSelectOp.getCondition().getValue();
-
-		if (expr1.equals(expr2)) {
-			selectOp.getInputs().set(0, inputSelectOp.getInputs().get(0));
-			return true;
-		}
-		return false;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/config/ConfUtil.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/config/ConfUtil.java
deleted file mode 100644
index 6b4d697..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/config/ConfUtil.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.config;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.mapred.FileInputFormat;
-import org.apache.hadoop.mapred.InputFormat;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.api.client.NodeControllerInfo;
-import edu.uci.ics.hyracks.api.topology.ClusterTopology;
-
-@SuppressWarnings({ "rawtypes", "deprecation" })
-public class ConfUtil {
-
-	private static JobConf job;
-	private static HiveConf hconf;
-	private static String[] NCs;
-	private static Map<String, List<String>> ncMapping;
-	private static IHyracksClientConnection hcc = null;
-	private static ClusterTopology topology = null;
-
-	public static JobConf getJobConf(Class<? extends InputFormat> format,
-			Path path) {
-		JobConf conf = new JobConf();
-		if (job != null)
-			conf = job;
-
-		String hadoopPath = System.getProperty("HADOOP_HOME", "/hadoop");
-		Path pathCore = new Path(hadoopPath + "/conf/core-site.xml");
-		conf.addResource(pathCore);
-		Path pathMapRed = new Path(hadoopPath + "/conf/mapred-site.xml");
-		conf.addResource(pathMapRed);
-		Path pathHDFS = new Path(hadoopPath + "/conf/hdfs-site.xml");
-		conf.addResource(pathHDFS);
-
-		conf.setInputFormat(format);
-		FileInputFormat.setInputPaths(conf, path);
-		return conf;
-	}
-
-	public static JobConf getJobConf() {
-		JobConf conf = new JobConf();
-		if (job != null)
-			conf = job;
-
-		String hadoopPath = System.getProperty("HADOOP_HOME", "/hadoop");
-		Path pathCore = new Path(hadoopPath + "/conf/core-site.xml");
-		conf.addResource(pathCore);
-		Path pathMapRed = new Path(hadoopPath + "/conf/mapred-site.xml");
-		conf.addResource(pathMapRed);
-		Path pathHDFS = new Path(hadoopPath + "/conf/hdfs-site.xml");
-		conf.addResource(pathHDFS);
-
-		return conf;
-	}
-
-	public static void setJobConf(JobConf conf) {
-		job = conf;
-	}
-
-	public static void setHiveConf(HiveConf hiveConf) {
-		hconf = hiveConf;
-	}
-
-	public static HiveConf getHiveConf() {
-		if (hconf == null) {
-			hconf = new HiveConf(SessionState.class);
-			hconf.addResource(new Path("conf/hive-default.xml"));
-		}
-		return hconf;
-	}
-
-	public static String[] getNCs() throws AlgebricksException {
-		if (NCs == null) {
-			try {
-				loadClusterConfig();
-			} catch (Exception e) {
-				throw new AlgebricksException(e);
-			}
-		}
-		return NCs;
-	}
-
-	public static Map<String, List<String>> getNCMapping()
-			throws AlgebricksException {
-		if (ncMapping == null) {
-			try {
-				loadClusterConfig();
-			} catch (Exception e) {
-				throw new AlgebricksException(e);
-			}
-		}
-		return ncMapping;
-	}
-
-	private static void loadClusterConfig() {
-		try {
-			getHiveConf();
-			String ipAddress = hconf.get("hive.hyracks.host");
-			int port = Integer.parseInt(hconf.get("hive.hyracks.port"));
-			int mpl = Integer.parseInt(hconf.get("hive.hyracks.parrallelism"));
-			hcc = new HyracksConnection(ipAddress, port);
-			topology = hcc.getClusterTopology();
-			Map<String, NodeControllerInfo> ncNameToNcInfos = hcc
-					.getNodeControllerInfos();
-			NCs = new String[ncNameToNcInfos.size() * mpl];
-			ncMapping = new HashMap<String, List<String>>();
-			int i = 0;
-			for (Map.Entry<String, NodeControllerInfo> entry : ncNameToNcInfos
-					.entrySet()) {
-				String ipAddr = InetAddress.getByAddress(
-						entry.getValue().getNetworkAddress().getIpAddress())
-						.getHostAddress();
-				List<String> matchedNCs = ncMapping.get(ipAddr);
-				if (matchedNCs == null) {
-					matchedNCs = new ArrayList<String>();
-					ncMapping.put(ipAddr, matchedNCs);
-				}
-				matchedNCs.add(entry.getKey());
-				for (int j = i * mpl; j < i * mpl + mpl; j++)
-					NCs[j] = entry.getKey();
-				i++;
-			}
-		} catch (Exception e) {
-			throw new IllegalStateException(e);
-		}
-	}
-
-	public static ClusterTopology getClusterTopology() {
-		if (topology == null)
-			loadClusterConfig();
-		return topology;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AbstractExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AbstractExpressionEvaluator.java
deleted file mode 100644
index 8f6d9ca..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AbstractExpressionEvaluator.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public abstract class AbstractExpressionEvaluator implements ICopyEvaluator {
-
-	private List<ICopyEvaluator> children;
-
-	private ExprNodeEvaluator evaluator;
-
-	private IDataOutputProvider out;
-
-	private ObjectInspector inspector;
-
-	/**
-	 * output object inspector
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * cached row object
-	 */
-	private LazyObject<? extends ObjectInspector> cachedRowObject;
-
-	/**
-	 * serializer/derialzer for lazy object
-	 */
-	private SerDe lazySer;
-
-	/**
-	 * data output
-	 */
-	DataOutput dataOutput;
-
-	public AbstractExpressionEvaluator(ExprNodeEvaluator hiveEvaluator,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		evaluator = hiveEvaluator;
-		out = output;
-		inspector = oi;
-		dataOutput = out.getDataOutput();
-	}
-
-	protected ObjectInspector getRowInspector() {
-		return null;
-	}
-
-	protected IDataOutputProvider getIDataOutputProvider() {
-		return out;
-	}
-
-	protected ExprNodeEvaluator getHiveEvaluator() {
-		return evaluator;
-	}
-
-	public ObjectInspector getObjectInspector() {
-		return inspector;
-	}
-
-	@Override
-	public void evaluate(IFrameTupleReference r) throws AlgebricksException {
-		// initialize hive evaluator
-		try {
-			if (outputInspector == null)
-				outputInspector = evaluator.initialize(inspector);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-
-		readIntoCache(r);
-		try {
-			Object result = evaluator.evaluate(cachedRowObject);
-
-			// if (result == null) {
-			// result = evaluator.evaluate(cachedRowObject);
-			//
-			// // check if result is null
-			//
-			// String errorMsg = "serialize null object in  \n output " +
-			// outputInspector.toString() + " \n input "
-			// + inspector.toString() + "\n ";
-			// errorMsg += "";
-			// List<Object> columns = ((StructObjectInspector)
-			// inspector).getStructFieldsDataAsList(cachedRowObject);
-			// for (Object column : columns) {
-			// errorMsg += column.toString() + " ";
-			// }
-			// errorMsg += "\n";
-			// Log.info(errorMsg);
-			// System.out.println(errorMsg);
-			// // result = new BooleanWritable(true);
-			// throw new IllegalStateException(errorMsg);
-			// }
-
-			serializeResult(result);
-		} catch (HiveException e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		} catch (IOException e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result) throws IOException,
-			AlgebricksException {
-		if (lazySer == null)
-			lazySer = new LazySerDe();
-
-		try {
-			BytesWritable outputWritable = (BytesWritable) lazySer.serialize(
-					result, outputInspector);
-			dataOutput.write(outputWritable.getBytes(), 0,
-					outputWritable.getLength());
-		} catch (SerDeException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		if (cachedRowObject == null)
-			cachedRowObject = (LazyObject<? extends ObjectInspector>) LazyFactory
-					.createLazyObject(inspector);
-		cachedRowObject.init(r);
-	}
-
-	/**
-	 * set a list of children of this evaluator
-	 * 
-	 * @param children
-	 */
-	public void setChildren(List<ICopyEvaluator> children) {
-		this.children = children;
-	}
-
-	public void addChild(ICopyEvaluator child) {
-		if (children == null)
-			children = new ArrayList<ICopyEvaluator>();
-		children.add(child);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregationFunctionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregationFunctionEvaluator.java
deleted file mode 100644
index 271b5e4..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregationFunctionEvaluator.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFCount;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyAggregateFunction;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AggregationFunctionEvaluator implements ICopyAggregateFunction {
-
-	/**
-	 * the mode of aggregation function
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * an array of evaluators
-	 */
-	private ExprNodeEvaluator[] evaluators;
-
-	/**
-	 * udaf evaluator partial
-	 */
-	private GenericUDAFEvaluator udafPartial;
-
-	/**
-	 * udaf evaluator complete
-	 */
-	private GenericUDAFEvaluator udafComplete;
-
-	/**
-	 * cached parameter objects
-	 */
-	private Object[] cachedParameters;
-
-	/**
-	 * cached row objects
-	 */
-	private LazyObject<? extends ObjectInspector> cachedRowObject;
-
-	/**
-	 * the output channel
-	 */
-	private DataOutput out;
-
-	/**
-	 * aggregation buffer
-	 */
-	private AggregationBuffer aggBuffer;
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private SerDe lazySer;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspectorPartial;
-
-	/**
-	 * parameter inspectors
-	 */
-	private ObjectInspector[] parameterInspectors;
-
-	/**
-	 * output make sure the aggregation functio has least object creation
-	 * 
-	 * @param desc
-	 * @param oi
-	 * @param output
-	 */
-	public AggregationFunctionEvaluator(List<ExprNodeDesc> inputs,
-			List<TypeInfo> inputTypes, String genericUDAFName,
-			GenericUDAFEvaluator.Mode aggMode, boolean distinct,
-			ObjectInspector oi, DataOutput output, ExprNodeEvaluator[] evals,
-			ObjectInspector[] pInspectors, Object[] parameterCache,
-			SerDe serde, LazyObject<? extends ObjectInspector> row,
-			GenericUDAFEvaluator udafunctionPartial,
-			GenericUDAFEvaluator udafunctionComplete, ObjectInspector outputOi,
-			ObjectInspector outputOiPartial) {
-		// shared object across threads
-		this.out = output;
-		this.mode = aggMode;
-		this.parameterInspectors = pInspectors;
-
-		// thread local objects
-		this.evaluators = evals;
-		this.cachedParameters = parameterCache;
-		this.cachedRowObject = row;
-		this.lazySer = serde;
-		this.udafPartial = udafunctionPartial;
-		this.udafComplete = udafunctionComplete;
-		this.outputInspector = outputOi;
-		this.outputInspectorPartial = outputOiPartial;
-	}
-
-	@Override
-	public void init() throws AlgebricksException {
-		try {
-			aggBuffer = udafPartial.getNewAggregationBuffer();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void step(IFrameTupleReference tuple) throws AlgebricksException {
-		readIntoCache(tuple);
-		processRow();
-	}
-
-	private void processRow() throws AlgebricksException {
-		try {
-			// get values by evaluating them
-			for (int i = 0; i < cachedParameters.length; i++) {
-				cachedParameters[i] = evaluators[i].evaluate(cachedRowObject);
-			}
-			processAggregate();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	private void processAggregate() throws HiveException {
-		/**
-		 * accumulate the aggregation function
-		 */
-		switch (mode) {
-		case PARTIAL1:
-		case COMPLETE:
-			udafPartial.iterate(aggBuffer, cachedParameters);
-			break;
-		case PARTIAL2:
-		case FINAL:
-			if (udafPartial instanceof GenericUDAFCount.GenericUDAFCountEvaluator) {
-				Object parameter = ((PrimitiveObjectInspector) parameterInspectors[0])
-						.getPrimitiveWritableObject(cachedParameters[0]);
-				udafPartial.merge(aggBuffer, parameter);
-			} else
-				udafPartial.merge(aggBuffer, cachedParameters[0]);
-			break;
-		default:
-			break;
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result, ObjectInspector oi)
-			throws IOException, AlgebricksException {
-		try {
-			BytesWritable outputWritable = (BytesWritable) lazySer.serialize(
-					result, oi);
-			out.write(outputWritable.getBytes(), 0, outputWritable.getLength());
-		} catch (SerDeException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		cachedRowObject.init(r);
-	}
-
-	@Override
-	public void finish() throws AlgebricksException {
-		// aggregator
-		try {
-			Object result = null;
-			result = udafPartial.terminatePartial(aggBuffer);
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE
-					|| mode == GenericUDAFEvaluator.Mode.FINAL) {
-				result = udafComplete.terminate(aggBuffer);
-				serializeResult(result, outputInspector);
-			} else {
-				serializeResult(result, outputInspectorPartial);
-			}
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void finishPartial() throws AlgebricksException {
-		// aggregator.
-		try {
-			Object result = null;
-			// get aggregations
-			result = udafPartial.terminatePartial(aggBuffer);
-			serializeResult(result, outputInspectorPartial);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregatuibFunctionSerializableEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregatuibFunctionSerializableEvaluator.java
deleted file mode 100644
index 032437b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregatuibFunctionSerializableEvaluator.java
+++ /dev/null
@@ -1,259 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFCount;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunction;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AggregatuibFunctionSerializableEvaluator implements
-		ICopySerializableAggregateFunction {
-
-	/**
-	 * the mode of aggregation function
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * an array of evaluators
-	 */
-	private ExprNodeEvaluator[] evaluators;
-
-	/**
-	 * udaf evaluator partial
-	 */
-	private GenericUDAFEvaluator udafPartial;
-
-	/**
-	 * udaf evaluator complete
-	 */
-	private GenericUDAFEvaluator udafComplete;
-
-	/**
-	 * cached parameter objects
-	 */
-	private Object[] cachedParameters;
-
-	/**
-	 * cached row objects
-	 */
-	private LazyObject<? extends ObjectInspector> cachedRowObject;
-
-	/**
-	 * aggregation buffer
-	 */
-	private SerializableBuffer aggBuffer;
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private SerDe lazySer;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspectorPartial;
-
-	/**
-	 * parameter inspectors
-	 */
-	private ObjectInspector[] parameterInspectors;
-
-	/**
-	 * output make sure the aggregation functio has least object creation
-	 * 
-	 * @param desc
-	 * @param oi
-	 * @param output
-	 */
-	public AggregatuibFunctionSerializableEvaluator(List<ExprNodeDesc> inputs,
-			List<TypeInfo> inputTypes, String genericUDAFName,
-			GenericUDAFEvaluator.Mode aggMode, boolean distinct,
-			ObjectInspector oi, ExprNodeEvaluator[] evals,
-			ObjectInspector[] pInspectors, Object[] parameterCache,
-			SerDe serde, LazyObject<? extends ObjectInspector> row,
-			GenericUDAFEvaluator udafunctionPartial,
-			GenericUDAFEvaluator udafunctionComplete, ObjectInspector outputOi,
-			ObjectInspector outputOiPartial) throws AlgebricksException {
-		// shared object across threads
-		this.mode = aggMode;
-		this.parameterInspectors = pInspectors;
-
-		// thread local objects
-		this.evaluators = evals;
-		this.cachedParameters = parameterCache;
-		this.cachedRowObject = row;
-		this.lazySer = serde;
-		this.udafPartial = udafunctionPartial;
-		this.udafComplete = udafunctionComplete;
-		this.outputInspector = outputOi;
-		this.outputInspectorPartial = outputOiPartial;
-
-		try {
-			aggBuffer = (SerializableBuffer) udafPartial
-					.getNewAggregationBuffer();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void init(DataOutput output) throws AlgebricksException {
-		try {
-			udafPartial.reset(aggBuffer);
-			outputAggBuffer(aggBuffer, output);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void step(IFrameTupleReference tuple, byte[] data, int start, int len)
-			throws AlgebricksException {
-		deSerializeAggBuffer(aggBuffer, data, start, len);
-		readIntoCache(tuple);
-		processRow();
-		serializeAggBuffer(aggBuffer, data, start, len);
-	}
-
-	private void processRow() throws AlgebricksException {
-		try {
-			// get values by evaluating them
-			for (int i = 0; i < cachedParameters.length; i++) {
-				cachedParameters[i] = evaluators[i].evaluate(cachedRowObject);
-			}
-			processAggregate();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	private void processAggregate() throws HiveException {
-		/**
-		 * accumulate the aggregation function
-		 */
-		switch (mode) {
-		case PARTIAL1:
-		case COMPLETE:
-			udafPartial.iterate(aggBuffer, cachedParameters);
-			break;
-		case PARTIAL2:
-		case FINAL:
-			if (udafPartial instanceof GenericUDAFCount.GenericUDAFCountEvaluator) {
-				Object parameter = ((PrimitiveObjectInspector) parameterInspectors[0])
-						.getPrimitiveWritableObject(cachedParameters[0]);
-				udafPartial.merge(aggBuffer, parameter);
-			} else
-				udafPartial.merge(aggBuffer, cachedParameters[0]);
-			break;
-		default:
-			break;
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result, ObjectInspector oi,
-			DataOutput out) throws IOException, AlgebricksException {
-		try {
-			BytesWritable outputWritable = (BytesWritable) lazySer.serialize(
-					result, oi);
-			out.write(outputWritable.getBytes(), 0, outputWritable.getLength());
-		} catch (SerDeException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		cachedRowObject.init(r);
-	}
-
-	@Override
-	public void finish(byte[] data, int start, int len, DataOutput output)
-			throws AlgebricksException {
-		deSerializeAggBuffer(aggBuffer, data, start, len);
-		// aggregator
-		try {
-			Object result = null;
-			result = udafPartial.terminatePartial(aggBuffer);
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE
-					|| mode == GenericUDAFEvaluator.Mode.FINAL) {
-				result = udafComplete.terminate(aggBuffer);
-				serializeResult(result, outputInspector, output);
-			} else {
-				serializeResult(result, outputInspectorPartial, output);
-			}
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void finishPartial(byte[] data, int start, int len, DataOutput output)
-			throws AlgebricksException {
-		deSerializeAggBuffer(aggBuffer, data, start, len);
-		// aggregator.
-		try {
-			Object result = null;
-			// get aggregations
-			result = udafPartial.terminatePartial(aggBuffer);
-			serializeResult(result, outputInspectorPartial, output);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	private void serializeAggBuffer(SerializableBuffer buffer, byte[] data,
-			int start, int len) throws AlgebricksException {
-		buffer.serializeAggBuffer(data, start, len);
-	}
-
-	private void deSerializeAggBuffer(SerializableBuffer buffer, byte[] data,
-			int start, int len) throws AlgebricksException {
-		buffer.deSerializeAggBuffer(data, start, len);
-	}
-
-	private void outputAggBuffer(SerializableBuffer buffer, DataOutput out)
-			throws AlgebricksException {
-		try {
-			buffer.serializeAggBuffer(out);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/BufferSerDeUtil.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/BufferSerDeUtil.java
deleted file mode 100644
index d73be93..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/BufferSerDeUtil.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-public class BufferSerDeUtil {
-
-	public static double getDouble(byte[] bytes, int offset) {
-		return Double.longBitsToDouble(getLong(bytes, offset));
-	}
-
-	public static float getFloat(byte[] bytes, int offset) {
-		return Float.intBitsToFloat(getInt(bytes, offset));
-	}
-
-	public static boolean getBoolean(byte[] bytes, int offset) {
-		if (bytes[offset] == 0)
-			return false;
-		else
-			return true;
-	}
-
-	public static int getInt(byte[] bytes, int offset) {
-		return ((bytes[offset] & 0xff) << 24)
-				+ ((bytes[offset + 1] & 0xff) << 16)
-				+ ((bytes[offset + 2] & 0xff) << 8)
-				+ ((bytes[offset + 3] & 0xff) << 0);
-	}
-
-	public static long getLong(byte[] bytes, int offset) {
-		return (((long) (bytes[offset] & 0xff)) << 56)
-				+ (((long) (bytes[offset + 1] & 0xff)) << 48)
-				+ (((long) (bytes[offset + 2] & 0xff)) << 40)
-				+ (((long) (bytes[offset + 3] & 0xff)) << 32)
-				+ (((long) (bytes[offset + 4] & 0xff)) << 24)
-				+ (((long) (bytes[offset + 5] & 0xff)) << 16)
-				+ (((long) (bytes[offset + 6] & 0xff)) << 8)
-				+ (((long) (bytes[offset + 7] & 0xff)) << 0);
-	}
-
-	public static void writeBoolean(boolean value, byte[] bytes, int offset) {
-		if (value)
-			bytes[offset] = (byte) 1;
-		else
-			bytes[offset] = (byte) 0;
-	}
-
-	public static void writeInt(int value, byte[] bytes, int offset) {
-		bytes[offset++] = (byte) (value >> 24);
-		bytes[offset++] = (byte) (value >> 16);
-		bytes[offset++] = (byte) (value >> 8);
-		bytes[offset++] = (byte) (value);
-	}
-
-	public static void writeLong(long value, byte[] bytes, int offset) {
-		bytes[offset++] = (byte) (value >> 56);
-		bytes[offset++] = (byte) (value >> 48);
-		bytes[offset++] = (byte) (value >> 40);
-		bytes[offset++] = (byte) (value >> 32);
-		bytes[offset++] = (byte) (value >> 24);
-		bytes[offset++] = (byte) (value >> 16);
-		bytes[offset++] = (byte) (value >> 8);
-		bytes[offset++] = (byte) (value);
-	}
-
-	public static void writeDouble(double value, byte[] bytes, int offset) {
-		long lValue = Double.doubleToLongBits(value);
-		writeLong(lValue, bytes, offset);
-	}
-
-	public static void writeFloat(float value, byte[] bytes, int offset) {
-		int iValue = Float.floatToIntBits(value);
-		writeInt(iValue, bytes, offset);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ColumnExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ColumnExpressionEvaluator.java
deleted file mode 100644
index 3296e19..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ColumnExpressionEvaluator.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeColumnEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ColumnExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public ColumnExpressionEvaluator(ExprNodeColumnDesc expr,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		super(new ExprNodeColumnEvaluator(expr), oi, output);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ConstantExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ConstantExpressionEvaluator.java
deleted file mode 100644
index 62928e6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ConstantExpressionEvaluator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeConstantEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ConstantExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public ConstantExpressionEvaluator(ExprNodeConstantDesc expr,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		super(new ExprNodeConstantEvaluator(expr), oi, output);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ExpressionTranslator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ExpressionTranslator.java
deleted file mode 100644
index 2180910..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ExpressionTranslator.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.FunctionInfo;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.ExpressionConstant;
-import edu.uci.ics.hivesterix.logical.expression.HiveAlgebricksBuiltInFunctionMap;
-import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo;
-import edu.uci.ics.hivesterix.logical.expression.HivesterixConstantValue;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-
-public class ExpressionTranslator {
-
-	public static Object getHiveExpression(ILogicalExpression expr,
-			IVariableTypeEnvironment env) throws Exception {
-		if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-			/**
-			 * function expression
-			 */
-			AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-			IFunctionInfo funcInfo = funcExpr.getFunctionInfo();
-			FunctionIdentifier fid = funcInfo.getFunctionIdentifier();
-
-			if (fid.getName().equals(ExpressionConstant.FIELDACCESS)) {
-				Object info = ((HiveFunctionInfo) funcInfo).getInfo();
-				ExprNodeFieldDesc desc = (ExprNodeFieldDesc) info;
-				return new ExprNodeFieldDesc(desc.getTypeInfo(),
-						desc.getDesc(), desc.getFieldName(), desc.getIsList());
-			}
-
-			if (fid.getName().equals(ExpressionConstant.NULL)) {
-				return new ExprNodeNullDesc();
-			}
-
-			/**
-			 * argument expressions: translate argument expressions recursively
-			 * first, this logic is shared in scalar, aggregation and unnesting
-			 * function
-			 */
-			List<Mutable<ILogicalExpression>> arguments = funcExpr
-					.getArguments();
-			List<ExprNodeDesc> parameters = new ArrayList<ExprNodeDesc>();
-			for (Mutable<ILogicalExpression> argument : arguments) {
-				/**
-				 * parameters could not be aggregate function desc
-				 */
-				ExprNodeDesc parameter = (ExprNodeDesc) getHiveExpression(
-						argument.getValue(), env);
-				parameters.add(parameter);
-			}
-
-			/**
-			 * get expression
-			 */
-			if (funcExpr instanceof ScalarFunctionCallExpression) {
-				String udfName = HiveAlgebricksBuiltInFunctionMap.INSTANCE
-						.getHiveFunctionName(fid);
-				GenericUDF udf;
-				if (udfName != null) {
-					/**
-					 * get corresponding function info for built-in functions
-					 */
-					FunctionInfo fInfo = FunctionRegistry
-							.getFunctionInfo(udfName);
-					udf = fInfo.getGenericUDF();
-
-					int inputSize = parameters.size();
-					List<ExprNodeDesc> currentDescs = new ArrayList<ExprNodeDesc>();
-
-					// generate expression tree if necessary
-					while (inputSize > 2) {
-						int pairs = inputSize / 2;
-						for (int i = 0; i < pairs; i++) {
-							List<ExprNodeDesc> descs = new ArrayList<ExprNodeDesc>();
-							descs.add(parameters.get(2 * i));
-							descs.add(parameters.get(2 * i + 1));
-							ExprNodeDesc desc = ExprNodeGenericFuncDesc
-									.newInstance(udf, descs);
-							currentDescs.add(desc);
-						}
-
-						if (inputSize % 2 != 0) {
-							// List<ExprNodeDesc> descs = new
-							// ArrayList<ExprNodeDesc>();
-							// ExprNodeDesc lastExpr =
-							// currentDescs.remove(currentDescs.size() - 1);
-							// descs.add(lastExpr);
-							currentDescs.add(parameters.get(inputSize - 1));
-							// ExprNodeDesc desc =
-							// ExprNodeGenericFuncDesc.newInstance(udf, descs);
-							// currentDescs.add(desc);
-						}
-						inputSize = currentDescs.size();
-						parameters.clear();
-						parameters.addAll(currentDescs);
-						currentDescs.clear();
-					}
-
-				} else {
-					Object secondInfo = ((HiveFunctionInfo) funcInfo).getInfo();
-					if (secondInfo != null) {
-
-						/**
-						 * for GenericUDFBridge: we should not call get type of
-						 * this hive expression, because parameters may have
-						 * been changed!
-						 */
-						ExprNodeGenericFuncDesc hiveExpr = (ExprNodeGenericFuncDesc) ((HiveFunctionInfo) funcInfo)
-								.getInfo();
-						udf = hiveExpr.getGenericUDF();
-					} else {
-						/**
-						 * for other generic UDF
-						 */
-						Class<?> udfClass;
-						try {
-							udfClass = Class.forName(fid.getName());
-							udf = (GenericUDF) udfClass.newInstance();
-						} catch (Exception e) {
-							e.printStackTrace();
-							throw new AlgebricksException(e.getMessage());
-						}
-					}
-				}
-				/**
-				 * get hive generic function expression
-				 */
-				ExprNodeDesc desc = ExprNodeGenericFuncDesc.newInstance(udf,
-						parameters);
-				return desc;
-			} else if (funcExpr instanceof AggregateFunctionCallExpression) {
-				/**
-				 * hive aggregation info
-				 */
-				AggregationDesc aggregateDesc = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				/**
-				 * set parameters
-				 */
-				aggregateDesc
-						.setParameters((ArrayList<ExprNodeDesc>) parameters);
-
-				List<TypeInfo> originalParameterTypeInfos = new ArrayList<TypeInfo>();
-				for (ExprNodeDesc parameter : parameters) {
-					if (parameter.getTypeInfo() instanceof StructTypeInfo) {
-						originalParameterTypeInfos
-								.add(TypeInfoFactory.doubleTypeInfo);
-					} else
-						originalParameterTypeInfos.add(parameter.getTypeInfo());
-				}
-
-				GenericUDAFEvaluator eval = FunctionRegistry
-						.getGenericUDAFEvaluator(
-								aggregateDesc.getGenericUDAFName(),
-								originalParameterTypeInfos,
-								aggregateDesc.getDistinct(), false);
-
-				AggregationDesc newAggregateDesc = new AggregationDesc(
-						aggregateDesc.getGenericUDAFName(), eval,
-						aggregateDesc.getParameters(),
-						aggregateDesc.getDistinct(), aggregateDesc.getMode());
-				return newAggregateDesc;
-			} else if (funcExpr instanceof UnnestingFunctionCallExpression) {
-				/**
-				 * type inference for UDTF function
-				 */
-				UDTFDesc hiveDesc = (UDTFDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				String funcName = hiveDesc.getUDTFName();
-				FunctionInfo fi = FunctionRegistry.getFunctionInfo(funcName);
-				GenericUDTF udtf = fi.getGenericUDTF();
-				UDTFDesc desc = new UDTFDesc(udtf);
-				return desc;
-			} else {
-				throw new IllegalStateException(
-						"unrecognized function expression "
-								+ expr.getClass().getName());
-			}
-		} else if ((expr.getExpressionTag() == LogicalExpressionTag.VARIABLE)) {
-			/**
-			 * get type for variable in the environment
-			 */
-			VariableReferenceExpression varExpr = (VariableReferenceExpression) expr;
-			LogicalVariable var = varExpr.getVariableReference();
-			TypeInfo typeInfo = (TypeInfo) env.getVarType(var);
-			ExprNodeDesc desc = new ExprNodeColumnDesc(typeInfo,
-					var.toString(), "", false);
-			return desc;
-		} else if ((expr.getExpressionTag() == LogicalExpressionTag.CONSTANT)) {
-			/**
-			 * get expression for constant in the environment
-			 */
-			ConstantExpression varExpr = (ConstantExpression) expr;
-			Object value = ((HivesterixConstantValue) varExpr.getValue())
-					.getObject();
-			ExprNodeDesc desc = new ExprNodeConstantDesc(value);
-			return desc;
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FieldExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FieldExpressionEvaluator.java
deleted file mode 100644
index 5f6a5dc..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FieldExpressionEvaluator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeFieldEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class FieldExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public FieldExpressionEvaluator(ExprNodeFieldDesc expr, ObjectInspector oi,
-			IDataOutputProvider output) throws AlgebricksException {
-		super(new ExprNodeFieldEvaluator(expr), oi, output);
-	}
-
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FunctionExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FunctionExpressionEvaluator.java
deleted file mode 100644
index c3f3c93..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FunctionExpressionEvaluator.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeGenericFuncEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class FunctionExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public FunctionExpressionEvaluator(ExprNodeGenericFuncDesc expr,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		super(new ExprNodeGenericFuncEvaluator(expr), oi, output);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/NullExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/NullExpressionEvaluator.java
deleted file mode 100644
index cbe5561..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/NullExpressionEvaluator.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeNullEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class NullExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public NullExpressionEvaluator(ExprNodeNullDesc expr, ObjectInspector oi,
-			IDataOutputProvider output) throws AlgebricksException {
-		super(new ExprNodeNullEvaluator(expr), oi, output);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/SerializableBuffer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/SerializableBuffer.java
deleted file mode 100644
index 328b384..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/SerializableBuffer.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
-
-public interface SerializableBuffer extends AggregationBuffer {
-
-	public void deSerializeAggBuffer(byte[] data, int start, int len);
-
-	public void serializeAggBuffer(byte[] data, int start, int len);
-
-	public void serializeAggBuffer(DataOutput output) throws IOException;
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/UDTFFunctionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/UDTFFunctionEvaluator.java
deleted file mode 100644
index de0141b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/UDTFFunctionEvaluator.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.udf.generic.Collector;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.serde.lazy.LazyColumnar;
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyUnnestingFunction;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class UDTFFunctionEvaluator implements ICopyUnnestingFunction, Collector {
-
-	/**
-	 * udtf function
-	 */
-	private UDTFDesc func;
-
-	/**
-	 * input object inspector
-	 */
-	private ObjectInspector inputInspector;
-
-	/**
-	 * output object inspector
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * object inspector for udtf
-	 */
-	private ObjectInspector[] udtfInputOIs;
-
-	/**
-	 * generic udtf
-	 */
-	private GenericUDTF udtf;
-
-	/**
-	 * data output
-	 */
-	private DataOutput out;
-
-	/**
-	 * the input row object
-	 */
-	private LazyColumnar cachedRowObject;
-
-	/**
-	 * cached row object (input)
-	 */
-	private Object[] cachedInputObjects;
-
-	/**
-	 * serialization/deserialization
-	 */
-	private SerDe lazySerDe;
-
-	/**
-	 * columns feed into UDTF
-	 */
-	private int[] columns;
-
-	public UDTFFunctionEvaluator(UDTFDesc desc, Schema schema, int[] cols,
-			DataOutput output) {
-		this.func = desc;
-		this.inputInspector = schema.toObjectInspector();
-		udtf = func.getGenericUDTF();
-		out = output;
-		columns = cols;
-	}
-
-	@Override
-	public void init(IFrameTupleReference tuple) throws AlgebricksException {
-		cachedInputObjects = new LazyObject[columns.length];
-		try {
-			cachedRowObject = (LazyColumnar) LazyFactory
-					.createLazyObject(inputInspector);
-			outputInspector = udtf.initialize(udtfInputOIs);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-		udtf.setCollector(this);
-		lazySerDe = new LazySerDe();
-		readIntoCache(tuple);
-	}
-
-	@Override
-	public boolean step() throws AlgebricksException {
-		try {
-			udtf.process(cachedInputObjects);
-			return true;
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		cachedRowObject.init(r);
-		for (int i = 0; i < cachedInputObjects.length; i++) {
-			cachedInputObjects[i] = cachedRowObject.getField(columns[i]);
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result) throws SerDeException,
-			IOException {
-		BytesWritable outputWritable = (BytesWritable) lazySerDe.serialize(
-				result, outputInspector);
-		out.write(outputWritable.getBytes(), 0, outputWritable.getLength());
-	}
-
-	@Override
-	public void collect(Object input) throws HiveException {
-		try {
-			serializeResult(input);
-		} catch (IOException e) {
-			throw new HiveException(e);
-		} catch (SerDeException e) {
-			throw new HiveException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/HyracksExecutionEngine.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/HyracksExecutionEngine.java
deleted file mode 100644
index ed5ab70..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/HyracksExecutionEngine.java
+++ /dev/null
@@ -1,551 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.exec;
-
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.exec.ConditionalTask;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.MapRedTask;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.Task;
-import org.apache.hadoop.hive.ql.plan.DynamicPartitionCtx;
-import org.apache.hadoop.hive.ql.plan.FetchWork;
-import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
-import org.apache.hadoop.hive.ql.plan.MapredLocalWork;
-import org.apache.hadoop.hive.ql.plan.MapredWork;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.TableScanDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.HiveExpressionTypeComputer;
-import edu.uci.ics.hivesterix.logical.expression.HiveMergeAggregationExpressionFactory;
-import edu.uci.ics.hivesterix.logical.expression.HiveNullableTypeComputer;
-import edu.uci.ics.hivesterix.logical.expression.HivePartialAggregationTypeComputer;
-import edu.uci.ics.hivesterix.logical.plan.HiveAlgebricksTranslator;
-import edu.uci.ics.hivesterix.logical.plan.HiveLogicalPlanAndMetaData;
-import edu.uci.ics.hivesterix.optimizer.rulecollections.HiveRuleCollections;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.runtime.factory.evaluator.HiveExpressionRuntimeProvider;
-import edu.uci.ics.hivesterix.runtime.factory.nullwriter.HiveNullWriterFactory;
-import edu.uci.ics.hivesterix.runtime.inspector.HiveBinaryBooleanInspectorFactory;
-import edu.uci.ics.hivesterix.runtime.inspector.HiveBinaryIntegerInspectorFactory;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveConnectorPolicyAssignmentPolicy;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveConnectorPolicyAssignmentPolicy.Policy;
-import edu.uci.ics.hivesterix.runtime.provider.HiveBinaryComparatorFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveBinaryHashFunctionFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveBinaryHashFunctionFamilyProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveNormalizedKeyComputerFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HivePrinterFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveSerializerDeserializerProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveTypeTraitProvider;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder;
-import edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder.DefaultOptimizationContextFactory;
-import edu.uci.ics.hyracks.algebricks.compiler.api.ICompiler;
-import edu.uci.ics.hyracks.algebricks.compiler.api.ICompilerFactory;
-import edu.uci.ics.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController;
-import edu.uci.ics.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlanAndMetadata;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.api.job.JobId;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class HyracksExecutionEngine implements IExecutionEngine {
-
-    private static final Log LOG = LogFactory.getLog(HyracksExecutionEngine.class.getName());
-
-    private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> DEFAULT_LOGICAL_REWRITES = new ArrayList<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>();
-    private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> DEFAULT_PHYSICAL_REWRITES = new ArrayList<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>();
-    static {
-        SequentialFixpointRuleController seqCtrlNoDfs = new SequentialFixpointRuleController(false);
-        SequentialFixpointRuleController seqCtrlFullDfs = new SequentialFixpointRuleController(true);
-        SequentialOnceRuleController seqOnceCtrl = new SequentialOnceRuleController(true);
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlFullDfs,
-                HiveRuleCollections.NORMALIZATION));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
-                HiveRuleCollections.COND_PUSHDOWN_AND_JOIN_INFERENCE));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlFullDfs,
-                HiveRuleCollections.LOAD_FIELDS));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
-                HiveRuleCollections.OP_PUSHDOWN));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
-                HiveRuleCollections.DATA_EXCHANGE));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
-                HiveRuleCollections.CONSOLIDATION));
-
-        DEFAULT_PHYSICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
-                HiveRuleCollections.PHYSICAL_PLAN_REWRITES));
-        DEFAULT_PHYSICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
-                HiveRuleCollections.prepareJobGenRules));
-    }
-
-    /**
-     * static configurations for compiler
-     */
-    private HeuristicCompilerFactoryBuilder builder;
-
-    /**
-     * compiler
-     */
-    private ICompiler compiler;
-
-    /**
-     * physical optimization config
-     */
-    private PhysicalOptimizationConfig physicalOptimizationConfig;
-
-    /**
-     * final ending operators
-     */
-    private List<Operator> leaveOps = new ArrayList<Operator>();
-
-    /**
-     * tasks that are already visited
-     */
-    private Map<Task<? extends Serializable>, Boolean> tasksVisited = new HashMap<Task<? extends Serializable>, Boolean>();
-
-    /**
-     * hyracks job spec
-     */
-    private JobSpecification jobSpec;
-
-    /**
-     * hive configuration
-     */
-    private HiveConf conf;
-
-    /**
-     * plan printer
-     */
-    private PrintWriter planPrinter;
-
-    public HyracksExecutionEngine(HiveConf conf) {
-        this.conf = conf;
-        init(conf);
-    }
-
-    public HyracksExecutionEngine(HiveConf conf, PrintWriter planPrinter) {
-        this.conf = conf;
-        this.planPrinter = planPrinter;
-        init(conf);
-    }
-
-    private void init(HiveConf conf) {
-        builder = new HeuristicCompilerFactoryBuilder(DefaultOptimizationContextFactory.INSTANCE);
-        builder.setLogicalRewrites(DEFAULT_LOGICAL_REWRITES);
-        builder.setPhysicalRewrites(DEFAULT_PHYSICAL_REWRITES);
-        builder.setIMergeAggregationExpressionFactory(HiveMergeAggregationExpressionFactory.INSTANCE);
-        builder.setExpressionTypeComputer(HiveExpressionTypeComputer.INSTANCE);
-        builder.setNullableTypeComputer(HiveNullableTypeComputer.INSTANCE);
-
-        long memSizeExternalGby = conf.getLong("hive.algebricks.groupby.external.memory", 268435456);
-        long memSizeExternalSort = conf.getLong("hive.algebricks.sort.memory", 536870912);
-        int frameSize = conf.getInt("hive.algebricks.framesize", 32768);
-
-        physicalOptimizationConfig = new PhysicalOptimizationConfig();
-        int frameLimitExtGby = (int) (memSizeExternalGby / frameSize);
-        physicalOptimizationConfig.setMaxFramesExternalGroupBy(frameLimitExtGby);
-        int frameLimitExtSort = (int) (memSizeExternalSort / frameSize);
-        physicalOptimizationConfig.setMaxFramesExternalSort(frameLimitExtSort);
-        builder.setPhysicalOptimizationConfig(physicalOptimizationConfig);
-    }
-
-    @Override
-    public int compileJob(List<Task<? extends Serializable>> rootTasks) {
-        // clean up
-        leaveOps.clear();
-        tasksVisited.clear();
-        jobSpec = null;
-
-        HashMap<String, PartitionDesc> aliasToPath = new HashMap<String, PartitionDesc>();
-        List<Operator> rootOps = generateRootOperatorDAG(rootTasks, aliasToPath);
-
-        // get all leave Ops
-        getLeaves(rootOps, leaveOps);
-
-        HiveAlgebricksTranslator translator = new HiveAlgebricksTranslator();
-        try {
-            translator.translate(rootOps, null, aliasToPath);
-
-            ILogicalPlan plan = translator.genLogicalPlan();
-
-            if (plan.getRoots() != null && plan.getRoots().size() > 0 && plan.getRoots().get(0).getValue() != null) {
-                translator.printOperators();
-                ILogicalPlanAndMetadata planAndMetadata = new HiveLogicalPlanAndMetaData(plan,
-                        translator.getMetadataProvider());
-
-                ICompilerFactory compilerFactory = builder.create();
-                compiler = compilerFactory.createCompiler(planAndMetadata.getPlan(),
-                        planAndMetadata.getMetadataProvider(), translator.getVariableCounter());
-
-                // run optimization and re-writing rules for Hive plan
-                compiler.optimize();
-
-                // print optimized plan
-                LogicalOperatorPrettyPrintVisitor pvisitor = new LogicalOperatorPrettyPrintVisitor();
-                StringBuilder buffer = new StringBuilder();
-                PlanPrettyPrinter.printPlan(plan, buffer, pvisitor, 0);
-                String planStr = buffer.toString();
-                System.out.println(planStr);
-
-                if (planPrinter != null)
-                    planPrinter.print(planStr);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return 1;
-        }
-
-        return 0;
-    }
-
-    private void codeGen() throws AlgebricksException {
-        // number of cpu cores in the cluster
-        builder.setClusterLocations(new AlgebricksAbsolutePartitionConstraint(ConfUtil.getNCs()));
-        // builder.setClusterTopology(ConfUtil.getClusterTopology());
-        builder.setBinaryBooleanInspectorFactory(HiveBinaryBooleanInspectorFactory.INSTANCE);
-        builder.setBinaryIntegerInspectorFactory(HiveBinaryIntegerInspectorFactory.INSTANCE);
-        builder.setComparatorFactoryProvider(HiveBinaryComparatorFactoryProvider.INSTANCE);
-        builder.setExpressionRuntimeProvider(HiveExpressionRuntimeProvider.INSTANCE);
-        builder.setHashFunctionFactoryProvider(HiveBinaryHashFunctionFactoryProvider.INSTANCE);
-        builder.setPrinterProvider(HivePrinterFactoryProvider.INSTANCE);
-        builder.setSerializerDeserializerProvider(HiveSerializerDeserializerProvider.INSTANCE);
-        builder.setNullWriterFactory(HiveNullWriterFactory.INSTANCE);
-        builder.setNormalizedKeyComputerFactoryProvider(HiveNormalizedKeyComputerFactoryProvider.INSTANCE);
-        builder.setPartialAggregationTypeComputer(HivePartialAggregationTypeComputer.INSTANCE);
-        builder.setTypeTraitProvider(HiveTypeTraitProvider.INSTANCE);
-        builder.setHashFunctionFamilyProvider(HiveBinaryHashFunctionFamilyProvider.INSTANCE);
-
-        jobSpec = compiler.createJob(null);
-
-        // set the policy
-        String policyStr = conf.get("hive.hyracks.connectorpolicy");
-        if (policyStr == null)
-            policyStr = "PIPELINING";
-        Policy policyValue = Policy.valueOf(policyStr);
-        jobSpec.setConnectorPolicyAssignmentPolicy(new HiveConnectorPolicyAssignmentPolicy(policyValue));
-        jobSpec.setUseConnectorPolicyForScheduling(false);
-    }
-
-    @Override
-    public int executeJob() {
-        try {
-            codeGen();
-            executeHyraxJob(jobSpec);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return 1;
-        }
-        return 0;
-    }
-
-    private List<Operator> generateRootOperatorDAG(List<Task<? extends Serializable>> rootTasks,
-            HashMap<String, PartitionDesc> aliasToPath) {
-
-        List<Operator> rootOps = new ArrayList<Operator>();
-        List<Task<? extends Serializable>> toDelete = new ArrayList<Task<? extends Serializable>>();
-        tasksVisited.clear();
-
-        for (int i = rootTasks.size() - 1; i >= 0; i--) {
-            /**
-             * list of map-reduce tasks
-             */
-            Task<? extends Serializable> task = rootTasks.get(i);
-
-            if (task instanceof MapRedTask) {
-                List<Operator> mapRootOps = articulateMapReduceOperators(task, rootOps, aliasToPath, rootTasks);
-                if (i == 0)
-                    rootOps.addAll(mapRootOps);
-                else {
-                    List<Operator> leaves = new ArrayList<Operator>();
-                    getLeaves(rootOps, leaves);
-
-                    List<Operator> mapChildren = new ArrayList<Operator>();
-                    for (Operator childMap : mapRootOps) {
-                        if (childMap instanceof TableScanOperator) {
-                            TableScanDesc topDesc = (TableScanDesc) childMap.getConf();
-                            if (topDesc == null)
-                                mapChildren.add(childMap);
-                            else {
-                                rootOps.add(childMap);
-                            }
-                        } else
-                            mapChildren.add(childMap);
-                    }
-
-                    if (mapChildren.size() > 0) {
-                        for (Operator leaf : leaves)
-                            leaf.setChildOperators(mapChildren);
-                        for (Operator child : mapChildren)
-                            child.setParentOperators(leaves);
-                    }
-                }
-
-                MapredWork mr = (MapredWork) task.getWork();
-                HashMap<String, PartitionDesc> map = mr.getAliasToPartnInfo();
-
-                addAliasToPartition(aliasToPath, map);
-                toDelete.add(task);
-            }
-        }
-
-        for (Task<? extends Serializable> task : toDelete)
-            rootTasks.remove(task);
-
-        return rootOps;
-    }
-
-    private void addAliasToPartition(HashMap<String, PartitionDesc> aliasToPath, HashMap<String, PartitionDesc> map) {
-        Iterator<String> keys = map.keySet().iterator();
-        while (keys.hasNext()) {
-            String key = keys.next();
-            PartitionDesc part = map.get(key);
-            String[] names = key.split(":");
-            for (String name : names) {
-                aliasToPath.put(name, part);
-            }
-        }
-    }
-
-    private List<Operator> articulateMapReduceOperators(Task task, List<Operator> rootOps,
-            HashMap<String, PartitionDesc> aliasToPath, List<Task<? extends Serializable>> rootTasks) {
-        // System.out.println("!"+task.getName());
-        if (!(task instanceof MapRedTask)) {
-            if (!(task instanceof ConditionalTask)) {
-                rootTasks.add(task);
-                return null;
-            } else {
-                // remove map-reduce branches in condition task
-                ConditionalTask condition = (ConditionalTask) task;
-                List<Task<? extends Serializable>> branches = condition.getListTasks();
-                for (int i = branches.size() - 1; i >= 0; i--) {
-                    Task branch = branches.get(i);
-                    if (branch instanceof MapRedTask) {
-                        return articulateMapReduceOperators(branch, rootOps, aliasToPath, rootTasks);
-                    }
-                }
-                rootTasks.add(task);
-                return null;
-            }
-        }
-
-        MapredWork mr = (MapredWork) task.getWork();
-        HashMap<String, PartitionDesc> map = mr.getAliasToPartnInfo();
-
-        // put all aliasToParitionDesc mapping into the map
-        addAliasToPartition(aliasToPath, map);
-
-        MapRedTask mrtask = (MapRedTask) task;
-        MapredWork work = (MapredWork) mrtask.getWork();
-        HashMap<String, Operator<? extends Serializable>> operators = work.getAliasToWork();
-
-        Set entries = operators.entrySet();
-        Iterator<Entry<String, Operator>> iterator = entries.iterator();
-        List<Operator> mapRootOps = new ArrayList<Operator>();
-
-        // get map root operators
-        while (iterator.hasNext()) {
-            Operator next = iterator.next().getValue();
-            if (!mapRootOps.contains(next)) {
-                // clear that only for the case of union
-                mapRootOps.add(next);
-            }
-        }
-
-        // get map local work
-        MapredLocalWork localWork = work.getMapLocalWork();
-        if (localWork != null) {
-            HashMap<String, Operator<? extends Serializable>> localOperators = localWork.getAliasToWork();
-
-            Set localEntries = localOperators.entrySet();
-            Iterator<Entry<String, Operator>> localIterator = localEntries.iterator();
-            while (localIterator.hasNext()) {
-                mapRootOps.add(localIterator.next().getValue());
-            }
-
-            HashMap<String, FetchWork> localFetch = localWork.getAliasToFetchWork();
-            Set localFetchEntries = localFetch.entrySet();
-            Iterator<Entry<String, FetchWork>> localFetchIterator = localFetchEntries.iterator();
-            while (localFetchIterator.hasNext()) {
-                Entry<String, FetchWork> fetchMap = localFetchIterator.next();
-                FetchWork fetch = fetchMap.getValue();
-                String alias = fetchMap.getKey();
-                List<PartitionDesc> dirPart = fetch.getPartDesc();
-
-                // temporary hack: put the first partitionDesc into the map
-                aliasToPath.put(alias, dirPart.get(0));
-            }
-        }
-
-        Boolean visited = tasksVisited.get(task);
-        if (visited != null && visited.booleanValue() == true) {
-            return mapRootOps;
-        }
-
-        // do that only for union operator
-        for (Operator op : mapRootOps)
-            if (op.getParentOperators() != null)
-                op.getParentOperators().clear();
-
-        List<Operator> mapLeaves = new ArrayList<Operator>();
-        downToLeaves(mapRootOps, mapLeaves);
-        List<Operator> reduceOps = new ArrayList<Operator>();
-
-        if (work.getReducer() != null)
-            reduceOps.add(work.getReducer());
-
-        for (Operator mapLeaf : mapLeaves) {
-            mapLeaf.setChildOperators(reduceOps);
-        }
-
-        for (Operator reduceOp : reduceOps) {
-            if (reduceOp != null)
-                reduceOp.setParentOperators(mapLeaves);
-        }
-
-        List<Operator> leafs = new ArrayList<Operator>();
-        if (reduceOps.size() > 0) {
-            downToLeaves(reduceOps, leafs);
-        } else {
-            leafs = mapLeaves;
-        }
-
-        List<Operator> mapChildren = new ArrayList<Operator>();
-        if (task.getChildTasks() != null && task.getChildTasks().size() > 0) {
-            for (Object child : task.getChildTasks()) {
-                List<Operator> childMapOps = articulateMapReduceOperators((Task) child, rootOps, aliasToPath, rootTasks);
-                if (childMapOps == null)
-                    continue;
-
-                for (Operator childMap : childMapOps) {
-                    if (childMap instanceof TableScanOperator) {
-                        TableScanDesc topDesc = (TableScanDesc) childMap.getConf();
-                        if (topDesc == null)
-                            mapChildren.add(childMap);
-                        else {
-                            rootOps.add(childMap);
-                        }
-                    } else {
-                        // if not table scan, add the child
-                        mapChildren.add(childMap);
-                    }
-                }
-            }
-
-            if (mapChildren.size() > 0) {
-                int i = 0;
-                for (Operator leaf : leafs) {
-                    if (leaf.getChildOperators() == null || leaf.getChildOperators().size() == 0)
-                        leaf.setChildOperators(new ArrayList<Operator>());
-                    leaf.getChildOperators().add(mapChildren.get(i));
-                    i++;
-                }
-                i = 0;
-                for (Operator child : mapChildren) {
-                    if (child.getParentOperators() == null || child.getParentOperators().size() == 0)
-                        child.setParentOperators(new ArrayList<Operator>());
-                    child.getParentOperators().add(leafs.get(i));
-                    i++;
-                }
-            }
-        }
-
-        // mark this task as visited
-        this.tasksVisited.put(task, true);
-        return mapRootOps;
-    }
-
-    /**
-     * down to leaf nodes
-     * 
-     * @param ops
-     * @param leaves
-     */
-    private void downToLeaves(List<Operator> ops, List<Operator> leaves) {
-
-        // Operator currentOp;
-        for (Operator op : ops) {
-            if (op != null && op.getChildOperators() != null && op.getChildOperators().size() > 0) {
-                downToLeaves(op.getChildOperators(), leaves);
-            } else {
-                if (op != null && leaves.indexOf(op) < 0)
-                    leaves.add(op);
-            }
-        }
-    }
-
-    private void getLeaves(List<Operator> roots, List<Operator> currentLeaves) {
-        for (Operator op : roots) {
-            List<Operator> children = op.getChildOperators();
-            if (children == null || children.size() <= 0) {
-                currentLeaves.add(op);
-            } else {
-                getLeaves(children, currentLeaves);
-            }
-        }
-    }
-
-    private void executeHyraxJob(JobSpecification job) throws Exception {
-        String ipAddress = conf.get("hive.hyracks.host");
-        int port = Integer.parseInt(conf.get("hive.hyracks.port"));
-        String applicationName = conf.get("hive.hyracks.app");
-        //System.out.println("connect to " + ipAddress + " " + port);
-
-        IHyracksClientConnection hcc = new HyracksConnection(ipAddress, port);
-
-        //System.out.println("get connected");
-        long start = System.currentTimeMillis();
-        JobId jobId = hcc.startJob(applicationName, job);
-        hcc.waitForCompletion(jobId);
-
-        //System.out.println("job finished: " + jobId.toString());
-        // call all leave nodes to end
-        for (Operator leaf : leaveOps) {
-            jobClose(leaf);
-        }
-
-        long end = System.currentTimeMillis();
-        System.err.println(start + " " + end + " " + (end - start));
-    }
-
-    /**
-     * mv to final directory on hdfs (not real final)
-     * 
-     * @param leaf
-     * @throws Exception
-     */
-    private void jobClose(Operator leaf) throws Exception {
-        FileSinkOperator fsOp = (FileSinkOperator) leaf;
-        FileSinkDesc desc = fsOp.getConf();
-        boolean isNativeTable = !desc.getTableInfo().isNonNative();
-        if ((conf != null) && isNativeTable) {
-            String specPath = desc.getDirName();
-            DynamicPartitionCtx dpCtx = desc.getDynPartCtx();
-            // for 0.7.0
-            fsOp.mvFileToFinalPath(specPath, conf, true, LOG, dpCtx);
-            // for 0.8.0
-            // Utilities.mvFileToFinalPath(specPath, conf, true, LOG, dpCtx,
-            // desc);
-        }
-    }
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/IExecutionEngine.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/IExecutionEngine.java
deleted file mode 100644
index 8f4c471..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/IExecutionEngine.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.exec;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.Task;
-
-public interface IExecutionEngine {
-
-	/**
-	 * compile the job
-	 * 
-	 * @param rootTasks
-	 *            : Hive MapReduce plan
-	 * @return 0 pass, 1 fail
-	 */
-	public int compileJob(List<Task<? extends Serializable>> rootTasks);
-
-	/**
-	 * execute the job with latest compiled plan
-	 * 
-	 * @return
-	 */
-	public int executeJob();
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryAscComparatorFactory.java
deleted file mode 100644
index 9c2d463..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveByteBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveByteBinaryAscComparatorFactory INSTANCE = new HiveByteBinaryAscComparatorFactory();
-
-	private HiveByteBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private byte left;
-			private byte right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = b1[s1];
-				right = b2[s2];
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryDescComparatorFactory.java
deleted file mode 100644
index ee71655..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveByteBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveByteBinaryDescComparatorFactory INSTANCE = new HiveByteBinaryDescComparatorFactory();
-
-	private HiveByteBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private byte left;
-			private byte right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = b1[s1];
-				right = b2[s2];
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryAscComparatorFactory.java
deleted file mode 100644
index 739e417..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveDoubleBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveDoubleBinaryAscComparatorFactory INSTANCE = new HiveDoubleBinaryAscComparatorFactory();
-
-	private HiveDoubleBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private double left;
-			private double right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Double.longBitsToDouble(LazyUtils
-						.byteArrayToLong(b1, s1));
-				right = Double.longBitsToDouble(LazyUtils.byteArrayToLong(b2,
-						s2));
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryDescComparatorFactory.java
deleted file mode 100644
index 0424c9f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveDoubleBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveDoubleBinaryDescComparatorFactory INSTANCE = new HiveDoubleBinaryDescComparatorFactory();
-
-	private HiveDoubleBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private double left;
-			private double right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Double.longBitsToDouble(LazyUtils
-						.byteArrayToLong(b1, s1));
-				right = Double.longBitsToDouble(LazyUtils.byteArrayToLong(b2,
-						s2));
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryAscComparatorFactory.java
deleted file mode 100644
index 08542a7..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveFloatBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveFloatBinaryAscComparatorFactory INSTANCE = new HiveFloatBinaryAscComparatorFactory();
-
-	private HiveFloatBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private float left;
-			private float right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b1, s1));
-				right = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b2, s2));
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryDescComparatorFactory.java
deleted file mode 100644
index 513512e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveFloatBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveFloatBinaryDescComparatorFactory INSTANCE = new HiveFloatBinaryDescComparatorFactory();
-
-	private HiveFloatBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private float left;
-			private float right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b1, s1));
-				right = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b2, s2));
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryAscComparatorFactory.java
deleted file mode 100644
index 947f30f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveIntegerBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveIntegerBinaryAscComparatorFactory INSTANCE = new HiveIntegerBinaryAscComparatorFactory();
-
-	private HiveIntegerBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt left = new VInt();
-			private VInt right = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, left);
-				LazyUtils.readVInt(b2, s2, right);
-
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + "," + right.length
-									+ " expected " + l1 + "," + l2);
-
-				if (left.value > right.value)
-					return 1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryDescComparatorFactory.java
deleted file mode 100644
index 7614aa1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveIntegerBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveIntegerBinaryDescComparatorFactory INSTANCE = new HiveIntegerBinaryDescComparatorFactory();
-
-	private HiveIntegerBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt left = new VInt();
-			private VInt right = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, left);
-				LazyUtils.readVInt(b2, s2, right);
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + " expected " + l1);
-				if (left.value > right.value)
-					return -1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryAscComparatorFactory.java
deleted file mode 100644
index f5f3473..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveLongBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveLongBinaryAscComparatorFactory INSTANCE = new HiveLongBinaryAscComparatorFactory();
-
-	private HiveLongBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VLong left = new VLong();
-			private VLong right = new VLong();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVLong(b1, s1, left);
-				LazyUtils.readVLong(b2, s2, right);
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + " expected " + l1);
-				if (left.value > right.value)
-					return 1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryDescComparatorFactory.java
deleted file mode 100644
index b878b22..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveLongBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveLongBinaryDescComparatorFactory INSTANCE = new HiveLongBinaryDescComparatorFactory();
-
-	private HiveLongBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VLong left = new VLong();
-			private VLong right = new VLong();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVLong(b1, s1, left);
-				LazyUtils.readVLong(b2, s2, right);
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + " expected " + l1);
-				if (left.value > right.value)
-					return -1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryAscComparatorFactory.java
deleted file mode 100644
index 8d55cdb..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveShortBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveShortBinaryAscComparatorFactory INSTANCE = new HiveShortBinaryAscComparatorFactory();
-
-	private HiveShortBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private short left;
-			private short right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = LazyUtils.byteArrayToShort(b1, s1);
-				right = LazyUtils.byteArrayToShort(b2, s2);
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryDescComparatorFactory.java
deleted file mode 100644
index 4e8dde6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveShortBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveShortBinaryDescComparatorFactory INSTANCE = new HiveShortBinaryDescComparatorFactory();
-
-	private HiveShortBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private short left;
-			private short right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = LazyUtils.byteArrayToShort(b1, s1);
-				right = LazyUtils.byteArrayToShort(b2, s2);
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryAscComparatorFactory.java
deleted file mode 100644
index a334ecf..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveStringBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveStringBinaryAscComparatorFactory INSTANCE = new HiveStringBinaryAscComparatorFactory();
-
-	private HiveStringBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt leftLen = new VInt();
-			private VInt rightLen = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, leftLen);
-				LazyUtils.readVInt(b2, s2, rightLen);
-
-				if (leftLen.value + leftLen.length != l1
-						|| rightLen.value + rightLen.length != l2)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (leftLen.value + leftLen.length) + ", "
-									+ (rightLen.value + rightLen.length)
-									+ " but get " + l1 + ", " + l2);
-
-				return Text.Comparator.compareBytes(b1, s1 + leftLen.length, l1
-						- leftLen.length, b2, s2 + rightLen.length, l2
-						- rightLen.length);
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryDescComparatorFactory.java
deleted file mode 100644
index e00b58e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import org.apache.hadoop.io.WritableComparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveStringBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveStringBinaryDescComparatorFactory INSTANCE = new HiveStringBinaryDescComparatorFactory();
-
-	private HiveStringBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt leftLen = new VInt();
-			private VInt rightLen = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, leftLen);
-				LazyUtils.readVInt(b2, s2, rightLen);
-
-				if (leftLen.value + leftLen.length != l1
-						|| rightLen.value + rightLen.length != l2)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (leftLen.value + leftLen.length) + ", "
-									+ (rightLen.value + rightLen.length)
-									+ " but get " + l1 + ", " + l2);
-
-				return -WritableComparator.compareBytes(b1,
-						s1 + leftLen.length, l1 - leftLen.length, b2, s2
-								+ rightLen.length, l2 - rightLen.length);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionFactory.java
deleted file mode 100644
index c6078ca..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionFactory.java
+++ /dev/null
@@ -1,381 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.AggregationFunctionEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyAggregateFunction;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyAggregateFunctionFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class AggregationFunctionFactory implements
-		ICopyAggregateFunctionFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * list of parameters' serialization
-	 */
-	private List<String> parametersSerialization = new ArrayList<String>();
-
-	/**
-	 * the name of the udf
-	 */
-	private String genericUDAFName;
-
-	/**
-	 * aggregation mode
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * list of type info
-	 */
-	private List<TypeInfo> types = new ArrayList<TypeInfo>();
-
-	/**
-	 * distinct or not
-	 */
-	private boolean distinct;
-
-	/**
-	 * the schema of incoming rows
-	 */
-	private Schema rowSchema;
-
-	/**
-	 * list of parameters
-	 */
-	private transient List<ExprNodeDesc> parametersOrigin;
-
-	/**
-	 * row inspector
-	 */
-	private transient ObjectInspector rowInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspectorPartial = null;
-
-	/**
-	 * parameter inspectors
-	 */
-	private transient ObjectInspector[] parameterInspectors = null;
-
-	/**
-	 * expression desc
-	 */
-	private transient HashMap<Long, List<ExprNodeDesc>> parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-	/**
-	 * evaluators
-	 */
-	private transient HashMap<Long, ExprNodeEvaluator[]> evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-	/**
-	 * cached parameter objects
-	 */
-	private transient HashMap<Long, Object[]> cachedParameters = new HashMap<Long, Object[]>();
-
-	/**
-	 * cached row object: one per thread
-	 */
-	private transient HashMap<Long, LazyObject<? extends ObjectInspector>> cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private transient HashMap<Long, SerDe> serDe = new HashMap<Long, SerDe>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * aggregation function desc
-	 */
-	private transient AggregationDesc aggregator;
-
-	/**
-	 * 
-	 * @param aggregator
-	 *            Algebricks function call expression
-	 * @param oi
-	 *            schema
-	 */
-	public AggregationFunctionFactory(
-			AggregateFunctionCallExpression expression, Schema oi,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-
-		try {
-			aggregator = (AggregationDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-		init(aggregator.getParameters(), aggregator.getGenericUDAFName(),
-				aggregator.getMode(), aggregator.getDistinct(), oi);
-	}
-
-	/**
-	 * constructor of aggregation function factory
-	 * 
-	 * @param inputs
-	 * @param name
-	 * @param udafMode
-	 * @param distinct
-	 * @param oi
-	 */
-	private void init(List<ExprNodeDesc> inputs, String name,
-			GenericUDAFEvaluator.Mode udafMode, boolean distinct, Schema oi) {
-		parametersOrigin = inputs;
-		genericUDAFName = name;
-		mode = udafMode;
-		this.distinct = distinct;
-		rowSchema = oi;
-
-		for (ExprNodeDesc input : inputs) {
-			TypeInfo type = input.getTypeInfo();
-			if (type instanceof StructTypeInfo) {
-				types.add(TypeInfoFactory.doubleTypeInfo);
-			} else
-				types.add(type);
-
-			String s = Utilities.serializeExpression(input);
-			parametersSerialization.add(s);
-		}
-	}
-
-	@Override
-	public synchronized ICopyAggregateFunction createAggregateFunction(
-			IDataOutputProvider provider) throws AlgebricksException {
-		if (parametersOrigin == null) {
-			Configuration config = new Configuration();
-			config.setClassLoader(this.getClass().getClassLoader());
-			/**
-			 * in case of class.forname(...) call in hive code
-			 */
-			Thread.currentThread().setContextClassLoader(
-					this.getClass().getClassLoader());
-
-			parametersOrigin = new ArrayList<ExprNodeDesc>();
-			for (String serialization : parametersSerialization) {
-				parametersOrigin.add(Utilities.deserializeExpression(
-						serialization, config));
-			}
-		}
-
-		/**
-		 * exprs
-		 */
-		if (parameterExprs == null)
-			parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-		/**
-		 * evaluators
-		 */
-		if (evaluators == null)
-			evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-		/**
-		 * cached parameter objects
-		 */
-		if (cachedParameters == null)
-			cachedParameters = new HashMap<Long, Object[]>();
-
-		/**
-		 * cached row object: one per thread
-		 */
-		if (cachedRowObjects == null)
-			cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		if (serDe == null)
-			serDe = new HashMap<Long, SerDe>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsComplete == null)
-			udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsPartial == null)
-			udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-		if (parameterInspectors == null)
-			parameterInspectors = new ObjectInspector[parametersOrigin.size()];
-
-		if (rowInspector == null)
-			rowInspector = rowSchema.toObjectInspector();
-
-		// get current thread id
-		long threadId = Thread.currentThread().getId();
-
-		/**
-		 * expressions, expressions are thread local
-		 */
-		List<ExprNodeDesc> parameters = parameterExprs.get(threadId);
-		if (parameters == null) {
-			parameters = new ArrayList<ExprNodeDesc>();
-			for (ExprNodeDesc parameter : parametersOrigin)
-				parameters.add(parameter.clone());
-			parameterExprs.put(threadId, parameters);
-		}
-
-		/**
-		 * cached parameter objects
-		 */
-		Object[] cachedParas = cachedParameters.get(threadId);
-		if (cachedParas == null) {
-			cachedParas = new Object[parameters.size()];
-			cachedParameters.put(threadId, cachedParas);
-		}
-
-		/**
-		 * cached row object: one per thread
-		 */
-		LazyObject<? extends ObjectInspector> cachedRowObject = cachedRowObjects
-				.get(threadId);
-		if (cachedRowObject == null) {
-			cachedRowObject = LazyFactory.createLazyObject(rowInspector);
-			cachedRowObjects.put(threadId, cachedRowObject);
-		}
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		SerDe lazySer = serDe.get(threadId);
-		if (lazySer == null) {
-			lazySer = new LazySerDe();
-			serDe.put(threadId, lazySer);
-		}
-
-		/**
-		 * evaluators
-		 */
-		ExprNodeEvaluator[] evals = evaluators.get(threadId);
-		if (evals == null) {
-			evals = new ExprNodeEvaluator[parameters.size()];
-			evaluators.put(threadId, evals);
-		}
-
-		GenericUDAFEvaluator udafPartial;
-		GenericUDAFEvaluator udafComplete;
-
-		// initialize object inspectors
-		try {
-			/**
-			 * evaluators, udf, object inpsectors are shared in one thread
-			 */
-			for (int i = 0; i < evals.length; i++) {
-				if (evals[i] == null) {
-					evals[i] = ExprNodeEvaluatorFactory.get(parameters.get(i));
-					if (parameterInspectors[i] == null) {
-						parameterInspectors[i] = evals[i]
-								.initialize(rowInspector);
-					} else {
-						evals[i].initialize(rowInspector);
-					}
-				}
-			}
-
-			udafComplete = udafsComplete.get(threadId);
-			if (udafComplete == null) {
-				try {
-					udafComplete = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafsComplete.put(threadId, udafComplete);
-				udafComplete.init(mode, parameterInspectors);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspector == null)
-				outputInspector = udafComplete.init(mode, parameterInspectors);
-
-			// initial partial gby udaf
-			GenericUDAFEvaluator.Mode partialMode;
-			// adjust mode for external groupby
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL1;
-			else if (mode == GenericUDAFEvaluator.Mode.FINAL)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL2;
-			else
-				partialMode = mode;
-			udafPartial = udafsPartial.get(threadId);
-			if (udafPartial == null) {
-				try {
-					udafPartial = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafPartial.init(partialMode, parameterInspectors);
-				udafsPartial.put(threadId, udafPartial);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspectorPartial == null)
-				outputInspectorPartial = udafPartial.init(partialMode,
-						parameterInspectors);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e);
-		}
-
-		return new AggregationFunctionEvaluator(parameters, types,
-				genericUDAFName, mode, distinct, rowInspector,
-				provider.getDataOutput(), evals, parameterInspectors,
-				cachedParas, lazySer, cachedRowObject, udafPartial,
-				udafComplete, outputInspector, outputInspectorPartial);
-	}
-
-	public String toString() {
-		return "aggregation function expression evaluator factory: "
-				+ this.genericUDAFName;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionSerializableFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionSerializableFactory.java
deleted file mode 100644
index 73717a3..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionSerializableFactory.java
+++ /dev/null
@@ -1,381 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.AggregatuibFunctionSerializableEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunction;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-
-public class AggregationFunctionSerializableFactory implements
-		ICopySerializableAggregateFunctionFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * list of parameters' serialization
-	 */
-	private List<String> parametersSerialization = new ArrayList<String>();
-
-	/**
-	 * the name of the udf
-	 */
-	private String genericUDAFName;
-
-	/**
-	 * aggregation mode
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * list of type info
-	 */
-	private List<TypeInfo> types = new ArrayList<TypeInfo>();
-
-	/**
-	 * distinct or not
-	 */
-	private boolean distinct;
-
-	/**
-	 * the schema of incoming rows
-	 */
-	private Schema rowSchema;
-
-	/**
-	 * list of parameters
-	 */
-	private transient List<ExprNodeDesc> parametersOrigin;
-
-	/**
-	 * row inspector
-	 */
-	private transient ObjectInspector rowInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspectorPartial = null;
-
-	/**
-	 * parameter inspectors
-	 */
-	private transient ObjectInspector[] parameterInspectors = null;
-
-	/**
-	 * expression desc
-	 */
-	private transient HashMap<Long, List<ExprNodeDesc>> parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-	/**
-	 * evaluators
-	 */
-	private transient HashMap<Long, ExprNodeEvaluator[]> evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-	/**
-	 * cached parameter objects
-	 */
-	private transient HashMap<Long, Object[]> cachedParameters = new HashMap<Long, Object[]>();
-
-	/**
-	 * cached row object: one per thread
-	 */
-	private transient HashMap<Long, LazyObject<? extends ObjectInspector>> cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private transient HashMap<Long, SerDe> serDe = new HashMap<Long, SerDe>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * aggregation function desc
-	 */
-	private transient AggregationDesc aggregator;
-
-	/**
-	 * 
-	 * @param aggregator
-	 *            Algebricks function call expression
-	 * @param oi
-	 *            schema
-	 */
-	public AggregationFunctionSerializableFactory(
-			AggregateFunctionCallExpression expression, Schema oi,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-
-		try {
-			aggregator = (AggregationDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-		init(aggregator.getParameters(), aggregator.getGenericUDAFName(),
-				aggregator.getMode(), aggregator.getDistinct(), oi);
-	}
-
-	/**
-	 * constructor of aggregation function factory
-	 * 
-	 * @param inputs
-	 * @param name
-	 * @param udafMode
-	 * @param distinct
-	 * @param oi
-	 */
-	private void init(List<ExprNodeDesc> inputs, String name,
-			GenericUDAFEvaluator.Mode udafMode, boolean distinct, Schema oi) {
-		parametersOrigin = inputs;
-		genericUDAFName = name;
-		mode = udafMode;
-		this.distinct = distinct;
-		rowSchema = oi;
-
-		for (ExprNodeDesc input : inputs) {
-			TypeInfo type = input.getTypeInfo();
-			if (type instanceof StructTypeInfo) {
-				types.add(TypeInfoFactory.doubleTypeInfo);
-			} else
-				types.add(type);
-
-			String s = Utilities.serializeExpression(input);
-			parametersSerialization.add(s);
-		}
-	}
-
-	@Override
-	public synchronized ICopySerializableAggregateFunction createAggregateFunction()
-			throws AlgebricksException {
-		if (parametersOrigin == null) {
-			Configuration config = new Configuration();
-			config.setClassLoader(this.getClass().getClassLoader());
-			/**
-			 * in case of class.forname(...) call in hive code
-			 */
-			Thread.currentThread().setContextClassLoader(
-					this.getClass().getClassLoader());
-
-			parametersOrigin = new ArrayList<ExprNodeDesc>();
-			for (String serialization : parametersSerialization) {
-				parametersOrigin.add(Utilities.deserializeExpression(
-						serialization, config));
-			}
-		}
-
-		/**
-		 * exprs
-		 */
-		if (parameterExprs == null)
-			parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-		/**
-		 * evaluators
-		 */
-		if (evaluators == null)
-			evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-		/**
-		 * cached parameter objects
-		 */
-		if (cachedParameters == null)
-			cachedParameters = new HashMap<Long, Object[]>();
-
-		/**
-		 * cached row object: one per thread
-		 */
-		if (cachedRowObjects == null)
-			cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		if (serDe == null)
-			serDe = new HashMap<Long, SerDe>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsComplete == null)
-			udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsPartial == null)
-			udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-		if (parameterInspectors == null)
-			parameterInspectors = new ObjectInspector[parametersOrigin.size()];
-
-		if (rowInspector == null)
-			rowInspector = rowSchema.toObjectInspector();
-
-		// get current thread id
-		long threadId = Thread.currentThread().getId();
-
-		/**
-		 * expressions, expressions are thread local
-		 */
-		List<ExprNodeDesc> parameters = parameterExprs.get(threadId);
-		if (parameters == null) {
-			parameters = new ArrayList<ExprNodeDesc>();
-			for (ExprNodeDesc parameter : parametersOrigin)
-				parameters.add(parameter.clone());
-			parameterExprs.put(threadId, parameters);
-		}
-
-		/**
-		 * cached parameter objects
-		 */
-		Object[] cachedParas = cachedParameters.get(threadId);
-		if (cachedParas == null) {
-			cachedParas = new Object[parameters.size()];
-			cachedParameters.put(threadId, cachedParas);
-		}
-
-		/**
-		 * cached row object: one per thread
-		 */
-		LazyObject<? extends ObjectInspector> cachedRowObject = cachedRowObjects
-				.get(threadId);
-		if (cachedRowObject == null) {
-			cachedRowObject = LazyFactory.createLazyObject(rowInspector);
-			cachedRowObjects.put(threadId, cachedRowObject);
-		}
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		SerDe lazySer = serDe.get(threadId);
-		if (lazySer == null) {
-			lazySer = new LazySerDe();
-			serDe.put(threadId, lazySer);
-		}
-
-		/**
-		 * evaluators
-		 */
-		ExprNodeEvaluator[] evals = evaluators.get(threadId);
-		if (evals == null) {
-			evals = new ExprNodeEvaluator[parameters.size()];
-			evaluators.put(threadId, evals);
-		}
-
-		GenericUDAFEvaluator udafPartial;
-		GenericUDAFEvaluator udafComplete;
-
-		// initialize object inspectors
-		try {
-			/**
-			 * evaluators, udf, object inpsectors are shared in one thread
-			 */
-			for (int i = 0; i < evals.length; i++) {
-				if (evals[i] == null) {
-					evals[i] = ExprNodeEvaluatorFactory.get(parameters.get(i));
-					if (parameterInspectors[i] == null) {
-						parameterInspectors[i] = evals[i]
-								.initialize(rowInspector);
-					} else {
-						evals[i].initialize(rowInspector);
-					}
-				}
-			}
-
-			udafComplete = udafsComplete.get(threadId);
-			if (udafComplete == null) {
-				try {
-					udafComplete = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafsComplete.put(threadId, udafComplete);
-				udafComplete.init(mode, parameterInspectors);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspector == null)
-				outputInspector = udafComplete.init(mode, parameterInspectors);
-
-			// initial partial gby udaf
-			GenericUDAFEvaluator.Mode partialMode;
-			// adjust mode for external groupby
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL1;
-			else if (mode == GenericUDAFEvaluator.Mode.FINAL)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL2;
-			else
-				partialMode = mode;
-			udafPartial = udafsPartial.get(threadId);
-			if (udafPartial == null) {
-				try {
-					udafPartial = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafPartial.init(partialMode, parameterInspectors);
-				udafsPartial.put(threadId, udafPartial);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspectorPartial == null)
-				outputInspectorPartial = udafPartial.init(partialMode,
-						parameterInspectors);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e);
-		}
-
-		return new AggregatuibFunctionSerializableEvaluator(parameters, types,
-				genericUDAFName, mode, distinct, rowInspector, evals,
-				parameterInspectors, cachedParas, lazySer, cachedRowObject,
-				udafPartial, udafComplete, outputInspector,
-				outputInspectorPartial);
-	}
-
-	public String toString() {
-		return "aggregation function expression evaluator factory: "
-				+ this.genericUDAFName;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ColumnExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ColumnExpressionEvaluatorFactory.java
deleted file mode 100644
index 68bf408..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ColumnExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ColumnExpressionEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ColumnExpressionEvaluatorFactory implements ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeColumnDesc expr;
-
-	private Schema inputSchema;
-
-	public ColumnExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema schema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeColumnDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new ColumnExpressionEvaluator(expr,
-				inputSchema.toObjectInspector(), output);
-	}
-
-	public String toString() {
-		return "column expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ConstantExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ConstantExpressionEvaluatorFactory.java
deleted file mode 100644
index e0241a1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ConstantExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ConstantExpressionEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ConstantExpressionEvaluatorFactory implements
-		ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeConstantDesc expr;
-
-	private Schema schema;
-
-	public ConstantExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema inputSchema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeConstantDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		schema = inputSchema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new ConstantExpressionEvaluator(expr,
-				schema.toObjectInspector(), output);
-	}
-
-	public String toString() {
-		return "constant expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/FieldExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/FieldExpressionEvaluatorFactory.java
deleted file mode 100644
index 4b5f906..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/FieldExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.FieldExpressionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class FieldExpressionEvaluatorFactory implements ICopyEvaluatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeFieldDesc expr;
-
-	private Schema inputSchema;
-
-	public FieldExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema schema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeFieldDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new FieldExpressionEvaluator(expr,
-				inputSchema.toObjectInspector(), output);
-	}
-
-	public String toString() {
-		return "field access expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/HiveExpressionRuntimeProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/HiveExpressionRuntimeProvider.java
deleted file mode 100644
index 387ca72..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/HiveExpressionRuntimeProvider.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.ExpressionConstant;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression.FunctionKind;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionRuntimeProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.AggregateFunctionFactoryAdapter;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.ScalarEvaluatorFactoryAdapter;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.UnnestingFunctionFactoryAdapter;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
-
-public class HiveExpressionRuntimeProvider implements
-		IExpressionRuntimeProvider {
-
-	public static final IExpressionRuntimeProvider INSTANCE = new HiveExpressionRuntimeProvider();
-
-	@Override
-	public IAggregateEvaluatorFactory createAggregateFunctionFactory(
-			AggregateFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new AggregateFunctionFactoryAdapter(
-				new AggregationFunctionFactory(expr, schema, env));
-	}
-
-	@Override
-	public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
-			AggregateFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new AggregationFunctionSerializableFactory(expr, schema, env);
-	}
-
-	@Override
-	public IRunningAggregateEvaluatorFactory createRunningAggregateFunctionFactory(
-			StatefulFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(
-			UnnestingFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new UnnestingFunctionFactoryAdapter(
-				new UnnestingFunctionFactory(expr, schema, env));
-	}
-
-	public IScalarEvaluatorFactory createEvaluatorFactory(
-			ILogicalExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		switch (expr.getExpressionTag()) {
-		case VARIABLE: {
-			VariableReferenceExpression v = (VariableReferenceExpression) expr;
-			return new ScalarEvaluatorFactoryAdapter(
-					createVariableEvaluatorFactory(v, env, inputSchemas,
-							context));
-		}
-		case CONSTANT: {
-			ConstantExpression c = (ConstantExpression) expr;
-			return new ScalarEvaluatorFactoryAdapter(
-					createConstantEvaluatorFactory(c, env, inputSchemas,
-							context));
-		}
-		case FUNCTION_CALL: {
-			AbstractFunctionCallExpression fun = (AbstractFunctionCallExpression) expr;
-			FunctionIdentifier fid = fun.getFunctionIdentifier();
-
-			if (fid.getName().equals(ExpressionConstant.FIELDACCESS)) {
-				return new ScalarEvaluatorFactoryAdapter(
-						createFieldExpressionEvaluatorFactory(fun, env,
-								inputSchemas, context));
-			}
-
-			if (fid.getName().equals(ExpressionConstant.FIELDACCESS)) {
-				return new ScalarEvaluatorFactoryAdapter(
-						createNullExpressionEvaluatorFactory(fun, env,
-								inputSchemas, context));
-			}
-
-			if (fun.getKind() == FunctionKind.SCALAR) {
-				ScalarFunctionCallExpression scalar = (ScalarFunctionCallExpression) fun;
-				return new ScalarEvaluatorFactoryAdapter(
-						createScalarFunctionEvaluatorFactory(scalar, env,
-								inputSchemas, context));
-			} else {
-				throw new AlgebricksException(
-						"Cannot create evaluator for function " + fun
-								+ " of kind " + fun.getKind());
-			}
-		}
-		default: {
-			throw new IllegalStateException();
-		}
-		}
-	}
-
-	private ICopyEvaluatorFactory createVariableEvaluatorFactory(
-			VariableReferenceExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new ColumnExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private ICopyEvaluatorFactory createScalarFunctionEvaluatorFactory(
-			AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		List<String> names = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		for (IOperatorSchema inputSchema : inputSchemas) {
-			Schema schema = this.getSchema(inputSchema, env);
-			names.addAll(schema.getNames());
-			types.addAll(schema.getTypes());
-		}
-		Schema inputSchema = new Schema(names, types);
-		return new ScalarFunctionExpressionEvaluatorFactory(expr, inputSchema,
-				env);
-	}
-
-	private ICopyEvaluatorFactory createFieldExpressionEvaluatorFactory(
-			AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new FieldExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private ICopyEvaluatorFactory createNullExpressionEvaluatorFactory(
-			AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new NullExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private ICopyEvaluatorFactory createConstantEvaluatorFactory(
-			ConstantExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new ConstantExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private Schema getSchema(IOperatorSchema inputSchema,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-		List<String> names = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		Iterator<LogicalVariable> variables = inputSchema.iterator();
-		while (variables.hasNext()) {
-			LogicalVariable var = variables.next();
-			names.add(var.toString());
-			types.add((TypeInfo) env.getVarType(var));
-		}
-
-		Schema schema = new Schema(names, types);
-		return schema;
-	}
-
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/NullExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/NullExpressionEvaluatorFactory.java
deleted file mode 100644
index 8f516e8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/NullExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.NullExpressionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class NullExpressionEvaluatorFactory implements ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeNullDesc expr;
-
-	private Schema schema;
-
-	public NullExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema intputSchema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeNullDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		schema = intputSchema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new NullExpressionEvaluator(expr, schema.toObjectInspector(),
-				output);
-	}
-
-	public String toString() {
-		return "null expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ScalarFunctionExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ScalarFunctionExpressionEvaluatorFactory.java
deleted file mode 100644
index 262758e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ScalarFunctionExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.FunctionExpressionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ScalarFunctionExpressionEvaluatorFactory implements
-		ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private transient ExprNodeGenericFuncDesc expr;
-
-	private String exprSerialization;
-
-	private Schema inputSchema;
-
-	private transient Configuration config;
-
-	public ScalarFunctionExpressionEvaluatorFactory(
-			ILogicalExpression expression, Schema schema,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-		try {
-			expr = (ExprNodeGenericFuncDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-
-			exprSerialization = Utilities.serializeExpression(expr);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	public synchronized ICopyEvaluator createEvaluator(
-			IDataOutputProvider output) throws AlgebricksException {
-		if (expr == null) {
-			configClassLoader();
-			expr = (ExprNodeGenericFuncDesc) Utilities.deserializeExpression(
-					exprSerialization, config);
-		}
-
-		ExprNodeGenericFuncDesc funcDesc = (ExprNodeGenericFuncDesc) expr
-				.clone();
-		return new FunctionExpressionEvaluator(funcDesc,
-				inputSchema.toObjectInspector(), output);
-	}
-
-	private void configClassLoader() {
-		config = new Configuration();
-		ClassLoader loader = this.getClass().getClassLoader();
-		config.setClassLoader(loader);
-		Thread.currentThread().setContextClassLoader(loader);
-	}
-
-	public String toString() {
-		if (expr == null) {
-			configClassLoader();
-			expr = (ExprNodeGenericFuncDesc) Utilities.deserializeExpression(
-					exprSerialization, new Configuration());
-		}
-
-		return "function expression evaluator factory: " + expr.getExprString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/UnnestingFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/UnnestingFunctionFactory.java
deleted file mode 100644
index 1d77737..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/UnnestingFunctionFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.UDTFFunctionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyUnnestingFunction;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyUnnestingFunctionFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class UnnestingFunctionFactory implements ICopyUnnestingFunctionFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private UDTFDesc expr;
-
-	private Schema inputSchema;
-
-	private int[] columns;
-
-	public UnnestingFunctionFactory(ILogicalExpression expression,
-			Schema schema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (UDTFDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	@Override
-	public ICopyUnnestingFunction createUnnestingFunction(
-			IDataOutputProvider provider) throws AlgebricksException {
-		return new UDTFFunctionEvaluator(expr, inputSchema, columns,
-				provider.getDataOutput());
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveDoubleBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveDoubleBinaryHashFunctionFactory.java
deleted file mode 100644
index fc302e1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveDoubleBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveDoubleBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveDoubleBinaryHashFunctionFactory INSTANCE = new HiveDoubleBinaryHashFunctionFactory();
-
-	private HiveDoubleBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-		// TODO Auto-generated method stub
-		return new IBinaryHashFunction() {
-			private Double value;
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				value = Double.longBitsToDouble(LazyUtils.byteArrayToLong(
-						bytes, offset));
-				return value.hashCode();
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveIntegerBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveIntegerBinaryHashFunctionFactory.java
deleted file mode 100644
index e1a9994..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveIntegerBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveIntegerBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static IBinaryHashFunctionFactory INSTANCE = new HiveIntegerBinaryHashFunctionFactory();
-
-	private HiveIntegerBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-
-		return new IBinaryHashFunction() {
-			private VInt value = new VInt();
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				LazyUtils.readVInt(bytes, offset, value);
-				if (value.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int hash function actual: "
-									+ length + " expected " + value.length);
-				return value.value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveLongBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveLongBinaryHashFunctionFactory.java
deleted file mode 100644
index 6f7c6f2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveLongBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveLongBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static IBinaryHashFunctionFactory INSTANCE = new HiveLongBinaryHashFunctionFactory();
-
-	private HiveLongBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-
-		return new IBinaryHashFunction() {
-			private VLong value = new VLong();
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				LazyUtils.readVLong(bytes, offset, value);
-				return (int) value.value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveRawBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveRawBinaryHashFunctionFactory.java
deleted file mode 100644
index e03dde0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveRawBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveRawBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static IBinaryHashFunctionFactory INSTANCE = new HiveRawBinaryHashFunctionFactory();
-
-	private HiveRawBinaryHashFunctionFactory() {
-
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-
-		return new IBinaryHashFunction() {
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				int value = 1;
-				int end = offset + length;
-				for (int i = offset; i < end; i++)
-					value = value * 31 + (int) bytes[i];
-				return value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveStingBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveStingBinaryHashFunctionFactory.java
deleted file mode 100644
index 055c077..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveStingBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveStingBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveStingBinaryHashFunctionFactory INSTANCE = new HiveStingBinaryHashFunctionFactory();
-
-	private HiveStingBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-		// TODO Auto-generated method stub
-		return new IBinaryHashFunction() {
-			private VInt len = new VInt();
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				LazyUtils.readVInt(bytes, offset, len);
-				if (len.value + len.length != length)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (len.value + len.length) + " but get "
-									+ length);
-				return hashBytes(bytes, offset + len.length, length
-						- len.length);
-			}
-
-			public int hashBytes(byte[] bytes, int offset, int length) {
-				int value = 1;
-				int end = offset + length;
-				for (int i = offset; i < end; i++)
-					value = value * 31 + (int) bytes[i];
-				return value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/MurmurHash3BinaryHashFunctionFamily.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/MurmurHash3BinaryHashFunctionFamily.java
deleted file mode 100644
index 760a614..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/MurmurHash3BinaryHashFunctionFamily.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
-
-public class MurmurHash3BinaryHashFunctionFamily implements IBinaryHashFunctionFamily {
-
-    public static final IBinaryHashFunctionFamily INSTANCE = new MurmurHash3BinaryHashFunctionFamily();
-
-    private static final long serialVersionUID = 1L;
-
-    private MurmurHash3BinaryHashFunctionFamily() {
-    }
-
-    private static final int C1 = 0xcc9e2d51;
-    private static final int C2 = 0x1b873593;
-    private static final int C3 = 5;
-    private static final int C4 = 0xe6546b64;
-    private static final int C5 = 0x85ebca6b;
-    private static final int C6 = 0xc2b2ae35;
-
-    @Override
-    public IBinaryHashFunction createBinaryHashFunction(final int seed) {
-        return new IBinaryHashFunction() {
-            @Override
-            public int hash(byte[] bytes, int offset, int length) {
-                int h = seed;
-                int p = offset;
-                int remain = length;
-                while (remain >= 4) {
-                    int k = (bytes[p] & 0xff) | ((bytes[p + 1] & 0xff) << 8) | ((bytes[p + 2] & 0xff) << 16)
-                            | ((bytes[p + 3] & 0xff) << 24);
-                    k *= C1;
-                    k = Integer.rotateLeft(k, 15);
-                    k *= C2;
-                    h ^= k;
-                    h = Integer.rotateLeft(h, 13);
-                    h = h * C3 + C4;
-                    p += 4;
-                    remain -= 4;
-                }
-                if (remain > 0) {
-                    int k = 0;
-                    for (int i = 0; remain > 0; i += 8) {
-                        k ^= (bytes[p++] & 0xff) << i;
-                        remain--;
-                    }
-                    k *= C1;
-                    k = Integer.rotateLeft(k, 15);
-                    k *= C2;
-                    h ^= k;
-                }
-                h ^= length;
-                h ^= (h >>> 16);
-                h *= C5;
-                h ^= (h >>> 13);
-                h *= C6;
-                h ^= (h >>> 16);
-                return h;
-            }
-        };
-    }
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index 5f03962..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveDoubleAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				int header = LazyUtils.byteArrayToInt(bytes, start);
-				long unsignedValue = (long) header;
-				return (int) ((unsignedValue - ((long) Integer.MIN_VALUE)) & 0xffffffffL);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index e4587a2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveDoubleDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-	private final INormalizedKeyComputerFactory ascNormalizedKeyComputerFactory = new HiveDoubleAscNormalizedKeyComputerFactory();
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-		return new INormalizedKeyComputer() {
-			private INormalizedKeyComputer nmkComputer = ascNormalizedKeyComputerFactory
-					.createNormalizedKeyComputer();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				int nk = nmkComputer.normalize(bytes, start, length);
-				return (int) ((long) Integer.MAX_VALUE - (long) (nk - Integer.MIN_VALUE));
-			}
-
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index 2ff390a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveIntegerAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private VInt vint = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, vint);
-				if (vint.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ vint.length + " expected " + length);
-				long unsignedValue = (long) vint.value;
-				return (int) ((unsignedValue - ((long) Integer.MIN_VALUE)) & 0xffffffffL);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index 8eff1f8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveIntegerDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private VInt vint = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, vint);
-				if (vint.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ vint.length + " expected " + length);
-				long unsignedValue = (long) vint.value;
-				return (int) ((long) 0xffffffff - unsignedValue);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index 768eec2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveLongAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private static final int POSTIVE_LONG_MASK = (3 << 30);
-			private static final int NON_NEGATIVE_INT_MASK = (2 << 30);
-			private static final int NEGATIVE_LONG_MASK = (0 << 30);
-			private VLong vlong = new VLong();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVLong(bytes, start, vlong);
-				if (vlong.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ vlong.length + " expected " + length);
-				long value = (long) vlong.value;
-				int highValue = (int) (value >> 32);
-				if (highValue > 0) {
-					/**
-					 * larger than Integer.MAX
-					 */
-					int highNmk = getKey(highValue);
-					highNmk >>= 2;
-					highNmk |= POSTIVE_LONG_MASK;
-					return highNmk;
-				} else if (highValue == 0) {
-					/**
-					 * smaller than Integer.MAX but >=0
-					 */
-					int lowNmk = (int) value;
-					lowNmk >>= 2;
-					lowNmk |= NON_NEGATIVE_INT_MASK;
-					return lowNmk;
-				} else {
-					/**
-					 * less than 0; TODO: have not optimized for that
-					 */
-					int highNmk = getKey(highValue);
-					highNmk >>= 2;
-					highNmk |= NEGATIVE_LONG_MASK;
-					return highNmk;
-				}
-			}
-
-			private int getKey(int value) {
-				long unsignedFirstValue = (long) value;
-				int nmk = (int) ((unsignedFirstValue - ((long) Integer.MIN_VALUE)) & 0xffffffffL);
-				return nmk;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index 20ae56a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveLongDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-	private final INormalizedKeyComputerFactory ascNormalizedKeyComputerFactory = new HiveIntegerAscNormalizedKeyComputerFactory();
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-		return new INormalizedKeyComputer() {
-			private INormalizedKeyComputer nmkComputer = ascNormalizedKeyComputerFactory
-					.createNormalizedKeyComputer();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				int nk = nmkComputer.normalize(bytes, start, length);
-				return (int) ((long) Integer.MAX_VALUE - (long) (nk - Integer.MIN_VALUE));
-			}
-
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index b16ccba..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-
-public class HiveStringAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private VInt len = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, len);
-
-				if (len.value + len.length != length)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (len.value + len.length) + " but get "
-									+ length);
-				int nk = 0;
-				int offset = start + len.length;
-				for (int i = 0; i < 2; ++i) {
-					nk <<= 16;
-					if (i < len.value) {
-						char character = UTF8StringPointable.charAt(bytes,
-								offset);
-						nk += ((int) character) & 0xffff;
-						offset += UTF8StringPointable.charSize(bytes, offset);
-					}
-				}
-				return nk;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index e8978c6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-
-public class HiveStringDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-		return new INormalizedKeyComputer() {
-			private VInt len = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, len);
-				if (len.value + len.length != length)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (len.value + len.length) + " but get "
-									+ length);
-				int nk = 0;
-				int offset = start + len.length;
-				for (int i = 0; i < 2; ++i) {
-					nk <<= 16;
-					if (i < len.value) {
-						nk += ((int) UTF8StringPointable.charAt(bytes, offset)) & 0xffff;
-						offset += UTF8StringPointable.charSize(bytes, offset);
-					}
-				}
-				return (int) ((long) 0xffffffff - (long) nk);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/nullwriter/HiveNullWriterFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/nullwriter/HiveNullWriterFactory.java
deleted file mode 100644
index 91d08c6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/nullwriter/HiveNullWriterFactory.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.nullwriter;
-
-import java.io.DataOutput;
-
-import edu.uci.ics.hyracks.api.dataflow.value.INullWriter;
-import edu.uci.ics.hyracks.api.dataflow.value.INullWriterFactory;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-
-public class HiveNullWriterFactory implements INullWriterFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	public static HiveNullWriterFactory INSTANCE = new HiveNullWriterFactory();
-
-	@Override
-	public INullWriter createNullWriter() {
-		return new HiveNullWriter();
-	}
-}
-
-class HiveNullWriter implements INullWriter {
-
-	@Override
-	public void writeNull(DataOutput out) throws HyracksDataException {
-		// do nothing
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspector.java
deleted file mode 100644
index 3d2b141..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspector.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspector;
-
-public class HiveBinaryBooleanInspector implements IBinaryBooleanInspector {
-
-	HiveBinaryBooleanInspector() {
-	}
-
-	@Override
-	public boolean getBooleanValue(byte[] bytes, int offset, int length) {
-		if (length == 0)
-			return false;
-		if (length != 1)
-			throw new IllegalStateException("boolean field error: with length "
-					+ length);
-		return bytes[0] == 1;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspectorFactory.java
deleted file mode 100644
index 86afbee..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspectorFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspector;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspectorFactory;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-
-public class HiveBinaryBooleanInspectorFactory implements
-		IBinaryBooleanInspectorFactory {
-	private static final long serialVersionUID = 1L;
-	public static HiveBinaryBooleanInspectorFactory INSTANCE = new HiveBinaryBooleanInspectorFactory();
-
-	private HiveBinaryBooleanInspectorFactory() {
-
-	}
-
-	@Override
-	public IBinaryBooleanInspector createBinaryBooleanInspector(
-			IHyracksTaskContext arg0) {
-		return new HiveBinaryBooleanInspector();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspector.java
deleted file mode 100644
index e82e501..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspector.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspector;
-
-public class HiveBinaryIntegerInspector implements IBinaryIntegerInspector {
-	private VInt value = new VInt();
-
-	HiveBinaryIntegerInspector() {
-	}
-
-	@Override
-	public int getIntegerValue(byte[] bytes, int offset, int length) {
-		LazyUtils.readVInt(bytes, offset, value);
-		if (value.length != length)
-			throw new IllegalArgumentException(
-					"length mismatch in int hash function actual: " + length
-							+ " expected " + value.length);
-		return value.value;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspectorFactory.java
deleted file mode 100644
index b44e610..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspectorFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspector;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspectorFactory;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-
-public class HiveBinaryIntegerInspectorFactory implements
-		IBinaryIntegerInspectorFactory {
-	private static final long serialVersionUID = 1L;
-	public static HiveBinaryIntegerInspectorFactory INSTANCE = new HiveBinaryIntegerInspectorFactory();
-
-	private HiveBinaryIntegerInspectorFactory() {
-
-	}
-
-	@Override
-	public IBinaryIntegerInspector createBinaryIntegerInspector(
-			IHyracksTaskContext arg0) {
-		return new HiveBinaryIntegerInspector();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveConnectorPolicyAssignmentPolicy.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveConnectorPolicyAssignmentPolicy.java
deleted file mode 100644
index 8f559e2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveConnectorPolicyAssignmentPolicy.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import edu.uci.ics.hyracks.api.dataflow.IConnectorDescriptor;
-import edu.uci.ics.hyracks.api.dataflow.connectors.IConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.IConnectorPolicyAssignmentPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.PipeliningConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.SendSideMaterializedBlockingConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.SendSideMaterializedPipeliningConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy;
-import edu.uci.ics.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
-import edu.uci.ics.hyracks.dataflow.std.connectors.MToNPartitioningMergingConnectorDescriptor;
-
-public class HiveConnectorPolicyAssignmentPolicy implements
-		IConnectorPolicyAssignmentPolicy {
-	public enum Policy {
-		PIPELINING, SEND_SIDE_MAT_PIPELINING, SEND_SIDE_MAT_BLOCKING, SEND_SIDE_MAT_RECEIVE_SIDE_MAT_BLOCKING;
-	};
-
-	private static final long serialVersionUID = 1L;
-
-	private final IConnectorPolicy pipeliningPolicy = new PipeliningConnectorPolicy();
-	private final IConnectorPolicy sendSideMatPipeliningPolicy = new SendSideMaterializedPipeliningConnectorPolicy();
-	private final IConnectorPolicy sendSideMatBlockingPolicy = new SendSideMaterializedBlockingConnectorPolicy();
-	private final IConnectorPolicy sendSideMatReceiveSideMatBlockingPolicy = new SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy();
-	private final Policy policy;
-
-	public HiveConnectorPolicyAssignmentPolicy(Policy policy) {
-		this.policy = policy;
-	}
-
-	@Override
-	public IConnectorPolicy getConnectorPolicyAssignment(
-			IConnectorDescriptor c, int nProducers, int nConsumers,
-			int[] fanouts) {
-		if (c instanceof MToNPartitioningMergingConnectorDescriptor) {
-			// avoid deadlocks
-			switch (policy) {
-			case PIPELINING:
-			case SEND_SIDE_MAT_PIPELINING:
-				return sendSideMatPipeliningPolicy;
-			case SEND_SIDE_MAT_BLOCKING:
-				return sendSideMatBlockingPolicy;
-			case SEND_SIDE_MAT_RECEIVE_SIDE_MAT_BLOCKING:
-				return sendSideMatReceiveSideMatBlockingPolicy;
-			default:
-				return sendSideMatPipeliningPolicy;
-			}
-		} else if (c instanceof MToNPartitioningConnectorDescriptor) {
-			// support different repartitioning policies
-			switch (policy) {
-			case PIPELINING:
-				return pipeliningPolicy;
-			case SEND_SIDE_MAT_PIPELINING:
-				return sendSideMatPipeliningPolicy;
-			case SEND_SIDE_MAT_BLOCKING:
-				return sendSideMatBlockingPolicy;
-			case SEND_SIDE_MAT_RECEIVE_SIDE_MAT_BLOCKING:
-				return sendSideMatReceiveSideMatBlockingPolicy;
-			default:
-				return pipeliningPolicy;
-			}
-		} else {
-			// pipelining for other connectors
-			return pipeliningPolicy;
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSink.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSink.java
deleted file mode 100644
index e4fbca5..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSink.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
-
-public class HiveDataSink implements IDataSink {
-
-	private Object[] schema;
-
-	private Object fsOperator;
-
-	public HiveDataSink(Object sink, Object[] sourceSchema) {
-		schema = sourceSchema;
-		fsOperator = sink;
-	}
-
-	@Override
-	public Object getId() {
-		return fsOperator;
-	}
-
-	@Override
-	public Object[] getSchemaTypes() {
-		return schema;
-	}
-
-	public IPartitioningProperty getPartitioningProperty() {
-		return new RandomPartitioningProperty(new HiveDomain());
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSource.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSource.java
deleted file mode 100644
index edff056..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSource.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
-
-public class HiveDataSource<P> implements IDataSource<P> {
-
-	private P source;
-
-	private Object[] schema;
-
-	public HiveDataSource(P dataSource, Object[] sourceSchema) {
-		source = dataSource;
-		schema = sourceSchema;
-	}
-
-	@Override
-	public P getId() {
-		return source;
-	}
-
-	@Override
-	public Object[] getSchemaTypes() {
-		return schema;
-	}
-
-	@Override
-	public void computeFDs(List<LogicalVariable> scanVariables,
-			List<FunctionalDependency> fdList) {
-	}
-
-	@Override
-	public IDataSourcePropertiesProvider getPropertiesProvider() {
-		return new HiveDataSourcePartitioningProvider();
-	}
-
-	@Override
-	public String toString() {
-		PartitionDesc desc = (PartitionDesc) source;
-		return desc.getTableName();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSourcePartitioningProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSourcePartitioningProvider.java
deleted file mode 100644
index 08dd684..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSourcePartitioningProvider.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
-
-public class HiveDataSourcePartitioningProvider implements
-		IDataSourcePropertiesProvider {
-
-	@Override
-	public IPhysicalPropertiesVector computePropertiesVector(
-			List<LogicalVariable> scanVariables) {
-		IPartitioningProperty property = new RandomPartitioningProperty(
-				new HiveDomain());
-		IPhysicalPropertiesVector vector = new StructuralPropertiesVector(
-				property, new LinkedList<ILocalStructuralProperty>());
-		return vector;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDomain.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDomain.java
deleted file mode 100644
index 0af253a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDomain.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.INodeDomain;
-
-public class HiveDomain implements INodeDomain {
-
-	@Override
-	public boolean sameAs(INodeDomain domain) {
-		return true;
-	}
-
-	@Override
-	public Integer cardinality() {
-		return 0;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
deleted file mode 100644
index 6948769..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourceIndex;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import edu.uci.ics.hyracks.algebricks.data.IPrinterFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
-import edu.uci.ics.hyracks.api.dataflow.IOperatorDescriptor;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-
-@SuppressWarnings("rawtypes")
-public class HiveMetaDataProvider<S, T> implements IMetadataProvider<S, T> {
-
-    private Operator fileSink;
-    private Schema outputSchema;
-    private HashMap<S, IDataSource<S>> dataSourceMap;
-
-    public HiveMetaDataProvider(Operator fsOp, Schema oi, HashMap<S, IDataSource<S>> map) {
-        fileSink = fsOp;
-        outputSchema = oi;
-        dataSourceMap = map;
-    }
-
-    @Override
-    public IDataSourceIndex<T, S> findDataSourceIndex(T indexId, S dataSourceId) throws AlgebricksException {
-        return null;
-    }
-
-    @Override
-    public IDataSource<S> findDataSource(S id) throws AlgebricksException {
-        return dataSourceMap.get(id);
-    }
-
-    @Override
-    public boolean scannerOperatorIsLeaf(IDataSource<S> dataSource) {
-        return true;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getScannerRuntime(IDataSource<S> dataSource,
-            List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
-            IOperatorSchema opSchema, IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec)
-            throws AlgebricksException {
-
-        S desc = dataSource.getId();
-        HiveScanRuntimeGenerator generator = new HiveScanRuntimeGenerator((PartitionDesc) desc);
-        return generator.getRuntimeOperatorAndConstraint(dataSource, scanVariables, projectVariables, projectPushed,
-                context, jobSpec);
-    }
-
-    @Override
-    public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink,
-            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc) {
-
-        HiveWriteRuntimeGenerator generator = new HiveWriteRuntimeGenerator((FileSinkOperator) fileSink, outputSchema);
-        return generator.getWriterRuntime(inputDesc);
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getDeleteRuntime(IDataSource<S> arg0,
-            IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, RecordDescriptor arg4,
-            JobGenContext arg5, JobSpecification arg6) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getInsertRuntime(IDataSource<S> arg0,
-            IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, RecordDescriptor arg4,
-            JobGenContext arg5, JobSpecification arg6) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getWriteResultRuntime(IDataSource<S> arg0,
-            IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, JobGenContext arg4,
-            JobSpecification arg5) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
-            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
-            JobSpecification spec) throws AlgebricksException {
-        return null;
-    }
-
-    @Override
-    public IFunctionInfo lookupFunction(FunctionIdentifier arg0) {
-        return new HiveFunctionInfo(arg0, null);
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexInsertRuntime(
-            IDataSourceIndex<T, S> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
-            IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
-            ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec)
-            throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexDeleteRuntime(
-            IDataSourceIndex<T, S> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
-            IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
-            ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec)
-            throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveOperatorSchema.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveOperatorSchema.java
deleted file mode 100644
index 83382f0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveOperatorSchema.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-
-public class HiveOperatorSchema implements IOperatorSchema {
-
-	private final Map<LogicalVariable, Integer> varMap;
-
-	private final List<LogicalVariable> varList;
-
-	public HiveOperatorSchema() {
-		varMap = new HashMap<LogicalVariable, Integer>();
-		varList = new ArrayList<LogicalVariable>();
-	}
-
-	@Override
-	public void addAllVariables(IOperatorSchema source) {
-		for (LogicalVariable v : source) {
-			varMap.put(v, varList.size());
-			varList.add(v);
-		}
-	}
-
-	@Override
-	public void addAllNewVariables(IOperatorSchema source) {
-		for (LogicalVariable v : source) {
-			if (varMap.get(v) == null) {
-				varMap.put(v, varList.size());
-				varList.add(v);
-			}
-		}
-	}
-
-	@Override
-	public int addVariable(LogicalVariable var) {
-		int idx = varList.size();
-		varMap.put(var, idx);
-		varList.add(var);
-		return idx;
-	}
-
-	@Override
-	public void clear() {
-		varMap.clear();
-		varList.clear();
-	}
-
-	@Override
-	public int findVariable(LogicalVariable var) {
-		Integer i = varMap.get(var);
-		if (i == null) {
-			return -1;
-		}
-		return i;
-	}
-
-	@Override
-	public int getSize() {
-		return varList.size();
-	}
-
-	@Override
-	public LogicalVariable getVariable(int index) {
-		return varList.get(index);
-	}
-
-	@Override
-	public Iterator<LogicalVariable> iterator() {
-		return varList.iterator();
-	}
-
-	@Override
-	public String toString() {
-		return varMap.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveScanRuntimeGenerator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveScanRuntimeGenerator.java
deleted file mode 100644
index 9c8aee4..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveScanRuntimeGenerator.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.runtime.operator.filescan.HiveFileScanOperatorDescriptor;
-import edu.uci.ics.hivesterix.runtime.operator.filescan.HiveFileSplitProvider;
-import edu.uci.ics.hivesterix.runtime.operator.filescan.HiveTupleParserFactory;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import edu.uci.ics.hyracks.algebricks.data.ISerializerDeserializerProvider;
-import edu.uci.ics.hyracks.api.dataflow.IOperatorDescriptor;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParserFactory;
-
-@SuppressWarnings({ "rawtypes", "deprecation" })
-public class HiveScanRuntimeGenerator {
-
-	private PartitionDesc fileDesc;
-
-	private transient Path filePath;
-
-	private String filePathName;
-
-	private Properties properties;
-
-	public HiveScanRuntimeGenerator(PartitionDesc path) {
-		fileDesc = path;
-		properties = fileDesc.getProperties();
-
-		String inputPath = (String) properties.getProperty("location");
-
-		if (inputPath.startsWith("file:")) {
-			// Windows
-			String[] strs = inputPath.split(":");
-			filePathName = strs[strs.length - 1];
-		} else {
-			// Linux
-			filePathName = inputPath;
-		}
-
-		filePath = new Path(filePathName);
-	}
-
-	public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getRuntimeOperatorAndConstraint(
-			IDataSource dataSource, List<LogicalVariable> scanVariables,
-			List<LogicalVariable> projectVariables, boolean projectPushed,
-			JobGenContext context, JobSpecification jobSpec)
-			throws AlgebricksException {
-		// get the correct delimiter from Hive metastore or other data
-		// structures
-		IOperatorSchema propagatedSchema = new HiveOperatorSchema();
-
-		List<LogicalVariable> outputVariables = projectPushed ? projectVariables
-				: scanVariables;
-		for (LogicalVariable var : outputVariables)
-			propagatedSchema.addVariable(var);
-
-		int[] outputColumnsOffset = new int[scanVariables.size()];
-		int i = 0;
-		for (LogicalVariable var : scanVariables)
-			if (outputVariables.contains(var)) {
-				int offset = outputVariables.indexOf(var);
-				outputColumnsOffset[i++] = offset;
-			} else
-				outputColumnsOffset[i++] = -1;
-
-		Object[] schemaTypes = dataSource.getSchemaTypes();
-		// get record descriptor
-		RecordDescriptor recDescriptor = mkRecordDescriptor(propagatedSchema,
-				schemaTypes, context);
-
-		// setup the run time operator
-		JobConf conf = ConfUtil.getJobConf(fileDesc.getInputFileFormatClass(),
-				filePath);
-		int clusterSize = ConfUtil.getNCs().length;
-		IFileSplitProvider fsprovider = new HiveFileSplitProvider(conf,
-				filePathName, clusterSize);
-		ITupleParserFactory tupleParserFactory = new HiveTupleParserFactory(
-				fileDesc, conf, outputColumnsOffset);
-		HiveFileScanOperatorDescriptor opDesc = new HiveFileScanOperatorDescriptor(
-				jobSpec, fsprovider, tupleParserFactory, recDescriptor);
-
-		return new Pair<IOperatorDescriptor, AlgebricksPartitionConstraint>(
-				opDesc, opDesc.getPartitionConstraint());
-	}
-
-	private static RecordDescriptor mkRecordDescriptor(
-			IOperatorSchema opSchema, Object[] types, JobGenContext context)
-			throws AlgebricksException {
-		ISerializerDeserializer[] fields = new ISerializerDeserializer[opSchema
-				.getSize()];
-		ISerializerDeserializerProvider sdp = context
-				.getSerializerDeserializerProvider();
-		int size = opSchema.getSize();
-		for (int i = 0; i < size; i++) {
-			Object t = types[i];
-			fields[i] = sdp.getSerializerDeserializer(t);
-			i++;
-		}
-		return new RecordDescriptor(fields);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveWriteRuntimeGenerator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveWriteRuntimeGenerator.java
deleted file mode 100644
index d372868..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveWriteRuntimeGenerator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.runtime.operator.filewrite.HivePushRuntimeFactory;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-
-@SuppressWarnings("deprecation")
-public class HiveWriteRuntimeGenerator {
-	private FileSinkOperator fileSink;
-
-	private Schema inputSchema;
-
-	public HiveWriteRuntimeGenerator(FileSinkOperator fsOp, Schema oi) {
-		fileSink = fsOp;
-		inputSchema = oi;
-	}
-
-	/**
-	 * get the write runtime
-	 * 
-	 * @param inputDesc
-	 * @return
-	 */
-	public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriterRuntime(
-			RecordDescriptor inputDesc) {
-		JobConf conf = ConfUtil.getJobConf();
-		IPushRuntimeFactory factory = new HivePushRuntimeFactory(inputDesc,
-				conf, fileSink, inputSchema);
-		Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> pair = new Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint>(
-				factory, null);
-		return pair;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveFileSplitProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveFileSplitProvider.java
deleted file mode 100644
index 2f988f8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveFileSplitProvider.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import edu.uci.ics.hyracks.dataflow.std.file.FileSplit;
-import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
-
-public abstract class AbstractHiveFileSplitProvider implements
-		IFileSplitProvider {
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public FileSplit[] getFileSplits() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@SuppressWarnings("deprecation")
-	public abstract org.apache.hadoop.mapred.FileSplit[] getFileSplitArray();
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveTupleParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveTupleParser.java
deleted file mode 100644
index a8addeb..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveTupleParser.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.InputStream;
-
-import org.apache.hadoop.mapred.FileSplit;
-
-import edu.uci.ics.hyracks.api.comm.IFrameWriter;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParser;
-
-@SuppressWarnings("deprecation")
-public abstract class AbstractHiveTupleParser implements ITupleParser {
-
-	@Override
-	public void parse(InputStream in, IFrameWriter writer)
-			throws HyracksDataException {
-		// empty implementation
-	}
-
-	/**
-	 * method for parsing HDFS file split
-	 * 
-	 * @param split
-	 * @param writer
-	 */
-	abstract public void parse(FileSplit split, IFrameWriter writer)
-			throws HyracksDataException;
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileScanOperatorDescriptor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileScanOperatorDescriptor.java
deleted file mode 100644
index 9e62c73..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileScanOperatorDescriptor.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.hadoop.mapred.FileSplit;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.IOperatorNodePushable;
-import edu.uci.ics.hyracks.api.dataflow.value.IRecordDescriptorProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-import edu.uci.ics.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
-import edu.uci.ics.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
-import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParser;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParserFactory;
-
-@SuppressWarnings("deprecation")
-public class HiveFileScanOperatorDescriptor extends
-		AbstractSingleActivityOperatorDescriptor {
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * tuple parser factory
-	 */
-	private final ITupleParserFactory tupleParserFactory;
-
-	/**
-	 * Hive file split
-	 */
-	private Partition[] parts;
-
-	/**
-	 * IFileSplitProvider
-	 */
-	private IFileSplitProvider fileSplitProvider;
-
-	/**
-	 * constrains in the form of host DNS names
-	 */
-	private String[] constraintsByHostNames;
-
-	/**
-	 * ip-to-node controller mapping
-	 */
-	private Map<String, List<String>> ncMapping;
-
-	/**
-	 * an array of NCs
-	 */
-	private String[] NCs;
-
-	/**
-	 * 
-	 * @param spec
-	 * @param fsProvider
-	 */
-	public HiveFileScanOperatorDescriptor(JobSpecification spec,
-			IFileSplitProvider fsProvider,
-			ITupleParserFactory tupleParserFactory, RecordDescriptor rDesc) {
-		super(spec, 0, 1);
-		this.tupleParserFactory = tupleParserFactory;
-		recordDescriptors[0] = rDesc;
-		fileSplitProvider = fsProvider;
-	}
-
-	/**
-	 * set partition constraint at the first time it is called the number of
-	 * partitions is obtained from HDFS name node
-	 */
-	public AlgebricksAbsolutePartitionConstraint getPartitionConstraint()
-			throws AlgebricksException {
-		FileSplit[] returnedSplits = ((AbstractHiveFileSplitProvider) fileSplitProvider)
-				.getFileSplitArray();
-		Random random = new Random(System.currentTimeMillis());
-		ncMapping = ConfUtil.getNCMapping();
-		NCs = ConfUtil.getNCs();
-
-		int size = 0;
-		for (FileSplit split : returnedSplits)
-			if (split != null)
-				size++;
-
-		FileSplit[] splits = new FileSplit[size];
-		for (int i = 0; i < returnedSplits.length; i++)
-			if (returnedSplits[i] != null)
-				splits[i] = returnedSplits[i];
-
-		System.out.println("number of splits: " + splits.length);
-		constraintsByHostNames = new String[splits.length];
-		for (int i = 0; i < splits.length; i++) {
-			try {
-				String[] loc = splits[i].getLocations();
-				Collections.shuffle(Arrays.asList(loc), random);
-				if (loc.length > 0) {
-					InetAddress[] allIps = InetAddress.getAllByName(loc[0]);
-					for (InetAddress ip : allIps) {
-						if (ncMapping.get(ip.getHostAddress()) != null) {
-							List<String> ncs = ncMapping.get(ip
-									.getHostAddress());
-							int pos = random.nextInt(ncs.size());
-							constraintsByHostNames[i] = ncs.get(pos);
-						} else {
-							int pos = random.nextInt(NCs.length);
-							constraintsByHostNames[i] = NCs[pos];
-						}
-					}
-				} else {
-					int pos = random.nextInt(NCs.length);
-					constraintsByHostNames[i] = NCs[pos];
-					if (splits[i].getLength() > 0)
-						throw new IllegalStateException(
-								"non local scanner non locations!!");
-				}
-			} catch (IOException e) {
-				throw new AlgebricksException(e);
-			}
-		}
-
-		parts = new Partition[splits.length];
-		for (int i = 0; i < splits.length; i++) {
-			parts[i] = new Partition(splits[i]);
-		}
-		return new AlgebricksAbsolutePartitionConstraint(constraintsByHostNames);
-	}
-
-	@Override
-	public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
-			IRecordDescriptorProvider recordDescProvider, int partition,
-			int nPartitions) {
-
-		final ITupleParser tp = tupleParserFactory.createTupleParser(ctx);
-		final int partitionId = partition;
-
-		return new AbstractUnaryOutputSourceOperatorNodePushable() {
-
-			@Override
-			public void initialize() throws HyracksDataException {
-				writer.open();
-				FileSplit split = parts[partitionId].toFileSplit();
-				if (split == null)
-					throw new HyracksDataException("partition " + partitionId
-							+ " is null!");
-				((AbstractHiveTupleParser) tp).parse(split, writer);
-				writer.close();
-			}
-		};
-	}
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileSplitProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileSplitProvider.java
deleted file mode 100644
index d92d353..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileSplitProvider.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.UUID;
-
-import org.apache.hadoop.mapred.FileSplit;
-import org.apache.hadoop.mapred.InputFormat;
-import org.apache.hadoop.mapred.JobConf;
-import org.eclipse.jetty.util.log.Log;
-
-@SuppressWarnings({ "deprecation", "rawtypes" })
-public class HiveFileSplitProvider extends AbstractHiveFileSplitProvider {
-	private static final long serialVersionUID = 1L;
-
-	private transient InputFormat format;
-	private transient JobConf conf;
-	private String confContent;
-	final private int nPartition;
-	private transient FileSplit[] splits;
-
-	public HiveFileSplitProvider(JobConf conf, String filePath, int nPartition) {
-		format = conf.getInputFormat();
-		this.conf = conf;
-		this.nPartition = nPartition;
-		writeConfContent();
-	}
-
-	private void writeConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			DataOutputStream out = new DataOutputStream(new FileOutputStream(
-					new File(fileName)));
-			conf.writeXml(out);
-			out.close();
-
-			DataInputStream in = new DataInputStream(new FileInputStream(
-					fileName));
-			StringBuffer buffer = new StringBuffer();
-			String line;
-			while ((line = in.readLine()) != null) {
-				buffer.append(line + "\n");
-			}
-			in.close();
-			confContent = buffer.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void readConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			PrintWriter out = new PrintWriter((new OutputStreamWriter(
-					new FileOutputStream(new File(fileName)))));
-			out.write(confContent);
-			out.close();
-			conf = new JobConf(fileName);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	/**
-	 * get the HDFS file split
-	 */
-	public FileSplit[] getFileSplitArray() {
-		readConfContent();
-		conf.setClassLoader(this.getClass().getClassLoader());
-		format = conf.getInputFormat();
-		// int splitSize = conf.getInt("mapred.min.split.size", 0);
-
-		if (splits == null) {
-			try {
-				splits = (org.apache.hadoop.mapred.FileSplit[]) format
-						.getSplits(conf, nPartition);
-				System.out.println("hdfs split number: " + splits.length);
-			} catch (IOException e) {
-				String inputPath = conf.get("mapred.input.dir");
-				String hdfsURL = conf.get("fs.default.name");
-				String alternatePath = inputPath.replaceAll(hdfsURL, "file:");
-				conf.set("mapred.input.dir", alternatePath);
-				try {
-					splits = (org.apache.hadoop.mapred.FileSplit[]) format
-							.getSplits(conf, nPartition);
-					System.out.println("hdfs split number: " + splits.length);
-				} catch (IOException e1) {
-					e1.printStackTrace();
-					Log.debug(e1.getMessage());
-					return null;
-				}
-			}
-		}
-		return splits;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParser.java
deleted file mode 100644
index 7681bd1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParser.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazySimpleStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.Writable;
-import org.apache.hadoop.mapred.FileSplit;
-import org.apache.hadoop.mapred.InputFormat;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.RecordReader;
-import org.apache.hadoop.mapred.Reporter;
-import org.apache.hadoop.util.ReflectionUtils;
-
-import edu.uci.ics.hivesterix.serde.parser.IHiveParser;
-import edu.uci.ics.hivesterix.serde.parser.TextToBinaryTupleParser;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.api.comm.IFrameWriter;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import edu.uci.ics.hyracks.dataflow.common.comm.util.FrameUtils;
-
-@SuppressWarnings({ "rawtypes", "deprecation", "unchecked" })
-public class HiveTupleParser extends AbstractHiveTupleParser {
-
-	private int[] outputColumnsOffset;
-	/**
-	 * class of input format
-	 */
-	private InputFormat inputFormat;
-
-	/**
-	 * serialization/deserialization object
-	 */
-	private SerDe serDe;
-
-	/**
-	 * the input row object inspector
-	 */
-	private ObjectInspector objectInspector;
-
-	/**
-	 * the hadoop job conf
-	 */
-	private JobConf job;
-
-	/**
-	 * Hyrax context to control resource allocation
-	 */
-	private final IHyracksTaskContext ctx;
-
-	/**
-	 * lazy serde: format flow in between operators
-	 */
-	private final SerDe outputSerDe;
-
-	/**
-	 * the parser from hive data to binary data
-	 */
-	private IHiveParser parser = null;
-
-	/**
-	 * parser for any hive input format
-	 * 
-	 * @param inputFormatClass
-	 * @param serDeClass
-	 * @param tbl
-	 * @param conf
-	 * @throws AlgebricksException
-	 */
-	public HiveTupleParser(String inputFormatClass, String serDeClass,
-			String outputSerDeClass, Properties tbl, JobConf conf,
-			final IHyracksTaskContext ctx, int[] outputColumnsOffset)
-			throws AlgebricksException {
-		try {
-			conf.setClassLoader(this.getClass().getClassLoader());
-
-			inputFormat = (InputFormat) ReflectionUtils.newInstance(
-					Class.forName(inputFormatClass), conf);
-			job = conf;
-
-			// initialize the input serde
-			serDe = (SerDe) ReflectionUtils.newInstance(
-					Class.forName(serDeClass), job);
-			serDe.initialize(job, tbl);
-
-			// initialize the output serde
-			outputSerDe = (SerDe) ReflectionUtils.newInstance(
-					Class.forName(outputSerDeClass), job);
-			outputSerDe.initialize(job, tbl);
-
-			// object inspector of the row
-			objectInspector = serDe.getObjectInspector();
-
-			// hyracks context
-			this.ctx = ctx;
-			this.outputColumnsOffset = outputColumnsOffset;
-
-			if (objectInspector instanceof LazySimpleStructObjectInspector) {
-				LazySimpleStructObjectInspector rowInspector = (LazySimpleStructObjectInspector) objectInspector;
-				List<? extends StructField> fieldRefs = rowInspector
-						.getAllStructFieldRefs();
-				boolean lightWeightParsable = true;
-				for (StructField fieldRef : fieldRefs) {
-					Category category = fieldRef.getFieldObjectInspector()
-							.getCategory();
-					if (!(category == Category.PRIMITIVE)) {
-						lightWeightParsable = false;
-						break;
-					}
-				}
-				if (lightWeightParsable)
-					parser = new TextToBinaryTupleParser(
-							this.outputColumnsOffset, this.objectInspector);
-			}
-		} catch (Exception e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * parse a input HDFS file split, the result is send to the writer
-	 * one-frame-a-time
-	 * 
-	 * @param split
-	 *            the HDFS file split
-	 * @param writer
-	 *            the writer
-	 * @throws HyracksDataException
-	 *             if there is sth. wrong in the ser/de
-	 */
-	@Override
-	public void parse(FileSplit split, IFrameWriter writer)
-			throws HyracksDataException {
-		try {
-			StructObjectInspector structInspector = (StructObjectInspector) objectInspector;
-
-			// create the reader, key, and value
-			RecordReader reader = inputFormat.getRecordReader(split, job,
-					Reporter.NULL);
-			Object key = reader.createKey();
-			Object value = reader.createValue();
-
-			// allocate a new frame
-			ByteBuffer frame = ctx.allocateFrame();
-			FrameTupleAppender appender = new FrameTupleAppender(
-					ctx.getFrameSize());
-			appender.reset(frame, true);
-
-			List<? extends StructField> fieldRefs = structInspector
-					.getAllStructFieldRefs();
-			int size = 0;
-			for (int i = 0; i < outputColumnsOffset.length; i++)
-				if (outputColumnsOffset[i] >= 0)
-					size++;
-
-			ArrayTupleBuilder tb = new ArrayTupleBuilder(size);
-			DataOutput dos = tb.getDataOutput();
-			StructField[] outputFieldRefs = new StructField[size];
-			Object[] outputFields = new Object[size];
-			for (int i = 0; i < outputColumnsOffset.length; i++)
-				if (outputColumnsOffset[i] >= 0)
-					outputFieldRefs[outputColumnsOffset[i]] = fieldRefs.get(i);
-
-			while (reader.next(key, value)) {
-				// reuse the tuple builder
-				tb.reset();
-				if (parser != null) {
-					Text text = (Text) value;
-					parser.parse(text.getBytes(), 0, text.getLength(), tb);
-				} else {
-					Object row = serDe.deserialize((Writable) value);
-					// write fields to the tuple builder one by one
-					int i = 0;
-					for (StructField fieldRef : fieldRefs) {
-						if (outputColumnsOffset[i] >= 0)
-							outputFields[outputColumnsOffset[i]] = structInspector
-									.getStructFieldData(row, fieldRef);
-						i++;
-					}
-
-					i = 0;
-					for (Object field : outputFields) {
-						BytesWritable fieldWritable = (BytesWritable) outputSerDe
-								.serialize(field, outputFieldRefs[i]
-										.getFieldObjectInspector());
-						dos.write(fieldWritable.getBytes(), 0,
-								fieldWritable.getSize());
-						tb.addFieldEndOffset();
-						i++;
-					}
-				}
-
-				if (!appender.append(tb.getFieldEndOffsets(),
-						tb.getByteArray(), 0, tb.getSize())) {
-					if (appender.getTupleCount() <= 0)
-						throw new IllegalStateException(
-								"zero tuples in a frame!");
-					FrameUtils.flushFrame(frame, writer);
-					appender.reset(frame, true);
-					if (!appender.append(tb.getFieldEndOffsets(),
-							tb.getByteArray(), 0, tb.getSize())) {
-						throw new IllegalStateException();
-					}
-				}
-			}
-			reader.close();
-			System.gc();
-
-			// flush the last frame
-			if (appender.getTupleCount() > 0) {
-				FrameUtils.flushFrame(frame, writer);
-			}
-		} catch (IOException e) {
-			throw new HyracksDataException(e);
-		} catch (SerDeException e) {
-			throw new HyracksDataException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParserFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParserFactory.java
deleted file mode 100644
index 69aa881..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParserFactory.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParser;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParserFactory;
-
-@SuppressWarnings("deprecation")
-public class HiveTupleParserFactory implements ITupleParserFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private int[] outputColumns;
-
-	private String outputSerDeClass = LazySerDe.class.getName();
-
-	private String inputSerDeClass;
-
-	private transient JobConf conf;
-
-	private Properties tbl;
-
-	private String confContent;
-
-	private String inputFormatClass;
-
-	public HiveTupleParserFactory(PartitionDesc desc, JobConf conf,
-			int[] outputColumns) {
-		this.conf = conf;
-		tbl = desc.getProperties();
-		inputFormatClass = (String) tbl.getProperty("file.inputformat");
-		inputSerDeClass = (String) tbl.getProperty("serialization.lib");
-		this.outputColumns = outputColumns;
-
-		writeConfContent();
-	}
-
-	@Override
-	public ITupleParser createTupleParser(IHyracksTaskContext ctx) {
-		readConfContent();
-		try {
-			return new HiveTupleParser(inputFormatClass, inputSerDeClass,
-					outputSerDeClass, tbl, conf, ctx, outputColumns);
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-	}
-
-	private void writeConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			DataOutputStream out = new DataOutputStream(new FileOutputStream(
-					new File(fileName)));
-			conf.writeXml(out);
-			out.close();
-
-			DataInputStream in = new DataInputStream(new FileInputStream(
-					fileName));
-			StringBuffer buffer = new StringBuffer();
-			String line;
-			while ((line = in.readLine()) != null) {
-				buffer.append(line + "\n");
-			}
-			in.close();
-			confContent = buffer.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void readConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			PrintWriter out = new PrintWriter((new OutputStreamWriter(
-					new FileOutputStream(new File(fileName)))));
-			out.write(confContent);
-			out.close();
-
-			conf = new JobConf(fileName);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/Partition.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/Partition.java
deleted file mode 100644
index 1b3dcf2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/Partition.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapred.FileSplit;
-
-@SuppressWarnings("deprecation")
-public class Partition implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	private String uri;
-	private long offset;
-	private long length;
-	private String[] locations;
-
-	public Partition() {
-	}
-
-	public Partition(FileSplit file) {
-		uri = file.getPath().toUri().toString();
-		offset = file.getStart();
-		length = file.getLength();
-		try {
-			locations = file.getLocations();
-		} catch (IOException e) {
-			throw new IllegalStateException(e);
-		}
-	}
-
-	public FileSplit toFileSplit() {
-		return new FileSplit(new Path(uri), offset, length, locations);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HiveFileWritePushRuntime.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HiveFileWritePushRuntime.java
deleted file mode 100644
index 05e79ea..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HiveFileWritePushRuntime.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filewrite;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.OperatorFactory;
-import org.apache.hadoop.hive.ql.exec.RowSchema;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.serde.lazy.LazyColumnar;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyColumnarObjectInspector;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntime;
-import edu.uci.ics.hyracks.api.comm.IFrameWriter;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.FrameTupleReference;
-
-@SuppressWarnings("deprecation")
-public class HiveFileWritePushRuntime implements IPushRuntime {
-
-	/**
-	 * frame tuple accessor to access byte buffer
-	 */
-	private final FrameTupleAccessor accessor;
-
-	/**
-	 * input object inspector
-	 */
-	private final ObjectInspector inputInspector;
-
-	/**
-	 * cachedInput
-	 */
-	private final LazyColumnar cachedInput;
-
-	/**
-	 * File sink operator of Hive
-	 */
-	private final FileSinkDesc fileSink;
-
-	/**
-	 * job configuration, which contain name node and other configuration
-	 * information
-	 */
-	private JobConf conf;
-
-	/**
-	 * input object inspector
-	 */
-	private final Schema inputSchema;
-
-	/**
-	 * a copy of hive schema representation
-	 */
-	private RowSchema rowSchema;
-
-	/**
-	 * the Hive file sink operator
-	 */
-	private FileSinkOperator fsOp;
-
-	/**
-	 * cached tuple object reference
-	 */
-	private FrameTupleReference tuple = new FrameTupleReference();
-
-	/**
-	 * @param spec
-	 * @param fsProvider
-	 */
-	public HiveFileWritePushRuntime(IHyracksTaskContext context,
-			RecordDescriptor inputRecordDesc, JobConf job, FileSinkDesc fs,
-			RowSchema schema, Schema oi) {
-		fileSink = fs;
-		fileSink.setGatherStats(false);
-
-		rowSchema = schema;
-		conf = job;
-		inputSchema = oi;
-
-		accessor = new FrameTupleAccessor(context.getFrameSize(),
-				inputRecordDesc);
-		inputInspector = inputSchema.toObjectInspector();
-		cachedInput = new LazyColumnar(
-				(LazyColumnarObjectInspector) inputInspector);
-	}
-
-	@Override
-	public void open() throws HyracksDataException {
-		fsOp = (FileSinkOperator) OperatorFactory.get(fileSink, rowSchema);
-		fsOp.setChildOperators(null);
-		fsOp.setParentOperators(null);
-		conf.setClassLoader(this.getClass().getClassLoader());
-
-		ObjectInspector[] inspectors = new ObjectInspector[1];
-		inspectors[0] = inputInspector;
-		try {
-			fsOp.initialize(conf, inspectors);
-			fsOp.setExecContext(null);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-		accessor.reset(buffer);
-		int n = accessor.getTupleCount();
-		try {
-			for (int i = 0; i < n; ++i) {
-				tuple.reset(accessor, i);
-				cachedInput.init(tuple);
-				fsOp.process(cachedInput, 0);
-			}
-		} catch (HiveException e) {
-			throw new HyracksDataException(e);
-		}
-	}
-
-	@Override
-	public void close() throws HyracksDataException {
-		try {
-			Thread.currentThread().setContextClassLoader(
-					this.getClass().getClassLoader());
-			fsOp.closeOp(false);
-		} catch (HiveException e) {
-			throw new HyracksDataException(e);
-		}
-	}
-
-	@Override
-	public void setFrameWriter(int index, IFrameWriter writer,
-			RecordDescriptor recordDesc) {
-		throw new IllegalStateException();
-	}
-
-	@Override
-	public void setInputRecordDescriptor(int index,
-			RecordDescriptor recordDescriptor) {
-	}
-
-	@Override
-	public void fail() throws HyracksDataException {
-
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HivePushRuntimeFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HivePushRuntimeFactory.java
deleted file mode 100644
index 43e90fa..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HivePushRuntimeFactory.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filewrite;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.UUID;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.RowSchema;
-import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntime;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-
-@SuppressWarnings("deprecation")
-public class HivePushRuntimeFactory implements IPushRuntimeFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private final RecordDescriptor inputRecordDesc;
-	private transient JobConf conf;
-	private final FileSinkDesc fileSink;
-	private final RowSchema outSchema;
-	private final Schema schema;
-
-	/**
-	 * the content of the configuration
-	 */
-	private String confContent;
-
-	public HivePushRuntimeFactory(RecordDescriptor inputRecordDesc,
-			JobConf conf, FileSinkOperator fsp, Schema sch) {
-		this.inputRecordDesc = inputRecordDesc;
-		this.conf = conf;
-		this.fileSink = fsp.getConf();
-		outSchema = fsp.getSchema();
-		this.schema = sch;
-
-		writeConfContent();
-	}
-
-	@Override
-	public String toString() {
-		return "file write";
-	}
-
-	@Override
-	public IPushRuntime createPushRuntime(IHyracksTaskContext context)
-			throws AlgebricksException {
-		if (conf == null)
-			readConfContent();
-
-		return new HiveFileWritePushRuntime(context, inputRecordDesc, conf,
-				fileSink, outSchema, schema);
-	}
-
-	private void readConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			PrintWriter out = new PrintWriter((new OutputStreamWriter(
-					new FileOutputStream(new File(fileName)))));
-			out.write(confContent);
-			out.close();
-			conf = new JobConf(fileName);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void writeConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			DataOutputStream out = new DataOutputStream(new FileOutputStream(
-					new File(fileName)));
-			conf.writeXml(out);
-			out.close();
-
-			DataInputStream in = new DataInputStream(new FileInputStream(
-					fileName));
-			StringBuffer buffer = new StringBuffer();
-			String line;
-			while ((line = in.readLine()) != null) {
-				buffer.append(line + "\n");
-			}
-			in.close();
-			confContent = buffer.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryComparatorFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryComparatorFactoryProvider.java
deleted file mode 100644
index 5a2e98c..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryComparatorFactoryProvider.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveByteBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveByteBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveDoubleBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveDoubleBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveFloatBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveFloatBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveIntegerBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveIntegerBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveLongBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveLongBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveShortBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveShortBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveStringBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveStringBinaryDescComparatorFactory;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveBinaryComparatorFactoryProvider implements
-		IBinaryComparatorFactoryProvider {
-
-	public static final HiveBinaryComparatorFactoryProvider INSTANCE = new HiveBinaryComparatorFactoryProvider();
-
-	private HiveBinaryComparatorFactoryProvider() {
-	}
-
-	@Override
-	public IBinaryComparatorFactory getBinaryComparatorFactory(Object type,
-			boolean ascending) throws AlgebricksException {
-		if (type.equals(TypeInfoFactory.intTypeInfo)) {
-			if (ascending)
-				return HiveIntegerBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveIntegerBinaryDescComparatorFactory.INSTANCE;
-
-		} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-			if (ascending)
-				return HiveLongBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveLongBinaryDescComparatorFactory.INSTANCE;
-
-		} else if (type.equals(TypeInfoFactory.floatTypeInfo)) {
-			if (ascending)
-				return HiveFloatBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveFloatBinaryDescComparatorFactory.INSTANCE;
-
-		} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-			if (ascending)
-				return HiveDoubleBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveDoubleBinaryDescComparatorFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.shortTypeInfo)) {
-			if (ascending)
-				return HiveShortBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveShortBinaryDescComparatorFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-			if (ascending)
-				return HiveStringBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveStringBinaryDescComparatorFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.byteTypeInfo)
-				|| type.equals(TypeInfoFactory.booleanTypeInfo)) {
-			if (ascending)
-				return HiveByteBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveByteBinaryDescComparatorFactory.INSTANCE;
-		} else
-			throw new NotImplementedException();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFactoryProvider.java
deleted file mode 100644
index 371d45b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFactoryProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveDoubleBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveIntegerBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveLongBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveRawBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveStingBinaryHashFunctionFactory;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFactoryProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveBinaryHashFunctionFactoryProvider implements
-		IBinaryHashFunctionFactoryProvider {
-
-	public static final HiveBinaryHashFunctionFactoryProvider INSTANCE = new HiveBinaryHashFunctionFactoryProvider();
-
-	private HiveBinaryHashFunctionFactoryProvider() {
-	}
-
-	@Override
-	public IBinaryHashFunctionFactory getBinaryHashFunctionFactory(Object type)
-			throws AlgebricksException {
-		if (type.equals(TypeInfoFactory.intTypeInfo)) {
-			return HiveIntegerBinaryHashFunctionFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-			return HiveLongBinaryHashFunctionFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-			return HiveStingBinaryHashFunctionFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-			return HiveDoubleBinaryHashFunctionFactory.INSTANCE;
-		} else {
-			return HiveRawBinaryHashFunctionFactory.INSTANCE;
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFamilyProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFamilyProvider.java
deleted file mode 100644
index e7a2e79..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFamilyProvider.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.MurmurHash3BinaryHashFunctionFamily;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFamilyProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
-
-public class HiveBinaryHashFunctionFamilyProvider implements IBinaryHashFunctionFamilyProvider {
-
-    public static HiveBinaryHashFunctionFamilyProvider INSTANCE = new HiveBinaryHashFunctionFamilyProvider();
-
-    private HiveBinaryHashFunctionFamilyProvider() {
-
-    }
-
-    @Override
-    public IBinaryHashFunctionFamily getBinaryHashFunctionFamily(Object type) throws AlgebricksException {
-        return MurmurHash3BinaryHashFunctionFamily.INSTANCE;
-    }
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveNormalizedKeyComputerFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveNormalizedKeyComputerFactoryProvider.java
deleted file mode 100644
index 9e3a8ae..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveNormalizedKeyComputerFactoryProvider.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveDoubleAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveDoubleDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveIntegerAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveIntegerDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveLongAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveLongDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveStringAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveStringDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveNormalizedKeyComputerFactoryProvider implements
-		INormalizedKeyComputerFactoryProvider {
-
-	public static final HiveNormalizedKeyComputerFactoryProvider INSTANCE = new HiveNormalizedKeyComputerFactoryProvider();
-
-	private HiveNormalizedKeyComputerFactoryProvider() {
-	}
-
-	@Override
-	public INormalizedKeyComputerFactory getNormalizedKeyComputerFactory(
-			Object type, boolean ascending) {
-		if (ascending) {
-			if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-				return new HiveStringAscNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.intTypeInfo)) {
-				return new HiveIntegerAscNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-				return new HiveLongAscNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-				return new HiveDoubleAscNormalizedKeyComputerFactory();
-			} else {
-				return null;
-			}
-		} else {
-			if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-				return new HiveStringDescNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.intTypeInfo)) {
-				return new HiveIntegerDescNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-				return new HiveLongDescNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-				return new HiveDoubleDescNormalizedKeyComputerFactory();
-			} else {
-				return null;
-			}
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HivePrinterFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HivePrinterFactoryProvider.java
deleted file mode 100644
index bebb457..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HivePrinterFactoryProvider.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.IPrinterFactory;
-import edu.uci.ics.hyracks.algebricks.data.IPrinterFactoryProvider;
-
-public class HivePrinterFactoryProvider implements IPrinterFactoryProvider {
-
-	public static IPrinterFactoryProvider INSTANCE = new HivePrinterFactoryProvider();
-
-	@Override
-	public IPrinterFactory getPrinterFactory(Object type)
-			throws AlgebricksException {
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveSerializerDeserializerProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveSerializerDeserializerProvider.java
deleted file mode 100644
index 7938de8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveSerializerDeserializerProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.ISerializerDeserializerProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-
-public class HiveSerializerDeserializerProvider implements
-		ISerializerDeserializerProvider {
-
-	public static final HiveSerializerDeserializerProvider INSTANCE = new HiveSerializerDeserializerProvider();
-
-	private HiveSerializerDeserializerProvider() {
-	}
-
-	@SuppressWarnings("rawtypes")
-	@Override
-	public ISerializerDeserializer getSerializerDeserializer(Object type)
-			throws AlgebricksException {
-		// return ARecordSerializerDeserializer.SCHEMALESS_INSTANCE;
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveTypeTraitProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveTypeTraitProvider.java
deleted file mode 100644
index 2059128..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveTypeTraitProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import java.io.Serializable;
-
-import edu.uci.ics.hyracks.algebricks.data.ITypeTraitProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
-
-public class HiveTypeTraitProvider implements ITypeTraitProvider, Serializable {
-	private static final long serialVersionUID = 1L;
-	public static HiveTypeTraitProvider INSTANCE = new HiveTypeTraitProvider();
-
-	private HiveTypeTraitProvider() {
-
-	}
-
-	@Override
-	public ITypeTraits getTypeTrait(Object arg0) {
-		return new ITypeTraits() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public int getFixedLength() {
-				return -1;
-			}
-
-			@Override
-			public boolean isFixedLength() {
-				return false;
-			}
-
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/ByteArrayRef.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/ByteArrayRef.java
deleted file mode 100644
index 673416d..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/ByteArrayRef.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-/**
- * ByteArrayRef stores a reference to a byte array.
- * 
- * The LazyObject hierarchy uses a reference to a single ByteArrayRef, so that
- * it's much faster to switch to the next row and release the reference to the
- * old row (so that the system can do garbage collection if needed).
- */
-public class ByteArrayRef {
-
-	/**
-	 * Stores the actual data.
-	 */
-	byte[] data;
-
-	public byte[] getData() {
-		return data;
-	}
-
-	public void setData(byte[] data) {
-		this.data = data;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyArray.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyArray.java
deleted file mode 100644
index 821c03d..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyArray.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.RecordInfo;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyListObjectInspector;
-
-/**
- * LazyArray is serialized as follows: start A b b b b b b end bytes[] ->
- * |--------|---|---|---|---| ... |---|---|
- * 
- * Section A is the null-bytes. Suppose the list has N elements, then there are
- * (N+7)/8 bytes used as null-bytes. Each bit corresponds to an element and it
- * indicates whether that element is null (0) or not null (1).
- * 
- * After A, all b(s) represent the elements of the list. Each of them is again a
- * LazyObject.
- * 
- */
-
-public class LazyArray extends LazyNonPrimitive<LazyListObjectInspector> {
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean parsed = false;
-	/**
-	 * The length of the array. Only valid when the data is parsed.
-	 */
-	int arraySize = 0;
-
-	/**
-	 * The start positions and lengths of array elements. Only valid when the
-	 * data is parsed.
-	 */
-	int[] elementStart;
-	int[] elementLength;
-
-	/**
-	 * Whether an element is initialized or not.
-	 */
-	boolean[] elementInited;
-
-	/**
-	 * Whether an element is null or not. Because length is 0 does not means the
-	 * field is null. In particular, a 0-length string is not null.
-	 */
-	boolean[] elementIsNull;
-
-	/**
-	 * The elements of the array. Note that we call arrayElements[i].init(bytes,
-	 * begin, length) only when that element is accessed.
-	 */
-	@SuppressWarnings("rawtypes")
-	LazyObject[] arrayElements;
-
-	/**
-	 * Construct a LazyArray object with the ObjectInspector.
-	 * 
-	 * @param oi
-	 *            the oi representing the type of this LazyArray
-	 */
-	protected LazyArray(LazyListObjectInspector oi) {
-		super(oi);
-	}
-
-	/**
-	 * Set the row data for this LazyArray.
-	 * 
-	 * @see LazyObject#init(ByteArrayRef, int, int)
-	 */
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		parsed = false;
-	}
-
-	/**
-	 * Enlarge the size of arrays storing information for the elements inside
-	 * the array.
-	 */
-	private void adjustArraySize(int newSize) {
-		if (elementStart == null || elementStart.length < newSize) {
-			elementStart = new int[newSize];
-			elementLength = new int[newSize];
-			elementInited = new boolean[newSize];
-			elementIsNull = new boolean[newSize];
-			arrayElements = new LazyObject[newSize];
-		}
-	}
-
-	VInt vInt = new LazyUtils.VInt();
-	RecordInfo recordInfo = new LazyUtils.RecordInfo();
-
-	/**
-	 * Parse the bytes and fill elementStart, elementLength, elementInited and
-	 * elementIsNull.
-	 */
-	private void parse() {
-
-		// get the vlong that represents the map size
-		LazyUtils.readVInt(bytes, start, vInt);
-		arraySize = vInt.value;
-		if (0 == arraySize) {
-			parsed = true;
-			return;
-		}
-
-		// adjust arrays
-		adjustArraySize(arraySize);
-		// find out the null-bytes
-		int arryByteStart = start + vInt.length;
-		int nullByteCur = arryByteStart;
-		int nullByteEnd = arryByteStart + (arraySize + 7) / 8;
-		// the begin the real elements
-		int lastElementByteEnd = nullByteEnd;
-		// the list element object inspector
-		ObjectInspector listEleObjectInspector = ((ListObjectInspector) oi)
-				.getListElementObjectInspector();
-		// parsing elements one by one
-		for (int i = 0; i < arraySize; i++) {
-			elementIsNull[i] = true;
-			if ((bytes[nullByteCur] & (1 << (i % 8))) != 0) {
-				elementIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(listEleObjectInspector, bytes,
-						lastElementByteEnd, recordInfo);
-				elementStart[i] = lastElementByteEnd + recordInfo.elementOffset;
-				elementLength[i] = recordInfo.elementSize;
-				lastElementByteEnd = elementStart[i] + elementLength[i];
-			}
-			// move onto the next null byte
-			if (7 == (i % 8)) {
-				nullByteCur++;
-			}
-		}
-
-		Arrays.fill(elementInited, 0, arraySize, false);
-		parsed = true;
-	}
-
-	/**
-	 * Returns the actual primitive object at the index position inside the
-	 * array represented by this LazyObject.
-	 */
-	public Object getListElementObject(int index) {
-		if (!parsed) {
-			parse();
-		}
-		if (index < 0 || index >= arraySize) {
-			return null;
-		}
-		return uncheckedGetElement(index);
-	}
-
-	/**
-	 * Get the element without checking out-of-bound index.
-	 * 
-	 * @param index
-	 *            index to the array element
-	 */
-	private Object uncheckedGetElement(int index) {
-
-		if (elementIsNull[index]) {
-			return null;
-		} else {
-			if (!elementInited[index]) {
-				elementInited[index] = true;
-				if (arrayElements[index] == null) {
-					arrayElements[index] = LazyFactory.createLazyObject((oi)
-							.getListElementObjectInspector());
-				}
-				arrayElements[index].init(bytes, elementStart[index],
-						elementLength[index]);
-			}
-		}
-		return arrayElements[index].getObject();
-	}
-
-	/**
-	 * Returns the array size.
-	 */
-	public int getListLength() {
-		if (!parsed) {
-			parse();
-		}
-		return arraySize;
-	}
-
-	/**
-	 * cachedList is reused every time getList is called. Different
-	 * LazyBianryArray instances cannot share the same cachedList.
-	 */
-	ArrayList<Object> cachedList;
-
-	/**
-	 * Returns the List of actual primitive objects. Returns null for null
-	 * array.
-	 */
-	public List<Object> getList() {
-		if (!parsed) {
-			parse();
-		}
-		if (cachedList == null) {
-			cachedList = new ArrayList<Object>(arraySize);
-		} else {
-			cachedList.clear();
-		}
-		for (int index = 0; index < arraySize; index++) {
-			cachedList.add(uncheckedGetElement(index));
-		}
-		return cachedList;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyBoolean.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyBoolean.java
deleted file mode 100644
index 83b6254..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyBoolean.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.BooleanWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyBooleanObjectInspector;
-
-/**
- * LazyObject for storing a value of boolean.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyBoolean extends
-		LazyPrimitive<LazyBooleanObjectInspector, BooleanWritable> {
-
-	public LazyBoolean(LazyBooleanObjectInspector oi) {
-		super(oi);
-		data = new BooleanWritable();
-	}
-
-	public LazyBoolean(LazyBoolean copy) {
-		super(copy);
-		data = new BooleanWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		// a temporal hack
-		assert (1 == length);
-		byte val = bytes[start];
-		if (val == 0) {
-			data.set(false);
-		} else if (val == 1) {
-			data.set(true);
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyByte.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyByte.java
deleted file mode 100644
index 264015b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyByte.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.ByteWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyByteObjectInspector;
-
-/**
- * LazyObject for storing a value of Byte.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyByte extends
-		LazyPrimitive<LazyByteObjectInspector, ByteWritable> {
-
-	public LazyByte(LazyByteObjectInspector oi) {
-		super(oi);
-		data = new ByteWritable();
-	}
-
-	public LazyByte(LazyByte copy) {
-		super(copy);
-		data = new ByteWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		assert (1 == length);
-		data.set(bytes[start]);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyColumnar.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyColumnar.java
deleted file mode 100644
index a25ae49..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyColumnar.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyColumnarObjectInspector;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyObject for storing a struct. The field of a struct can be primitive or
- * non-primitive.
- * 
- * LazyStruct does not deal with the case of a NULL struct. That is handled by
- * the parent LazyObject.
- */
-@SuppressWarnings("rawtypes")
-public class LazyColumnar extends LazyNonPrimitive<LazyColumnarObjectInspector> {
-
-	/**
-	 * IFrameTupleReference: the backend of the struct
-	 */
-	IFrameTupleReference tuple;
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean reset;
-
-	/**
-	 * The fields of the struct.
-	 */
-	LazyObject[] fields;
-
-	/**
-	 * Whether init() has been called on the field or not.
-	 */
-	boolean[] fieldVisited;
-
-	/**
-	 * whether it is the first time initialization
-	 */
-	boolean start = true;
-
-	/**
-	 * Construct a LazyStruct object with the ObjectInspector.
-	 */
-	public LazyColumnar(LazyColumnarObjectInspector oi) {
-		super(oi);
-	}
-
-	/**
-	 * Set the row data for this LazyStruct.
-	 * 
-	 * @see LazyObject#init(ByteArrayRef, int, int)
-	 */
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		reset = false;
-	}
-
-	/**
-	 * Parse the byte[] and fill each field.
-	 */
-	private void parse() {
-
-		if (start) {
-			// initialize field array and reusable objects
-			List<? extends StructField> fieldRefs = ((StructObjectInspector) oi)
-					.getAllStructFieldRefs();
-
-			fields = new LazyObject[fieldRefs.size()];
-			for (int i = 0; i < fields.length; i++) {
-				fields[i] = LazyFactory.createLazyObject(fieldRefs.get(i)
-						.getFieldObjectInspector());
-			}
-			fieldVisited = new boolean[fields.length];
-			start = false;
-		}
-
-		Arrays.fill(fieldVisited, false);
-		reset = true;
-	}
-
-	/**
-	 * Get one field out of the struct.
-	 * 
-	 * If the field is a primitive field, return the actual object. Otherwise
-	 * return the LazyObject. This is because PrimitiveObjectInspector does not
-	 * have control over the object used by the user - the user simply directly
-	 * use the Object instead of going through Object
-	 * PrimitiveObjectInspector.get(Object).
-	 * 
-	 * @param fieldID
-	 *            The field ID
-	 * @return The field as a LazyObject
-	 */
-	public Object getField(int fieldID) {
-		if (!reset) {
-			parse();
-		}
-		return uncheckedGetField(fieldID);
-	}
-
-	/**
-	 * Get the field out of the row without checking parsed. This is called by
-	 * both getField and getFieldsAsList.
-	 * 
-	 * @param fieldID
-	 *            The id of the field starting from 0.
-	 * @param nullSequence
-	 *            The sequence representing NULL value.
-	 * @return The value of the field
-	 */
-	private Object uncheckedGetField(int fieldID) {
-		// get the buffer
-		byte[] buffer = tuple.getFieldData(fieldID);
-		// get the offset of the field
-		int s1 = tuple.getFieldStart(fieldID);
-		int l1 = tuple.getFieldLength(fieldID);
-
-		if (!fieldVisited[fieldID]) {
-			fieldVisited[fieldID] = true;
-			fields[fieldID].init(buffer, s1, l1);
-		}
-		// if (fields[fieldID].getObject() == null) {
-		// throw new IllegalStateException("illegal field " + fieldID);
-		// }
-		return fields[fieldID].getObject();
-	}
-
-	ArrayList<Object> cachedList;
-
-	/**
-	 * Get the values of the fields as an ArrayList.
-	 * 
-	 * @return The values of the fields as an ArrayList.
-	 */
-	public ArrayList<Object> getFieldsAsList() {
-		if (!reset) {
-			parse();
-		}
-		if (cachedList == null) {
-			cachedList = new ArrayList<Object>();
-		} else {
-			cachedList.clear();
-		}
-		for (int i = 0; i < fields.length; i++) {
-			cachedList.add(uncheckedGetField(i));
-		}
-		return cachedList;
-	}
-
-	@Override
-	public Object getObject() {
-		return this;
-	}
-
-	protected boolean getParsed() {
-		return reset;
-	}
-
-	protected void setParsed(boolean parsed) {
-		this.reset = parsed;
-	}
-
-	protected LazyObject[] getFields() {
-		return fields;
-	}
-
-	protected void setFields(LazyObject[] fields) {
-		this.fields = fields;
-	}
-
-	protected boolean[] getFieldInited() {
-		return fieldVisited;
-	}
-
-	protected void setFieldInited(boolean[] fieldInited) {
-		this.fieldVisited = fieldInited;
-	}
-
-	/**
-	 * rebind a frametuplereference to the struct
-	 */
-	public void init(IFrameTupleReference r) {
-		this.tuple = r;
-		reset = false;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyDouble.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyDouble.java
deleted file mode 100644
index d687aa1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyDouble.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.DoubleWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyDoubleObjectInspector;
-
-/**
- * LazyObject for storing a value of Double.
- * 
- */
-public class LazyDouble extends
-		LazyPrimitive<LazyDoubleObjectInspector, DoubleWritable> {
-
-	public LazyDouble(LazyDoubleObjectInspector oi) {
-		super(oi);
-		data = new DoubleWritable();
-	}
-
-	public LazyDouble(LazyDouble copy) {
-		super(copy);
-		data = new DoubleWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-		assert (8 == length);
-		data.set(Double.longBitsToDouble(LazyUtils
-				.byteArrayToLong(bytes, start)));
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFactory.java
deleted file mode 100644
index e7593e4..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyColumnarObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyListObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyMapObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyStructObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyBooleanObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyByteObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyDoubleObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyFloatObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyIntObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyLongObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyShortObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyStringObjectInspector;
-
-/**
- * LazyFactory.
- * 
- */
-public final class LazyFactory {
-
-	/**
-	 * Create a lazy binary primitive class given the type name.
-	 */
-	public static LazyPrimitive<?, ?> createLazyPrimitiveClass(
-			PrimitiveObjectInspector oi) {
-		PrimitiveCategory p = oi.getPrimitiveCategory();
-		switch (p) {
-		case BOOLEAN:
-			return new LazyBoolean((LazyBooleanObjectInspector) oi);
-		case BYTE:
-			return new LazyByte((LazyByteObjectInspector) oi);
-		case SHORT:
-			return new LazyShort((LazyShortObjectInspector) oi);
-		case INT:
-			return new LazyInteger((LazyIntObjectInspector) oi);
-		case LONG:
-			return new LazyLong((LazyLongObjectInspector) oi);
-		case FLOAT:
-			return new LazyFloat((LazyFloatObjectInspector) oi);
-		case DOUBLE:
-			return new LazyDouble((LazyDoubleObjectInspector) oi);
-		case STRING:
-			return new LazyString((LazyStringObjectInspector) oi);
-		default:
-			throw new RuntimeException("Internal error: no LazyObject for " + p);
-		}
-	}
-
-	/**
-	 * Create a hierarchical LazyObject based on the given typeInfo.
-	 */
-	public static LazyObject<? extends ObjectInspector> createLazyObject(
-			ObjectInspector oi) {
-		ObjectInspector.Category c = oi.getCategory();
-		switch (c) {
-		case PRIMITIVE:
-			return createLazyPrimitiveClass((PrimitiveObjectInspector) oi);
-		case MAP:
-			return new LazyMap((LazyMapObjectInspector) oi);
-		case LIST:
-			return new LazyArray((LazyListObjectInspector) oi);
-		case STRUCT: // check whether it is a top-level struct
-			if (oi instanceof LazyStructObjectInspector)
-				return new LazyStruct((LazyStructObjectInspector) oi);
-			else
-				return new LazyColumnar((LazyColumnarObjectInspector) oi);
-		default:
-			throw new RuntimeException("Hive LazySerDe Internal error.");
-		}
-	}
-
-	private LazyFactory() {
-		// prevent instantiation
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFloat.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFloat.java
deleted file mode 100644
index 303cc67..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFloat.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.FloatWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyFloatObjectInspector;
-
-/**
- * LazyObject for storing a value of Double.
- * 
- */
-public class LazyFloat extends
-		LazyPrimitive<LazyFloatObjectInspector, FloatWritable> {
-
-	public LazyFloat(LazyFloatObjectInspector oi) {
-		super(oi);
-		data = new FloatWritable();
-	}
-
-	public LazyFloat(LazyFloat copy) {
-		super(copy);
-		data = new FloatWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		assert (4 == length);
-		data.set(Float.intBitsToFloat(LazyUtils.byteArrayToInt(bytes, start)));
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyInteger.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyInteger.java
deleted file mode 100644
index c908c40..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyInteger.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.IntWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyIntObjectInspector;
-
-/**
- * LazyObject for storing a value of Integer.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyInteger extends
-		LazyPrimitive<LazyIntObjectInspector, IntWritable> {
-
-	public LazyInteger(LazyIntObjectInspector oi) {
-		super(oi);
-		data = new IntWritable();
-	}
-
-	public LazyInteger(LazyInteger copy) {
-		super(copy);
-		data = new IntWritable(copy.data.get());
-	}
-
-	/**
-	 * The reusable vInt for decoding the integer.
-	 */
-	VInt vInt = new LazyUtils.VInt();
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		LazyUtils.readVInt(bytes, start, vInt);
-		assert (length == vInt.length);
-		if (length != vInt.length)
-			throw new IllegalStateException(
-					"parse int: length mismatch, expected " + vInt.length
-							+ " but get " + length);
-		data.set(vInt.value);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyLong.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyLong.java
deleted file mode 100644
index 38097e6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyLong.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyLongObjectInspector;
-
-/**
- * LazyObject for storing a value of Long.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyLong extends
-		LazyPrimitive<LazyLongObjectInspector, LongWritable> {
-
-	public LazyLong(LazyLongObjectInspector oi) {
-		super(oi);
-		data = new LongWritable();
-	}
-
-	public LazyLong(LazyLong copy) {
-		super(copy);
-		data = new LongWritable(copy.data.get());
-	}
-
-	/**
-	 * The reusable vLong for decoding the long.
-	 */
-	VLong vLong = new LazyUtils.VLong();
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		LazyUtils.readVLong(bytes, start, vLong);
-		assert (length == vLong.length);
-		if (length != vLong.length)
-			throw new IllegalStateException("parse long: length mismatch");
-		data.set(vLong.value);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyMap.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyMap.java
deleted file mode 100644
index 56bc41b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyMap.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.serde2.lazy.ByteArrayRef;
-import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.RecordInfo;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyMapObjectInspector;
-
-/**
- * LazyMap is serialized as follows: start A b c b c b c end bytes[] ->
- * |--------|---|---|---|---| ... |---|---|
- * 
- * Section A is the null-bytes. Suppose the map has N key-value pairs, then
- * there are (N*2+7)/8 bytes used as null-bytes. Each bit corresponds to a key
- * or a value and it indicates whether that key or value is null (0) or not null
- * (1).
- * 
- * After A, all the bytes are actual serialized data of the map, which are
- * key-value pairs. b represent the keys and c represent the values. Each of
- * them is again a LazyObject.
- * 
- */
-
-@SuppressWarnings("rawtypes")
-public class LazyMap extends LazyNonPrimitive<LazyMapObjectInspector> {
-
-	private static Log LOG = LogFactory.getLog(LazyMap.class.getName());
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean parsed;
-
-	/**
-	 * The size of the map. Only valid when the data is parsed. -1 when the map
-	 * is NULL.
-	 */
-	int mapSize = 0;
-
-	/**
-	 * The beginning position and length of key[i] and value[i]. Only valid when
-	 * the data is parsed.
-	 */
-	int[] keyStart;
-	int[] keyLength;
-	int[] valueStart;
-	int[] valueLength;
-	/**
-	 * Whether valueObjects[i]/keyObjects[i] is initialized or not.
-	 */
-	boolean[] keyInited;
-	boolean[] valueInited;
-
-	/**
-	 * Whether valueObjects[i]/keyObjects[i] is null or not This could not be
-	 * inferred from the length of the object. In particular, a 0-length string
-	 * is not null.
-	 */
-	boolean[] keyIsNull;
-	boolean[] valueIsNull;
-
-	/**
-	 * The keys are stored in an array of LazyPrimitives.
-	 */
-	LazyPrimitive<?, ?>[] keyObjects;
-	/**
-	 * The values are stored in an array of LazyObjects. value[index] will start
-	 * from KeyEnd[index] + 1, and ends before KeyStart[index+1] - 1.
-	 */
-	LazyObject[] valueObjects;
-
-	protected LazyMap(LazyMapObjectInspector oi) {
-		super(oi);
-	}
-
-	/**
-	 * Set the row data for this LazyMap.
-	 * 
-	 * @see LazyObject#init(ByteArrayRef, int, int)
-	 */
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		parsed = false;
-	}
-
-	/**
-	 * Adjust the size of arrays: keyStart, keyLength valueStart, valueLength
-	 * keyInited, keyIsNull valueInited, valueIsNull.
-	 */
-	protected void adjustArraySize(int newSize) {
-		if (keyStart == null || keyStart.length < newSize) {
-			keyStart = new int[newSize];
-			keyLength = new int[newSize];
-			valueStart = new int[newSize];
-			valueLength = new int[newSize];
-			keyInited = new boolean[newSize];
-			keyIsNull = new boolean[newSize];
-			valueInited = new boolean[newSize];
-			valueIsNull = new boolean[newSize];
-			keyObjects = new LazyPrimitive<?, ?>[newSize];
-			valueObjects = new LazyObject[newSize];
-		}
-	}
-
-	boolean nullMapKey = false;
-	VInt vInt = new LazyUtils.VInt();
-	RecordInfo recordInfo = new LazyUtils.RecordInfo();
-
-	/**
-	 * Parse the byte[] and fill keyStart, keyLength, keyIsNull valueStart,
-	 * valueLength and valueIsNull.
-	 */
-	private void parse() {
-
-		// get the VInt that represents the map size
-		LazyUtils.readVInt(bytes, start, vInt);
-		mapSize = vInt.value;
-		if (0 == mapSize) {
-			parsed = true;
-			return;
-		}
-
-		// adjust arrays
-		adjustArraySize(mapSize);
-
-		// find out the null-bytes
-		int mapByteStart = start + vInt.length;
-		int nullByteCur = mapByteStart;
-		int nullByteEnd = mapByteStart + (mapSize * 2 + 7) / 8;
-		int lastElementByteEnd = nullByteEnd;
-
-		// parsing the keys and values one by one
-		for (int i = 0; i < mapSize; i++) {
-			// parse a key
-			keyIsNull[i] = true;
-			if ((bytes[nullByteCur] & (1 << ((i * 2) % 8))) != 0) {
-				keyIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(
-						((MapObjectInspector) oi).getMapKeyObjectInspector(),
-						bytes, lastElementByteEnd, recordInfo);
-				keyStart[i] = lastElementByteEnd + recordInfo.elementOffset;
-				keyLength[i] = recordInfo.elementSize;
-				lastElementByteEnd = keyStart[i] + keyLength[i];
-			} else if (!nullMapKey) {
-				nullMapKey = true;
-				LOG.warn("Null map key encountered! Ignoring similar problems.");
-			}
-
-			// parse a value
-			valueIsNull[i] = true;
-			if ((bytes[nullByteCur] & (1 << ((i * 2 + 1) % 8))) != 0) {
-				valueIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(
-						((MapObjectInspector) oi).getMapValueObjectInspector(),
-						bytes, lastElementByteEnd, recordInfo);
-				valueStart[i] = lastElementByteEnd + recordInfo.elementOffset;
-				valueLength[i] = recordInfo.elementSize;
-				lastElementByteEnd = valueStart[i] + valueLength[i];
-			}
-
-			// move onto the next null byte
-			if (3 == (i % 4)) {
-				nullByteCur++;
-			}
-		}
-
-		Arrays.fill(keyInited, 0, mapSize, false);
-		Arrays.fill(valueInited, 0, mapSize, false);
-		parsed = true;
-	}
-
-	/**
-	 * Get the value object with the index without checking parsed.
-	 * 
-	 * @param index
-	 *            The index into the array starting from 0
-	 */
-	private LazyObject uncheckedGetValue(int index) {
-		if (valueIsNull[index]) {
-			return null;
-		}
-		if (!valueInited[index]) {
-			valueInited[index] = true;
-			if (valueObjects[index] == null) {
-				valueObjects[index] = LazyFactory
-						.createLazyObject(((MapObjectInspector) oi)
-								.getMapValueObjectInspector());
-			}
-			valueObjects[index].init(bytes, valueStart[index],
-					valueLength[index]);
-		}
-		return valueObjects[index];
-	}
-
-	/**
-	 * Get the value in the map for the key.
-	 * 
-	 * If there are multiple matches (which is possible in the serialized
-	 * format), only the first one is returned.
-	 * 
-	 * The most efficient way to get the value for the key is to serialize the
-	 * key and then try to find it in the array. We do linear search because in
-	 * most cases, user only wants to get one or two values out of the map, and
-	 * the cost of building up a HashMap is substantially higher.
-	 * 
-	 * @param key
-	 *            The key object that we are looking for.
-	 * @return The corresponding value object, or NULL if not found
-	 */
-	public Object getMapValueElement(Object key) {
-		if (!parsed) {
-			parse();
-		}
-		// search for the key
-		for (int i = 0; i < mapSize; i++) {
-			LazyPrimitive<?, ?> lazyKeyI = uncheckedGetKey(i);
-			if (lazyKeyI == null) {
-				continue;
-			}
-			// getWritableObject() will convert LazyPrimitive to actual
-			// primitive
-			// writable objects.
-			Object keyI = lazyKeyI.getWritableObject();
-			if (keyI == null) {
-				continue;
-			}
-			if (keyI.equals(key)) {
-				// Got a match, return the value
-				LazyObject v = uncheckedGetValue(i);
-				return v == null ? v : v.getObject();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Get the key object with the index without checking parsed.
-	 * 
-	 * @param index
-	 *            The index into the array starting from 0
-	 */
-	private LazyPrimitive<?, ?> uncheckedGetKey(int index) {
-		if (keyIsNull[index]) {
-			return null;
-		}
-		if (!keyInited[index]) {
-			keyInited[index] = true;
-			if (keyObjects[index] == null) {
-				// Keys are always primitive
-				keyObjects[index] = LazyFactory
-						.createLazyPrimitiveClass((PrimitiveObjectInspector) ((MapObjectInspector) oi)
-								.getMapKeyObjectInspector());
-			}
-			keyObjects[index].init(bytes, keyStart[index], keyLength[index]);
-		}
-		return keyObjects[index];
-	}
-
-	/**
-	 * cachedMap is reused for different calls to getMap(). But each LazyMap has
-	 * a separate cachedMap so we won't overwrite the data by accident.
-	 */
-	LinkedHashMap<Object, Object> cachedMap;
-
-	/**
-	 * Return the map object representing this LazyMap. Note that the keyObjects
-	 * will be Writable primitive objects.
-	 * 
-	 * @return the map object
-	 */
-	public Map<Object, Object> getMap() {
-		if (!parsed) {
-			parse();
-		}
-		if (cachedMap == null) {
-			// Use LinkedHashMap to provide deterministic order
-			cachedMap = new LinkedHashMap<Object, Object>();
-		} else {
-			cachedMap.clear();
-		}
-
-		// go through each element of the map
-		for (int i = 0; i < mapSize; i++) {
-			LazyPrimitive<?, ?> lazyKey = uncheckedGetKey(i);
-			if (lazyKey == null) {
-				continue;
-			}
-			Object key = lazyKey.getObject();
-			// do not overwrite if there are duplicate keys
-			if (key != null && !cachedMap.containsKey(key)) {
-				LazyObject lazyValue = uncheckedGetValue(i);
-				Object value = (lazyValue == null ? null : lazyValue
-						.getObject());
-				cachedMap.put(key, value);
-			}
-		}
-		return cachedMap;
-	}
-
-	/**
-	 * Get the size of the map represented by this LazyMap.
-	 * 
-	 * @return The size of the map
-	 */
-	public int getMapSize() {
-		if (!parsed) {
-			parse();
-		}
-		return mapSize;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyNonPrimitive.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyNonPrimitive.java
deleted file mode 100644
index b151f2d..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyNonPrimitive.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyPrimitive stores a primitive Object in a LazyObject.
- */
-public abstract class LazyNonPrimitive<OI extends ObjectInspector> extends
-		LazyObject<OI> {
-
-	protected byte[] bytes;
-	protected int start;
-	protected int length;
-
-	/**
-	 * Create a LazyNonPrimitive object with the specified ObjectInspector.
-	 * 
-	 * @param oi
-	 *            The ObjectInspector would have to have a hierarchy of
-	 *            LazyObjectInspectors with the leaf nodes being
-	 *            WritableObjectInspectors. It's used both for accessing the
-	 *            type hierarchy of the complex object, as well as getting meta
-	 *            information (separator, nullSequence, etc) when parsing the
-	 *            lazy object.
-	 */
-	protected LazyNonPrimitive(OI oi) {
-		super(oi);
-		bytes = null;
-		start = 0;
-		length = 0;
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (bytes == null) {
-			throw new RuntimeException("bytes cannot be null!");
-		}
-		this.bytes = bytes;
-		this.start = start;
-		this.length = length;
-		assert start >= 0;
-		assert start + length <= bytes.length;
-	}
-
-	@Override
-	public Object getObject() {
-		return this;
-	}
-
-	@Override
-	public int hashCode() {
-		return LazyUtils.hashBytes(bytes, start, length);
-	}
-
-	@Override
-	public void init(IFrameTupleReference tuple) {
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyObject.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyObject.java
deleted file mode 100644
index 9aaaa88..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyObject.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyObject stores an object in a range of bytes in a byte[].
- * 
- * A LazyObject can represent any primitive object or hierarchical object like
- * array, map or struct.
- */
-public abstract class LazyObject<OI extends ObjectInspector> {
-
-	OI oi;
-
-	/**
-	 * Create a LazyObject.
-	 * 
-	 * @param oi
-	 *            Derived classes can access meta information about this Lazy
-	 *            Object (e.g, separator, nullSequence, escaper) from it.
-	 */
-	protected LazyObject(OI oi) {
-		this.oi = oi;
-	}
-
-	/**
-	 * Set the data for this LazyObject. We take ByteArrayRef instead of byte[]
-	 * so that we will be able to drop the reference to byte[] by a single
-	 * assignment. The ByteArrayRef object can be reused across multiple rows.
-	 * 
-	 * @param bytes
-	 *            The wrapper of the byte[].
-	 * @param start
-	 *            The start position inside the bytes.
-	 * @param length
-	 *            The length of the data, starting from "start"
-	 * @see ByteArrayRef
-	 */
-	public abstract void init(byte[] bytes, int start, int length);
-
-	public abstract void init(IFrameTupleReference tuple);
-
-	/**
-	 * If the LazyObject is a primitive Object, then deserialize it and return
-	 * the actual primitive Object. Otherwise (array, map, struct), return this.
-	 */
-	public abstract Object getObject();
-
-	@Override
-	public abstract int hashCode();
-
-	protected OI getInspector() {
-		return oi;
-	}
-
-	protected void setInspector(OI oi) {
-		this.oi = oi;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyPrimitive.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyPrimitive.java
deleted file mode 100644
index 888e5b2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyPrimitive.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyPrimitive stores a primitive Object in a LazyObject.
- */
-public abstract class LazyPrimitive<OI extends ObjectInspector, T extends Writable>
-		extends LazyObject<OI> {
-
-	LazyPrimitive(OI oi) {
-		super(oi);
-	}
-
-	LazyPrimitive(LazyPrimitive<OI, T> copy) {
-		super(copy.oi);
-		isNull = copy.isNull;
-	}
-
-	T data;
-	boolean isNull = false;
-
-	/**
-	 * Returns the primitive object represented by this LazyObject. This is
-	 * useful because it can make sure we have "null" for null objects.
-	 */
-	@Override
-	public Object getObject() {
-		return isNull ? null : this;
-	}
-
-	public T getWritableObject() {
-		return isNull ? null : data;
-	}
-
-	@Override
-	public String toString() {
-		return isNull ? "null" : data.toString();
-	}
-
-	@Override
-	public int hashCode() {
-		return isNull ? 0 : data.hashCode();
-	}
-
-	@Override
-	public void init(IFrameTupleReference tuple) {
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazySerDe.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazySerDe.java
deleted file mode 100644
index 4d0dff6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazySerDe.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.serde.Constants;
-import org.apache.hadoop.hive.serde2.ByteStream;
-import org.apache.hadoop.hive.serde2.ByteStream.Output;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.Writable;
-
-/**
- * The LazySerDe class combines the lazy property of LazySimpleSerDe class and
- * the binary property of BinarySortable class. Lazy means a field is not
- * deserialized until required. Binary means a field is serialized in binary
- * compact format.
- */
-public class LazySerDe implements SerDe {
-
-	public static final Log LOG = LogFactory.getLog(LazySerDe.class.getName());
-
-	public LazySerDe() {
-	}
-
-	List<String> columnNames;
-	List<TypeInfo> columnTypes;
-
-	TypeInfo rowTypeInfo;
-	ObjectInspector cachedObjectInspector;
-
-	// The object for storing row data
-	LazyColumnar cachedLazyStruct;
-
-	/**
-	 * Initialize the SerDe with configuration and table information.
-	 */
-	@Override
-	public void initialize(Configuration conf, Properties tbl)
-			throws SerDeException {
-		// Get column names and types
-		String columnNameProperty = tbl.getProperty(Constants.LIST_COLUMNS);
-		String columnTypeProperty = tbl
-				.getProperty(Constants.LIST_COLUMN_TYPES);
-		if (columnNameProperty.length() == 0) {
-			columnNames = new ArrayList<String>();
-		} else {
-			columnNames = Arrays.asList(columnNameProperty.split(","));
-		}
-		if (columnTypeProperty.length() == 0) {
-			columnTypes = new ArrayList<TypeInfo>();
-		} else {
-			columnTypes = TypeInfoUtils
-					.getTypeInfosFromTypeString(columnTypeProperty);
-		}
-		assert (columnNames.size() == columnTypes.size());
-		// Create row related objects
-		rowTypeInfo = TypeInfoFactory.getStructTypeInfo(columnNames,
-				columnTypes);
-		// Create the object inspector and the lazy binary struct object
-		cachedObjectInspector = LazyUtils.getLazyObjectInspectorFromTypeInfo(
-				rowTypeInfo, true);
-		cachedLazyStruct = (LazyColumnar) LazyFactory
-				.createLazyObject(cachedObjectInspector);
-		// output debug info
-		LOG.debug("LazySerDe initialized with: columnNames=" + columnNames
-				+ " columnTypes=" + columnTypes);
-	}
-
-	/**
-	 * Returns the ObjectInspector for the row.
-	 */
-	@Override
-	public ObjectInspector getObjectInspector() throws SerDeException {
-		return cachedObjectInspector;
-	}
-
-	/**
-	 * Returns the Writable Class after serialization.
-	 */
-	@Override
-	public Class<? extends Writable> getSerializedClass() {
-		return BytesWritable.class;
-	}
-
-	// The wrapper for byte array
-	ByteArrayRef byteArrayRef;
-
-	/**
-	 * Deserialize a table record to a Lazy struct.
-	 */
-	@SuppressWarnings("deprecation")
-	@Override
-	public Object deserialize(Writable field) throws SerDeException {
-		if (byteArrayRef == null) {
-			byteArrayRef = new ByteArrayRef();
-		}
-		if (field instanceof BytesWritable) {
-			BytesWritable b = (BytesWritable) field;
-			if (b.getSize() == 0) {
-				return null;
-			}
-			// For backward-compatibility with hadoop 0.17
-			byteArrayRef.setData(b.get());
-			cachedLazyStruct.init(byteArrayRef.getData(), 0, b.getSize());
-		} else if (field instanceof Text) {
-			Text t = (Text) field;
-			if (t.getLength() == 0) {
-				return null;
-			}
-			byteArrayRef.setData(t.getBytes());
-			cachedLazyStruct.init(byteArrayRef.getData(), 0, t.getLength());
-		} else {
-			throw new SerDeException(getClass().toString()
-					+ ": expects either BytesWritable or Text object!");
-		}
-		return cachedLazyStruct;
-	}
-
-	/**
-	 * The reusable output buffer and serialize byte buffer.
-	 */
-	BytesWritable serializeBytesWritable = new BytesWritable();
-	ByteStream.Output serializeByteStream = new ByteStream.Output();
-
-	/**
-	 * Serialize an object to a byte buffer in a binary compact way.
-	 */
-	@Override
-	public Writable serialize(Object obj, ObjectInspector objInspector)
-			throws SerDeException {
-		// make sure it is a struct record or not
-		serializeByteStream.reset();
-
-		if (objInspector.getCategory() != Category.STRUCT) {
-			// serialize the primitive object
-			serialize(serializeByteStream, obj, objInspector);
-		} else {
-			// serialize the row as a struct
-			serializeStruct(serializeByteStream, obj,
-					(StructObjectInspector) objInspector);
-		}
-		// return the serialized bytes
-		serializeBytesWritable.set(serializeByteStream.getData(), 0,
-				serializeByteStream.getCount());
-		return serializeBytesWritable;
-	}
-
-	boolean nullMapKey = false;
-
-	/**
-	 * Serialize a struct object without writing the byte size. This function is
-	 * shared by both row serialization and struct serialization.
-	 * 
-	 * @param byteStream
-	 *            the byte stream storing the serialization data
-	 * @param obj
-	 *            the struct object to serialize
-	 * @param objInspector
-	 *            the struct object inspector
-	 */
-	private void serializeStruct(Output byteStream, Object obj,
-			StructObjectInspector soi) {
-		// do nothing for null struct
-		if (null == obj) {
-			return;
-		}
-		/*
-		 * Interleave serializing one null byte and 8 struct fields in each
-		 * round, in order to support data deserialization with different table
-		 * schemas
-		 */
-		List<? extends StructField> fields = soi.getAllStructFieldRefs();
-		int size = fields.size();
-		int lasti = 0;
-		byte nullByte = 0;
-		for (int i = 0; i < size; i++) {
-			// set bit to 1 if a field is not null
-			if (null != soi.getStructFieldData(obj, fields.get(i))) {
-				nullByte |= 1 << (i % 8);
-			}
-			// write the null byte every eight elements or
-			// if this is the last element and serialize the
-			// corresponding 8 struct fields at the same time
-			if (7 == i % 8 || i == size - 1) {
-				serializeByteStream.write(nullByte);
-				for (int j = lasti; j <= i; j++) {
-					serialize(serializeByteStream, soi.getStructFieldData(obj,
-							fields.get(j)), fields.get(j)
-							.getFieldObjectInspector());
-				}
-				lasti = i + 1;
-				nullByte = 0;
-			}
-		}
-	}
-
-	/**
-	 * A recursive function that serialize an object to a byte buffer based on
-	 * its object inspector.
-	 * 
-	 * @param byteStream
-	 *            the byte stream storing the serialization data
-	 * @param obj
-	 *            the object to serialize
-	 * @param objInspector
-	 *            the object inspector
-	 */
-	private void serialize(Output byteStream, Object obj,
-			ObjectInspector objInspector) {
-
-		// do nothing for null object
-		if (null == obj) {
-			return;
-		}
-
-		switch (objInspector.getCategory()) {
-		case PRIMITIVE: {
-			PrimitiveObjectInspector poi = (PrimitiveObjectInspector) objInspector;
-			switch (poi.getPrimitiveCategory()) {
-			case VOID: {
-				return;
-			}
-			case BOOLEAN: {
-				boolean v = ((BooleanObjectInspector) poi).get(obj);
-				byteStream.write((byte) (v ? 1 : 0));
-				return;
-			}
-			case BYTE: {
-				ByteObjectInspector boi = (ByteObjectInspector) poi;
-				byte v = boi.get(obj);
-				byteStream.write(v);
-				return;
-			}
-			case SHORT: {
-				ShortObjectInspector spoi = (ShortObjectInspector) poi;
-				short v = spoi.get(obj);
-				byteStream.write((byte) (v >> 8));
-				byteStream.write((byte) (v));
-				return;
-			}
-			case INT: {
-				IntObjectInspector ioi = (IntObjectInspector) poi;
-				int v = ioi.get(obj);
-				LazyUtils.writeVInt(byteStream, v);
-				return;
-			}
-			case LONG: {
-				LongObjectInspector loi = (LongObjectInspector) poi;
-				long v = loi.get(obj);
-				LazyUtils.writeVLong(byteStream, v);
-				return;
-			}
-			case FLOAT: {
-				FloatObjectInspector foi = (FloatObjectInspector) poi;
-				int v = Float.floatToIntBits(foi.get(obj));
-				byteStream.write((byte) (v >> 24));
-				byteStream.write((byte) (v >> 16));
-				byteStream.write((byte) (v >> 8));
-				byteStream.write((byte) (v));
-				return;
-			}
-			case DOUBLE: {
-				DoubleObjectInspector doi = (DoubleObjectInspector) poi;
-				long v = Double.doubleToLongBits(doi.get(obj));
-				byteStream.write((byte) (v >> 56));
-				byteStream.write((byte) (v >> 48));
-				byteStream.write((byte) (v >> 40));
-				byteStream.write((byte) (v >> 32));
-				byteStream.write((byte) (v >> 24));
-				byteStream.write((byte) (v >> 16));
-				byteStream.write((byte) (v >> 8));
-				byteStream.write((byte) (v));
-				return;
-			}
-			case STRING: {
-				StringObjectInspector soi = (StringObjectInspector) poi;
-				Text t = soi.getPrimitiveWritableObject(obj);
-				/* write byte size of the string which is a vint */
-				int length = t.getLength();
-				LazyUtils.writeVInt(byteStream, length);
-				/* write string itself */
-				byte[] data = t.getBytes();
-				byteStream.write(data, 0, length);
-				return;
-			}
-			default: {
-				throw new RuntimeException("Unrecognized type: "
-						+ poi.getPrimitiveCategory());
-			}
-			}
-		}
-		case LIST: {
-			ListObjectInspector loi = (ListObjectInspector) objInspector;
-			ObjectInspector eoi = loi.getListElementObjectInspector();
-
-			// 1/ reserve spaces for the byte size of the list
-			// which is a integer and takes four bytes
-			int byteSizeStart = byteStream.getCount();
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			int listStart = byteStream.getCount();
-
-			// 2/ write the size of the list as a VInt
-			int size = loi.getListLength(obj);
-			LazyUtils.writeVInt(byteStream, size);
-
-			// 3/ write the null bytes
-			byte nullByte = 0;
-			for (int eid = 0; eid < size; eid++) {
-				// set the bit to 1 if an element is not null
-				if (null != loi.getListElement(obj, eid)) {
-					nullByte |= 1 << (eid % 8);
-				}
-				// store the byte every eight elements or
-				// if this is the last element
-				if (7 == eid % 8 || eid == size - 1) {
-					byteStream.write(nullByte);
-					nullByte = 0;
-				}
-			}
-
-			// 4/ write element by element from the list
-			for (int eid = 0; eid < size; eid++) {
-				serialize(byteStream, loi.getListElement(obj, eid), eoi);
-			}
-
-			// 5/ update the list byte size
-			int listEnd = byteStream.getCount();
-			int listSize = listEnd - listStart;
-			byte[] bytes = byteStream.getData();
-			bytes[byteSizeStart] = (byte) (listSize >> 24);
-			bytes[byteSizeStart + 1] = (byte) (listSize >> 16);
-			bytes[byteSizeStart + 2] = (byte) (listSize >> 8);
-			bytes[byteSizeStart + 3] = (byte) (listSize);
-
-			return;
-		}
-		case MAP: {
-			MapObjectInspector moi = (MapObjectInspector) objInspector;
-			ObjectInspector koi = moi.getMapKeyObjectInspector();
-			ObjectInspector voi = moi.getMapValueObjectInspector();
-			Map<?, ?> map = moi.getMap(obj);
-
-			// 1/ reserve spaces for the byte size of the map
-			// which is a integer and takes four bytes
-			int byteSizeStart = byteStream.getCount();
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			int mapStart = byteStream.getCount();
-
-			// 2/ write the size of the map which is a VInt
-			int size = map.size();
-			LazyUtils.writeVInt(byteStream, size);
-
-			// 3/ write the null bytes
-			int b = 0;
-			byte nullByte = 0;
-			for (Map.Entry<?, ?> entry : map.entrySet()) {
-				// set the bit to 1 if a key is not null
-				if (null != entry.getKey()) {
-					nullByte |= 1 << (b % 8);
-				} else if (!nullMapKey) {
-					nullMapKey = true;
-					LOG.warn("Null map key encountered! Ignoring similar problems.");
-				}
-				b++;
-				// set the bit to 1 if a value is not null
-				if (null != entry.getValue()) {
-					nullByte |= 1 << (b % 8);
-				}
-				b++;
-				// write the byte to stream every 4 key-value pairs
-				// or if this is the last key-value pair
-				if (0 == b % 8 || b == size * 2) {
-					byteStream.write(nullByte);
-					nullByte = 0;
-				}
-			}
-
-			// 4/ write key-value pairs one by one
-			for (Map.Entry<?, ?> entry : map.entrySet()) {
-				serialize(byteStream, entry.getKey(), koi);
-				serialize(byteStream, entry.getValue(), voi);
-			}
-
-			// 5/ update the byte size of the map
-			int mapEnd = byteStream.getCount();
-			int mapSize = mapEnd - mapStart;
-			byte[] bytes = byteStream.getData();
-			bytes[byteSizeStart] = (byte) (mapSize >> 24);
-			bytes[byteSizeStart + 1] = (byte) (mapSize >> 16);
-			bytes[byteSizeStart + 2] = (byte) (mapSize >> 8);
-			bytes[byteSizeStart + 3] = (byte) (mapSize);
-
-			return;
-		}
-		case STRUCT: {
-			// 1/ reserve spaces for the byte size of the struct
-			// which is a integer and takes four bytes
-			int byteSizeStart = byteStream.getCount();
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			int structStart = byteStream.getCount();
-
-			// 2/ serialize the struct
-			serializeStruct(byteStream, obj,
-					(StructObjectInspector) objInspector);
-
-			// 3/ update the byte size of the struct
-			int structEnd = byteStream.getCount();
-			int structSize = structEnd - structStart;
-			byte[] bytes = byteStream.getData();
-			bytes[byteSizeStart] = (byte) (structSize >> 24);
-			bytes[byteSizeStart + 1] = (byte) (structSize >> 16);
-			bytes[byteSizeStart + 2] = (byte) (structSize >> 8);
-			bytes[byteSizeStart + 3] = (byte) (structSize);
-
-			return;
-		}
-		default: {
-			throw new RuntimeException("Unrecognized type: "
-					+ objInspector.getCategory());
-		}
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyShort.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyShort.java
deleted file mode 100644
index 7484b72..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyShort.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyShortObjectInspector;
-
-/**
- * LazyObject for storing a value of Short.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyShort extends
-		LazyPrimitive<LazyShortObjectInspector, ShortWritable> {
-
-	public LazyShort(LazyShortObjectInspector oi) {
-		super(oi);
-		data = new ShortWritable();
-	}
-
-	public LazyShort(LazyShort copy) {
-		super(copy);
-		data = new ShortWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		assert (2 == length);
-		data.set(LazyUtils.byteArrayToShort(bytes, start));
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyString.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyString.java
deleted file mode 100644
index c13533b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyString.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyStringObjectInspector;
-
-/**
- * LazyObject for storing a value of String.
- */
-public class LazyString extends LazyPrimitive<LazyStringObjectInspector, Text> {
-
-	public LazyString(LazyStringObjectInspector oi) {
-		super(oi);
-		data = new Text();
-	}
-
-	public LazyString(LazyString copy) {
-		super(copy);
-		data = new Text(copy.data);
-	}
-
-	VInt vInt = new LazyUtils.VInt();
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		// get the byte length of the string
-		LazyUtils.readVInt(bytes, start, vInt);
-		if (vInt.value + vInt.length != length)
-			throw new IllegalStateException(
-					"parse string: length mismatch, expected "
-							+ (vInt.value + vInt.length) + " but get " + length);
-		assert (length - vInt.length > -1);
-		data.set(bytes, start + vInt.length, length - vInt.length);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyStruct.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyStruct.java
deleted file mode 100644
index 61cc335..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyStruct.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.RecordInfo;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyStructObjectInspector;
-
-/**
- * LazyStruct is serialized as follows: start A B A B A B end bytes[] ->
- * |-----|---------|--- ... ---|-----|---------|
- * 
- * Section A is one null-byte, corresponding to eight struct fields in Section
- * B. Each bit indicates whether the corresponding field is null (0) or not null
- * (1). Each field is a LazyObject.
- * 
- * Following B, there is another section A and B. This pattern repeats until the
- * all struct fields are serialized.
- */
-public class LazyStruct extends LazyNonPrimitive<LazyStructObjectInspector> {
-
-	private static Log LOG = LogFactory.getLog(LazyStruct.class.getName());
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean parsed;
-
-	/**
-	 * The fields of the struct.
-	 */
-	@SuppressWarnings("rawtypes")
-	LazyObject[] fields;
-
-	/**
-	 * Whether a field is initialized or not.
-	 */
-	boolean[] fieldInited;
-
-	/**
-	 * Whether a field is null or not. Because length is 0 does not means the
-	 * field is null. In particular, a 0-length string is not null.
-	 */
-	boolean[] fieldIsNull;
-
-	/**
-	 * The start positions and lengths of struct fields. Only valid when the
-	 * data is parsed.
-	 */
-	int[] fieldStart;
-	int[] fieldLength;
-
-	/**
-	 * Construct a LazyStruct object with an ObjectInspector.
-	 */
-	protected LazyStruct(LazyStructObjectInspector oi) {
-		super(oi);
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		parsed = false;
-	}
-
-	RecordInfo recordInfo = new LazyUtils.RecordInfo();
-	boolean missingFieldWarned = false;
-	boolean extraFieldWarned = false;
-
-	/**
-	 * Parse the byte[] and fill fieldStart, fieldLength, fieldInited and
-	 * fieldIsNull.
-	 */
-	private void parse() {
-
-		List<? extends StructField> fieldRefs = ((StructObjectInspector) oi)
-				.getAllStructFieldRefs();
-
-		if (fields == null) {
-			fields = new LazyObject[fieldRefs.size()];
-			for (int i = 0; i < fields.length; i++) {
-				ObjectInspector insp = fieldRefs.get(i)
-						.getFieldObjectInspector();
-				fields[i] = insp == null ? null : LazyFactory
-						.createLazyObject(insp);
-			}
-			fieldInited = new boolean[fields.length];
-			fieldIsNull = new boolean[fields.length];
-			fieldStart = new int[fields.length];
-			fieldLength = new int[fields.length];
-		}
-
-		/**
-		 * Please note that one null byte is followed by eight fields, then more
-		 * null byte and fields.
-		 */
-
-		int fieldId = 0;
-		int structByteEnd = start + length;
-
-		byte nullByte = bytes[start];
-		int lastFieldByteEnd = start + 1;
-		// Go through all bytes in the byte[]
-		for (int i = 0; i < fields.length; i++) {
-			fieldIsNull[i] = true;
-			if ((nullByte & (1 << (i % 8))) != 0) {
-				fieldIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(fieldRefs.get(i)
-						.getFieldObjectInspector(), bytes, lastFieldByteEnd,
-						recordInfo);
-				fieldStart[i] = lastFieldByteEnd + recordInfo.elementOffset;
-				fieldLength[i] = recordInfo.elementSize;
-				lastFieldByteEnd = fieldStart[i] + fieldLength[i];
-			}
-
-			// count how many fields are there
-			if (lastFieldByteEnd <= structByteEnd) {
-				fieldId++;
-			}
-			// next byte is a null byte if there are more bytes to go
-			if (7 == (i % 8)) {
-				if (lastFieldByteEnd < structByteEnd) {
-					nullByte = bytes[lastFieldByteEnd];
-					lastFieldByteEnd++;
-				} else {
-					// otherwise all null afterwards
-					nullByte = 0;
-					lastFieldByteEnd++;
-				}
-			}
-		}
-
-		// Extra bytes at the end?
-		if (!extraFieldWarned && lastFieldByteEnd < structByteEnd) {
-			extraFieldWarned = true;
-			LOG.warn("Extra bytes detected at the end of the row! Ignoring similar "
-					+ "problems.");
-		}
-
-		// Missing fields?
-		if (!missingFieldWarned && lastFieldByteEnd > structByteEnd) {
-			missingFieldWarned = true;
-			LOG.warn("Missing fields! Expected " + fields.length
-					+ " fields but " + "only got " + fieldId
-					+ "! Ignoring similar problems.");
-		}
-
-		Arrays.fill(fieldInited, false);
-		parsed = true;
-	}
-
-	/**
-	 * Get one field out of the struct.
-	 * 
-	 * If the field is a primitive field, return the actual object. Otherwise
-	 * return the LazyObject. This is because PrimitiveObjectInspector does not
-	 * have control over the object used by the user - the user simply directly
-	 * use the Object instead of going through Object
-	 * PrimitiveObjectInspector.get(Object).
-	 * 
-	 * @param fieldID
-	 *            The field ID
-	 * @return The field as a LazyObject
-	 */
-	public Object getField(int fieldID) {
-		if (!parsed) {
-			parse();
-		}
-		return uncheckedGetField(fieldID);
-	}
-
-	/**
-	 * Get the field out of the row without checking parsed. This is called by
-	 * both getField and getFieldsAsList.
-	 * 
-	 * @param fieldID
-	 *            The id of the field starting from 0.
-	 * @return The value of the field
-	 */
-	private Object uncheckedGetField(int fieldID) {
-		// Test the length first so in most cases we avoid doing a byte[]
-		// comparison.
-		if (fieldIsNull[fieldID]) {
-			return null;
-		}
-		if (!fieldInited[fieldID]) {
-			fieldInited[fieldID] = true;
-			fields[fieldID].init(bytes, fieldStart[fieldID],
-					fieldLength[fieldID]);
-		}
-		return fields[fieldID].getObject();
-	}
-
-	ArrayList<Object> cachedList;
-
-	/**
-	 * Get the values of the fields as an ArrayList.
-	 * 
-	 * @return The values of the fields as an ArrayList.
-	 */
-	public ArrayList<Object> getFieldsAsList() {
-		if (!parsed) {
-			parse();
-		}
-		if (cachedList == null) {
-			cachedList = new ArrayList<Object>();
-		} else {
-			cachedList.clear();
-		}
-		for (int i = 0; i < fields.length; i++) {
-			cachedList.add(uncheckedGetField(i));
-		}
-		return cachedList;
-	}
-
-	@Override
-	public Object getObject() {
-		return this;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyUtils.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyUtils.java
deleted file mode 100644
index 2d0406c..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyUtils.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.hive.serde2.ByteStream.Output;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.typeinfo.ListTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.MapTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.WritableUtils;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyObjectInspectorFactory;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-
-/**
- * LazyUtils.
- * 
- */
-public final class LazyUtils {
-
-	/**
-	 * Convert the byte array to an int starting from the given offset. Refer to
-	 * code by aeden on DZone Snippets:
-	 * 
-	 * @param b
-	 *            the byte array
-	 * @param offset
-	 *            the array offset
-	 * @return the integer
-	 */
-	public static int byteArrayToInt(byte[] b, int offset) {
-		int value = 0;
-		for (int i = 0; i < 4; i++) {
-			int shift = (4 - 1 - i) * 8;
-			value += (b[i + offset] & 0x000000FF) << shift;
-		}
-		return value;
-	}
-
-	/**
-	 * Convert the byte array to a long starting from the given offset.
-	 * 
-	 * @param b
-	 *            the byte array
-	 * @param offset
-	 *            the array offset
-	 * @return the long
-	 */
-	public static long byteArrayToLong(byte[] b, int offset) {
-		long value = 0;
-		for (int i = 0; i < 8; i++) {
-			int shift = (8 - 1 - i) * 8;
-			value += ((long) (b[i + offset] & 0x00000000000000FF)) << shift;
-		}
-		return value;
-	}
-
-	/**
-	 * Convert the byte array to a short starting from the given offset.
-	 * 
-	 * @param b
-	 *            the byte array
-	 * @param offset
-	 *            the array offset
-	 * @return the short
-	 */
-	public static short byteArrayToShort(byte[] b, int offset) {
-		short value = 0;
-		value += (b[offset] & 0x000000FF) << 8;
-		value += (b[offset + 1] & 0x000000FF);
-		return value;
-	}
-
-	/**
-	 * Record is the unit that data is serialized in. A record includes two
-	 * parts. The first part stores the size of the element and the second part
-	 * stores the real element. size element record ->
-	 * |----|-------------------------|
-	 * 
-	 * A RecordInfo stores two information of a record, the size of the "size"
-	 * part which is the element offset and the size of the element part which
-	 * is element size.
-	 */
-	public static class RecordInfo {
-		public RecordInfo() {
-			elementOffset = 0;
-			elementSize = 0;
-		}
-
-		public byte elementOffset;
-		public int elementSize;
-
-		@Override
-		public String toString() {
-			return "(" + elementOffset + ", " + elementSize + ")";
-		}
-	}
-
-	static VInt vInt = new LazyUtils.VInt();
-
-	/**
-	 * Check a particular field and set its size and offset in bytes based on
-	 * the field type and the bytes arrays.
-	 * 
-	 * For void, boolean, byte, short, int, long, float and double, there is no
-	 * offset and the size is fixed. For string, map, list, struct, the first
-	 * four bytes are used to store the size. So the offset is 4 and the size is
-	 * computed by concating the first four bytes together. The first four bytes
-	 * are defined with respect to the offset in the bytes arrays.
-	 * 
-	 * @param objectInspector
-	 *            object inspector of the field
-	 * @param bytes
-	 *            bytes arrays store the table row
-	 * @param offset
-	 *            offset of this field
-	 * @param recordInfo
-	 *            modify this byteinfo object and return it
-	 */
-	public static void checkObjectByteInfo(ObjectInspector objectInspector,
-			byte[] bytes, int offset, RecordInfo recordInfo) {
-		Category category = objectInspector.getCategory();
-		switch (category) {
-		case PRIMITIVE:
-			PrimitiveCategory primitiveCategory = ((PrimitiveObjectInspector) objectInspector)
-					.getPrimitiveCategory();
-			switch (primitiveCategory) {
-			case VOID:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 0;
-				break;
-			case BOOLEAN:
-			case BYTE:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 1;
-				break;
-			case SHORT:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 2;
-				break;
-			case FLOAT:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 4;
-				break;
-			case DOUBLE:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 8;
-				break;
-			case INT:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = WritableUtils
-						.decodeVIntSize(bytes[offset]);
-				break;
-			case LONG:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = WritableUtils
-						.decodeVIntSize(bytes[offset]);
-				break;
-			case STRING:
-				// using vint instead of 4 bytes
-				LazyUtils.readVInt(bytes, offset, vInt);
-				recordInfo.elementOffset = vInt.length;
-				recordInfo.elementSize = vInt.value;
-				break;
-			default: {
-				throw new RuntimeException("Unrecognized primitive type: "
-						+ primitiveCategory);
-			}
-			}
-			break;
-		case LIST:
-		case MAP:
-		case STRUCT:
-			recordInfo.elementOffset = 4;
-			recordInfo.elementSize = LazyUtils.byteArrayToInt(bytes, offset);
-			break;
-		default: {
-			throw new RuntimeException("Unrecognized non-primitive type: "
-					+ category);
-		}
-		}
-	}
-
-	/**
-	 * A zero-compressed encoded long.
-	 */
-	public static class VLong {
-		public VLong() {
-			value = 0;
-			length = 0;
-		}
-
-		public long value;
-		public byte length;
-	};
-
-	/**
-	 * Reads a zero-compressed encoded long from a byte array and returns it.
-	 * 
-	 * @param bytes
-	 *            the byte array
-	 * @param offset
-	 *            offset of the array to read from
-	 * @param vlong
-	 *            storing the deserialized long and its size in byte
-	 */
-	public static void readVLong(byte[] bytes, int offset, VLong vlong) {
-		byte firstByte = bytes[offset];
-		vlong.length = (byte) WritableUtils.decodeVIntSize(firstByte);
-		if (vlong.length == 1) {
-			vlong.value = firstByte;
-			return;
-		}
-		long i = 0;
-		for (int idx = 0; idx < vlong.length - 1; idx++) {
-			byte b = bytes[offset + 1 + idx];
-			i = i << 8;
-			i = i | (b & 0xFF);
-		}
-		vlong.value = (WritableUtils.isNegativeVInt(firstByte) ? (i ^ -1L) : i);
-	}
-
-	/**
-	 * A zero-compressed encoded integer.
-	 */
-	public static class VInt implements Serializable {
-		private static final long serialVersionUID = 1L;
-
-		public VInt() {
-			value = 0;
-			length = 0;
-		}
-
-		public int value;
-		public byte length;
-	};
-
-	/**
-	 * Reads a zero-compressed encoded int from a byte array and returns it.
-	 * 
-	 * @param bytes
-	 *            the byte array
-	 * @param offset
-	 *            offset of the array to read from
-	 * @param vInt
-	 *            storing the deserialized int and its size in byte
-	 */
-	public static void readVInt(byte[] bytes, int offset, VInt vInt) {
-		byte firstByte = bytes[offset];
-		vInt.length = (byte) WritableUtils.decodeVIntSize(firstByte);
-		if (vInt.length == 1) {
-			vInt.value = firstByte;
-			return;
-		}
-		int i = 0;
-		for (int idx = 0; idx < vInt.length - 1; idx++) {
-			byte b = bytes[offset + 1 + idx];
-			i = i << 8;
-			i = i | (b & 0xFF);
-		}
-		vInt.value = (WritableUtils.isNegativeVInt(firstByte) ? (i ^ -1) : i);
-	}
-
-	/**
-	 * Writes a zero-compressed encoded int to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param i
-	 *            the int
-	 */
-	public static void writeVInt(Output byteStream, int i) {
-		writeVLong(byteStream, i);
-	}
-
-	/**
-	 * Write a zero-compressed encoded long to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param l
-	 *            the long
-	 */
-	public static void writeVLong(Output byteStream, long l) {
-		if (l >= -112 && l <= 127) {
-			byteStream.write((byte) l);
-			return;
-		}
-
-		int len = -112;
-		if (l < 0) {
-			l ^= -1L; // take one's complement'
-			len = -120;
-		}
-
-		long tmp = l;
-		while (tmp != 0) {
-			tmp = tmp >> 8;
-			len--;
-		}
-
-		byteStream.write((byte) len);
-
-		len = (len < -120) ? -(len + 120) : -(len + 112);
-
-		for (int idx = len; idx != 0; idx--) {
-			int shiftbits = (idx - 1) * 8;
-			long mask = 0xFFL << shiftbits;
-			byteStream.write((byte) ((l & mask) >> shiftbits));
-		}
-	}
-
-	static Map<TypeInfo, ObjectInspector> cachedLazyObjectInspector = new ConcurrentHashMap<TypeInfo, ObjectInspector>();
-
-	/**
-	 * Returns the lazy binary object inspector that can be used to inspect an
-	 * lazy binary object of that typeInfo
-	 * 
-	 * For primitive types, we use the standard writable object inspector.
-	 */
-	public static ObjectInspector getLazyObjectInspectorFromTypeInfo(
-			TypeInfo typeInfo, boolean topLevel) {
-		if (typeInfo == null)
-			throw new IllegalStateException("illegal type null ");
-		ObjectInspector result = cachedLazyObjectInspector.get(typeInfo);
-		if (result == null) {
-			switch (typeInfo.getCategory()) {
-			case PRIMITIVE: {
-				result = PrimitiveObjectInspectorFactory
-						.getPrimitiveLazyObjectInspector(((PrimitiveTypeInfo) typeInfo)
-								.getPrimitiveCategory());
-				break;
-			}
-			case LIST: {
-				ObjectInspector elementObjectInspector = getLazyObjectInspectorFromTypeInfo(
-						((ListTypeInfo) typeInfo).getListElementTypeInfo(),
-						false);
-				result = LazyObjectInspectorFactory
-						.getLazyListObjectInspector(elementObjectInspector);
-				break;
-			}
-			case MAP: {
-				MapTypeInfo mapTypeInfo = (MapTypeInfo) typeInfo;
-				ObjectInspector keyObjectInspector = getLazyObjectInspectorFromTypeInfo(
-						mapTypeInfo.getMapKeyTypeInfo(), false);
-				ObjectInspector valueObjectInspector = getLazyObjectInspectorFromTypeInfo(
-						mapTypeInfo.getMapValueTypeInfo(), false);
-				result = LazyObjectInspectorFactory.getLazyMapObjectInspector(
-						keyObjectInspector, valueObjectInspector);
-				break;
-			}
-			case STRUCT: {
-				StructTypeInfo structTypeInfo = (StructTypeInfo) typeInfo;
-				List<String> fieldNames = structTypeInfo
-						.getAllStructFieldNames();
-				List<TypeInfo> fieldTypeInfos = structTypeInfo
-						.getAllStructFieldTypeInfos();
-				List<ObjectInspector> fieldObjectInspectors = new ArrayList<ObjectInspector>(
-						fieldTypeInfos.size());
-
-				for (int i = 0; i < fieldTypeInfos.size(); i++) {
-					fieldObjectInspectors
-							.add(getLazyObjectInspectorFromTypeInfo(
-									fieldTypeInfos.get(i), false));
-				}
-
-				// if it is top level then create columnar
-				if (topLevel)
-					result = LazyObjectInspectorFactory
-							.getLazyColumnarObjectInspector(fieldNames,
-									fieldObjectInspectors);
-				// if it is not top level then create struct
-				else
-					result = LazyObjectInspectorFactory
-							.getLazyStructObjectInspector(fieldNames,
-									fieldObjectInspectors);
-
-				break;
-			}
-			default: {
-				result = null;
-			}
-			}
-			cachedLazyObjectInspector.put(typeInfo, result);
-		}
-		return result;
-	}
-
-	/**
-	 * get top-level lazy object inspector
-	 * 
-	 * @param fieldNames
-	 * @param fieldTypeInfos
-	 * @return
-	 */
-	public static ObjectInspector getLazyObjectInspector(
-			List<String> fieldNames, List<TypeInfo> fieldTypeInfos) {
-		List<ObjectInspector> fieldObjectInspectors = new ArrayList<ObjectInspector>(
-				fieldTypeInfos.size());
-		for (int i = 0; i < fieldTypeInfos.size(); i++) {
-			fieldObjectInspectors.add(getLazyObjectInspectorFromTypeInfo(
-					fieldTypeInfos.get(i), false));
-		}
-
-		return LazyObjectInspectorFactory.getLazyColumnarObjectInspector(
-				fieldNames, fieldObjectInspectors);
-	}
-
-	private LazyUtils() {
-		// prevent instantiation
-	}
-
-	/**
-	 * Returns -1 if the first byte sequence is lexicographically less than the
-	 * second; returns +1 if the second byte sequence is lexicographically less
-	 * than the first; otherwise return 0.
-	 */
-	public static int compare(byte[] b1, int start1, int length1, byte[] b2,
-			int start2, int length2) {
-
-		int min = Math.min(length1, length2);
-
-		for (int i = 0; i < min; i++) {
-			if (b1[start1 + i] == b2[start2 + i]) {
-				continue;
-			}
-			if (b1[start1 + i] < b2[start2 + i]) {
-				return -1;
-			} else {
-				return 1;
-			}
-		}
-
-		if (length1 < length2) {
-			return -1;
-		}
-		if (length1 > length2) {
-			return 1;
-		}
-		return 0;
-	}
-
-	public static int hashBytes(byte[] data, int start, int len) {
-		int hash = 1;
-		for (int i = start; i < len; i++) {
-			hash = (31 * hash) + data[i];
-		}
-		return hash;
-	}
-
-	/**
-	 * Writes a zero-compressed encoded int to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param i
-	 *            the int
-	 */
-	public static void writeVInt(DataOutput byteStream, int i)
-			throws IOException {
-		writeVLong(byteStream, i);
-	}
-
-	/**
-	 * Write a zero-compressed encoded long to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param l
-	 *            the long
-	 */
-	public static void writeVLong(DataOutput byteStream, long l)
-			throws IOException {
-		if (l >= -112 && l <= 127) {
-			byteStream.write((byte) l);
-			return;
-		}
-
-		int len = -112;
-		if (l < 0) {
-			l ^= -1L; // take one's complement'
-			len = -120;
-		}
-
-		long tmp = l;
-		while (tmp != 0) {
-			tmp = tmp >> 8;
-			len--;
-		}
-
-		byteStream.write((byte) len);
-
-		len = (len < -120) ? -(len + 120) : -(len + 112);
-
-		for (int idx = len; idx != 0; idx--) {
-			int shiftbits = (idx - 1) * 8;
-			long mask = 0xFFL << shiftbits;
-			byteStream.write((byte) ((l & mask) >> shiftbits));
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyColumnarObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyColumnarObjectInspector.java
deleted file mode 100644
index b20f185..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyColumnarObjectInspector.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyColumnar;
-
-/**
- * ObjectInspector for LazyColumnar.
- * 
- * @see LazyColumnar
- */
-public class LazyColumnarObjectInspector extends StandardStructObjectInspector
-		implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	public LazyColumnarObjectInspector(List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		super(structFieldNames, structFieldObjectInspectors);
-	}
-
-	public LazyColumnarObjectInspector(List<StructField> fields) {
-		super(fields);
-	}
-
-	@Override
-	public Object getStructFieldData(Object data, StructField fieldRef) {
-		if (data == null) {
-			return null;
-		}
-		LazyColumnar struct = (LazyColumnar) data;
-		MyField f = (MyField) fieldRef;
-
-		int fieldID = f.getFieldID();
-		assert (fieldID >= 0 && fieldID < fields.size());
-
-		Object column = struct.getField(fieldID);
-		return column;
-	}
-
-	@Override
-	public List<Object> getStructFieldsDataAsList(Object data) {
-		if (data == null) {
-			return null;
-		}
-		LazyColumnar struct = (LazyColumnar) data;
-		return struct.getFieldsAsList();
-	}
-
-	public String toString() {
-		String str = "";
-		for (MyField f : fields) {
-			str += f.getFieldName() + ":"
-					+ f.getFieldObjectInspector().getTypeName() + "  ";
-		}
-		return str;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyListObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyListObjectInspector.java
deleted file mode 100644
index dc4e85b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyListObjectInspector.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyArray;
-
-/**
- * ObjectInspector for LazyList.
- */
-public class LazyListObjectInspector extends StandardListObjectInspector {
-
-	protected LazyListObjectInspector(ObjectInspector listElementObjectInspector) {
-		super(listElementObjectInspector);
-	}
-
-	@Override
-	public List<?> getList(Object data) {
-		if (data == null) {
-			return null;
-		}
-		LazyArray array = (LazyArray) data;
-		return array.getList();
-	}
-
-	@Override
-	public Object getListElement(Object data, int index) {
-		if (data == null) {
-			return null;
-		}
-		LazyArray array = (LazyArray) data;
-		return array.getListElementObject(index);
-	}
-
-	@Override
-	public int getListLength(Object data) {
-		if (data == null) {
-			return -1;
-		}
-		LazyArray array = (LazyArray) data;
-		return array.getListLength();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyMapObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyMapObjectInspector.java
deleted file mode 100644
index a3be142..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyMapObjectInspector.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.Map;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardMapObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyMap;
-
-/**
- * ObjectInspector for LazyMap.
- * 
- * @see LazyMap
- */
-public class LazyMapObjectInspector extends StandardMapObjectInspector {
-
-	protected LazyMapObjectInspector(ObjectInspector mapKeyObjectInspector,
-			ObjectInspector mapValueObjectInspector) {
-		super(mapKeyObjectInspector, mapValueObjectInspector);
-	}
-
-	@Override
-	public Map<?, ?> getMap(Object data) {
-		if (data == null) {
-			return null;
-		}
-		return ((LazyMap) data).getMap();
-	}
-
-	@Override
-	public int getMapSize(Object data) {
-		if (data == null) {
-			return -1;
-		}
-		return ((LazyMap) data).getMapSize();
-	}
-
-	@Override
-	public Object getMapValueElement(Object data, Object key) {
-		if (data == null) {
-			return -1;
-		}
-		return ((LazyMap) data).getMapValueElement(key);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyObjectInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyObjectInspectorFactory.java
deleted file mode 100644
index 439b130..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyObjectInspectorFactory.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-/**
- * ObjectInspectorFactory is the primary way to create new ObjectInspector
- * instances.
- * 
- * SerDe classes should call the static functions in this library to create an
- * ObjectInspector to return to the caller of SerDe2.getObjectInspector().
- * 
- * The reason of having caches here is that ObjectInspectors do not have an
- * internal state - so ObjectInspectors with the same construction parameters
- * should result in exactly the same ObjectInspector.
- */
-
-public final class LazyObjectInspectorFactory {
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyColumnarObjectInspector> cachedLazyColumnarObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyColumnarObjectInspector>();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyStructObjectInspector> cachedLazyStructObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyStructObjectInspector>();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyListObjectInspector> cachedLazyListObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyListObjectInspector>();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyMapObjectInspector> cachedLazyMapObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyMapObjectInspector>();
-
-	public static LazyColumnarObjectInspector getLazyColumnarObjectInspector(
-			List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(structFieldNames);
-		signature.add(structFieldObjectInspectors);
-		LazyColumnarObjectInspector result = cachedLazyColumnarObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyColumnarObjectInspector(structFieldNames,
-					structFieldObjectInspectors);
-			cachedLazyColumnarObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static LazyStructObjectInspector getLazyStructObjectInspector(
-			List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(structFieldNames);
-		signature.add(structFieldObjectInspectors);
-		LazyStructObjectInspector result = cachedLazyStructObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyStructObjectInspector(structFieldNames,
-					structFieldObjectInspectors);
-			cachedLazyStructObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static LazyListObjectInspector getLazyListObjectInspector(
-			ObjectInspector listElementInspector) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(listElementInspector);
-		LazyListObjectInspector result = cachedLazyListObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyListObjectInspector(listElementInspector);
-			cachedLazyListObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static LazyMapObjectInspector getLazyMapObjectInspector(
-			ObjectInspector keyInspector, ObjectInspector valueInspector) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(keyInspector);
-		signature.add(valueInspector);
-		LazyMapObjectInspector result = cachedLazyMapObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyMapObjectInspector(keyInspector, valueInspector);
-			cachedLazyMapObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	private LazyObjectInspectorFactory() {
-		// prevent instantiation
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyStructObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyStructObjectInspector.java
deleted file mode 100644
index 1a50233..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyStructObjectInspector.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyStruct;
-
-/**
- * ObjectInspector for LazyStruct.
- * 
- * @see LazyStruct
- */
-public class LazyStructObjectInspector extends StandardStructObjectInspector {
-
-	protected LazyStructObjectInspector(List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		super(structFieldNames, structFieldObjectInspectors);
-	}
-
-	protected LazyStructObjectInspector(List<StructField> fields) {
-		super(fields);
-	}
-
-	@Override
-	public Object getStructFieldData(Object data, StructField fieldRef) {
-		if (data == null) {
-			return null;
-		}
-		LazyStruct struct = (LazyStruct) data;
-		MyField f = (MyField) fieldRef;
-
-		int fieldID = f.getFieldID();
-		assert (fieldID >= 0 && fieldID < fields.size());
-
-		return struct.getField(fieldID);
-	}
-
-	@Override
-	public List<Object> getStructFieldsDataAsList(Object data) {
-		if (data == null) {
-			return null;
-		}
-		LazyStruct struct = (LazyStruct) data;
-		return struct.getFieldsAsList();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java
deleted file mode 100644
index 7ef8bdd..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.AbstractPrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.PrimitiveTypeEntry;
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyPrimitive;
-
-/**
- * An AbstractPrimitiveLazyObjectInspector for a LazyPrimitive object.
- */
-public abstract class AbstractPrimitiveLazyObjectInspector<T extends Writable>
-		extends AbstractPrimitiveObjectInspector {
-
-	protected AbstractPrimitiveLazyObjectInspector(PrimitiveTypeEntry typeEntry) {
-		super(typeEntry);
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public T getPrimitiveWritableObject(Object o) {
-		if (o == null)
-			System.out.println("sth. wrong");
-		return o == null ? null : ((LazyPrimitive<?, T>) o).getWritableObject();
-	}
-
-	@Override
-	public boolean preferWritable() {
-		return true;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java
deleted file mode 100644
index 472dce0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.BooleanWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyBoolean;
-
-/**
- * A WritableBooleanObjectInspector inspects a BooleanWritable Object.
- */
-public class LazyBooleanObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<BooleanWritable> implements
-		BooleanObjectInspector {
-
-	LazyBooleanObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.booleanTypeEntry);
-	}
-
-	@Override
-	public boolean get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyBoolean((LazyBoolean) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Boolean.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyByteObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyByteObjectInspector.java
deleted file mode 100644
index e631fc7..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyByteObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.ByteWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyByte;
-
-/**
- * A WritableByteObjectInspector inspects a ByteWritable Object.
- */
-public class LazyByteObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<ByteWritable> implements
-		ByteObjectInspector {
-
-	LazyByteObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.byteTypeEntry);
-	}
-
-	@Override
-	public byte get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyByte((LazyByte) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Byte.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java
deleted file mode 100644
index 1257f11..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.DoubleWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyDouble;
-
-/**
- * A WritableDoubleObjectInspector inspects a DoubleWritable Object.
- */
-public class LazyDoubleObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<DoubleWritable> implements
-		DoubleObjectInspector {
-
-	LazyDoubleObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.doubleTypeEntry);
-	}
-
-	@Override
-	public double get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyDouble((LazyDouble) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Double.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyFloatObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyFloatObjectInspector.java
deleted file mode 100644
index c66a06f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyFloatObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.FloatWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyFloat;
-
-/**
- * A FloatObjectInspector inspects a FloatWritable Object.
- */
-public class LazyFloatObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<FloatWritable> implements
-		FloatObjectInspector {
-
-	LazyFloatObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.floatTypeEntry);
-	}
-
-	@Override
-	public float get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyFloat((LazyFloat) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Float.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyIntObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyIntObjectInspector.java
deleted file mode 100644
index b2159e0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyIntObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.IntWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyInteger;
-
-/**
- * A WritableIntObjectInspector inspects a IntWritable Object.
- */
-public class LazyIntObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<IntWritable> implements
-		IntObjectInspector {
-
-	LazyIntObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.intTypeEntry);
-	}
-
-	@Override
-	public int get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyInteger((LazyInteger) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Integer.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyLongObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyLongObjectInspector.java
deleted file mode 100644
index 1fc2d53..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyLongObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyLong;
-
-/**
- * A WritableLongObjectInspector inspects a LongWritable Object.
- */
-public class LazyLongObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<LongWritable> implements
-		LongObjectInspector {
-
-	LazyLongObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.longTypeEntry);
-	}
-
-	@Override
-	public long get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyLong((LazyLong) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Long.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java
deleted file mode 100644
index 134dc5a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-
-/**
- * LazyPrimitiveObjectInspectorFactory is the primary way to create new
- * ObjectInspector instances.
- * 
- * SerDe classes should call the static functions in this library to create an
- * ObjectInspector to return to the caller of SerDe2.getObjectInspector().
- * 
- * The reason of having caches here is that ObjectInspector is because
- * ObjectInspectors do not have an internal state - so ObjectInspectors with the
- * same construction parameters should result in exactly the same
- * ObjectInspector.
- */
-public final class LazyPrimitiveObjectInspectorFactory {
-
-	public static final LazyBooleanObjectInspector LAZY_BOOLEAN_OBJECT_INSPECTOR = new LazyBooleanObjectInspector();
-	public static final LazyByteObjectInspector LAZY_BYTE_OBJECT_INSPECTOR = new LazyByteObjectInspector();
-	public static final LazyShortObjectInspector LAZY_SHORT_OBJECT_INSPECTOR = new LazyShortObjectInspector();
-	public static final LazyIntObjectInspector LAZY_INT_OBJECT_INSPECTOR = new LazyIntObjectInspector();
-	public static final LazyLongObjectInspector LAZY_LONG_OBJECT_INSPECTOR = new LazyLongObjectInspector();
-	public static final LazyFloatObjectInspector LAZY_FLOAT_OBJECT_INSPECTOR = new LazyFloatObjectInspector();
-	public static final LazyDoubleObjectInspector LAZY_DOUBLE_OBJECT_INSPECTOR = new LazyDoubleObjectInspector();
-	public static final LazyVoidObjectInspector LAZY_VOID_OBJECT_INSPECTOR = new LazyVoidObjectInspector();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyStringObjectInspector> cachedLazyStringObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyStringObjectInspector>();
-
-	public static LazyStringObjectInspector getLazyStringObjectInspector(
-			boolean escaped, byte escapeChar) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(Boolean.valueOf(escaped));
-		signature.add(Byte.valueOf(escapeChar));
-		LazyStringObjectInspector result = cachedLazyStringObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyStringObjectInspector(escaped, escapeChar);
-			cachedLazyStringObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static AbstractPrimitiveLazyObjectInspector<?> getLazyObjectInspector(
-			PrimitiveCategory primitiveCategory, boolean escaped,
-			byte escapeChar) {
-
-		switch (primitiveCategory) {
-		case BOOLEAN:
-			return LAZY_BOOLEAN_OBJECT_INSPECTOR;
-		case BYTE:
-			return LAZY_BYTE_OBJECT_INSPECTOR;
-		case SHORT:
-			return LAZY_SHORT_OBJECT_INSPECTOR;
-		case INT:
-			return LAZY_INT_OBJECT_INSPECTOR;
-		case LONG:
-			return LAZY_LONG_OBJECT_INSPECTOR;
-		case FLOAT:
-			return LAZY_FLOAT_OBJECT_INSPECTOR;
-		case DOUBLE:
-			return LAZY_DOUBLE_OBJECT_INSPECTOR;
-		case STRING:
-			return getLazyStringObjectInspector(escaped, escapeChar);
-		case VOID:
-			return LAZY_VOID_OBJECT_INSPECTOR;
-		default:
-			throw new RuntimeException(
-					"Internal error: Cannot find ObjectInspector " + " for "
-							+ primitiveCategory);
-		}
-	}
-
-	private LazyPrimitiveObjectInspectorFactory() {
-		// prevent instantiation
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyShortObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyShortObjectInspector.java
deleted file mode 100644
index cb06dfd..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyShortObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyShort;
-
-/**
- * A WritableShortObjectInspector inspects a ShortWritable Object.
- */
-public class LazyShortObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<ShortWritable> implements
-		ShortObjectInspector {
-
-	LazyShortObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.shortTypeEntry);
-	}
-
-	@Override
-	public short get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyShort((LazyShort) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Short.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyStringObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyStringObjectInspector.java
deleted file mode 100644
index 5832f34..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyStringObjectInspector.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyString;
-
-/**
- * A WritableStringObjectInspector inspects a Text Object.
- */
-public class LazyStringObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<Text> implements
-		StringObjectInspector {
-
-	boolean escaped;
-	byte escapeChar;
-
-	LazyStringObjectInspector(boolean escaped, byte escapeChar) {
-		super(PrimitiveObjectInspectorUtils.stringTypeEntry);
-		this.escaped = escaped;
-		this.escapeChar = escapeChar;
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyString((LazyString) o);
-	}
-
-	@Override
-	public Text getPrimitiveWritableObject(Object o) {
-		return o == null ? null : ((LazyString) o).getWritableObject();
-	}
-
-	@Override
-	public String getPrimitiveJavaObject(Object o) {
-		return o == null ? null : ((LazyString) o).getWritableObject()
-				.toString();
-	}
-
-	public boolean isEscaped() {
-		return escaped;
-	}
-
-	public byte getEscapeChar() {
-		return escapeChar;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyVoidObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyVoidObjectInspector.java
deleted file mode 100644
index a30f1af..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyVoidObjectInspector.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.VoidObjectInspector;
-import org.apache.hadoop.io.NullWritable;
-
-/**
- * A WritableVoidObjectInspector inspects a NullWritable Object.
- */
-public class LazyVoidObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<NullWritable> implements
-		VoidObjectInspector {
-
-	LazyVoidObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.voidTypeEntry);
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o;
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		throw new RuntimeException("Internal error: cannot create Void object.");
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/PrimitiveObjectInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/PrimitiveObjectInspectorFactory.java
deleted file mode 100644
index e70bdb9..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/PrimitiveObjectInspectorFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import java.util.HashMap;
-
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-
-/**
- * PrimitiveObjectInspectorFactory is the primary way to create new
- * PrimitiveObjectInspector instances.
- * 
- * The reason of having caches here is that ObjectInspector is because
- * ObjectInspectors do not have an internal state - so ObjectInspectors with the
- * same construction parameters should result in exactly the same
- * ObjectInspector.
- */
-public final class PrimitiveObjectInspectorFactory {
-
-	public static final LazyBooleanObjectInspector LazyBooleanObjectInspector = new LazyBooleanObjectInspector();
-	public static final LazyByteObjectInspector LazyByteObjectInspector = new LazyByteObjectInspector();
-	public static final LazyShortObjectInspector LazyShortObjectInspector = new LazyShortObjectInspector();
-	public static final LazyIntObjectInspector LazyIntObjectInspector = new LazyIntObjectInspector();
-	public static final LazyLongObjectInspector LazyLongObjectInspector = new LazyLongObjectInspector();
-	public static final LazyFloatObjectInspector LazyFloatObjectInspector = new LazyFloatObjectInspector();
-	public static final LazyDoubleObjectInspector LazyDoubleObjectInspector = new LazyDoubleObjectInspector();
-	public static final LazyStringObjectInspector LazyStringObjectInspector = new LazyStringObjectInspector(
-			false, (byte) '\\');
-	public static final LazyVoidObjectInspector LazyVoidObjectInspector = new LazyVoidObjectInspector();
-
-	private static HashMap<PrimitiveCategory, AbstractPrimitiveLazyObjectInspector<?>> cachedPrimitiveLazyInspectorCache = new HashMap<PrimitiveCategory, AbstractPrimitiveLazyObjectInspector<?>>();
-
-	static {
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.BOOLEAN,
-				LazyBooleanObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.BYTE,
-				LazyByteObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.SHORT,
-				LazyShortObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.INT,
-				LazyIntObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.LONG,
-				LazyLongObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.FLOAT,
-				LazyFloatObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.DOUBLE,
-				LazyDoubleObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.STRING,
-				LazyStringObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.VOID,
-				LazyVoidObjectInspector);
-	}
-
-	/**
-	 * Returns the PrimitiveWritableObjectInspector for the PrimitiveCategory.
-	 * 
-	 * @param primitiveCategory
-	 */
-	public static AbstractPrimitiveLazyObjectInspector<?> getPrimitiveLazyObjectInspector(
-			PrimitiveCategory primitiveCategory) {
-		AbstractPrimitiveLazyObjectInspector<?> result = cachedPrimitiveLazyInspectorCache
-				.get(primitiveCategory);
-		if (result == null) {
-			throw new RuntimeException(
-					"Internal error: Cannot find ObjectInspector " + " for "
-							+ primitiveCategory);
-		}
-		return result;
-	}
-
-	private PrimitiveObjectInspectorFactory() {
-		// prevent instantiation
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/IHiveParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/IHiveParser.java
deleted file mode 100644
index aeea68f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/IHiveParser.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.serde.parser;
-
-import java.io.IOException;
-
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-
-public interface IHiveParser {
-	/**
-	 * parse one hive rwo into
-	 * 
-	 * @param row
-	 * @param objectInspector
-	 * @param tb
-	 */
-	public void parse(byte[] data, int start, int length, ArrayTupleBuilder tb)
-			throws IOException;
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/TextToBinaryTupleParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/TextToBinaryTupleParser.java
deleted file mode 100644
index 3aeb058..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/TextToBinaryTupleParser.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package edu.uci.ics.hivesterix.serde.parser;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.lazy.LazyInteger;
-import org.apache.hadoop.hive.serde2.lazy.LazyLong;
-import org.apache.hadoop.hive.serde2.lazy.LazyShort;
-import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazySimpleStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-
-public class TextToBinaryTupleParser implements IHiveParser {
-	private int[] invertedIndex;
-	private int[] fieldEnds;
-	private int lastNecessaryFieldIndex;
-	private LazySimpleStructObjectInspector inputObjectInspector;
-	private List<? extends StructField> fieldRefs;
-
-	public TextToBinaryTupleParser(int[] outputColumnsOffset,
-			ObjectInspector structInspector) {
-		int size = 0;
-		for (int i = 0; i < outputColumnsOffset.length; i++)
-			if (outputColumnsOffset[i] >= 0)
-				size++;
-		invertedIndex = new int[size];
-		for (int i = 0; i < outputColumnsOffset.length; i++)
-			if (outputColumnsOffset[i] >= 0) {
-				invertedIndex[outputColumnsOffset[i]] = i;
-				lastNecessaryFieldIndex = i;
-			}
-		fieldEnds = new int[outputColumnsOffset.length];
-		for (int i = 0; i < fieldEnds.length; i++)
-			fieldEnds[i] = 0;
-		inputObjectInspector = (LazySimpleStructObjectInspector) structInspector;
-		fieldRefs = inputObjectInspector.getAllStructFieldRefs();
-	}
-
-	@Override
-	public void parse(byte[] bytes, int start, int length, ArrayTupleBuilder tb)
-			throws IOException {
-		byte separator = inputObjectInspector.getSeparator();
-		boolean lastColumnTakesRest = inputObjectInspector
-				.getLastColumnTakesRest();
-		boolean isEscaped = inputObjectInspector.isEscaped();
-		byte escapeChar = inputObjectInspector.getEscapeChar();
-		DataOutput output = tb.getDataOutput();
-
-		int structByteEnd = start + length - 1;
-		int fieldId = 0;
-		int fieldByteEnd = start;
-
-		// Go through all bytes in the byte[]
-		while (fieldByteEnd <= structByteEnd
-				&& fieldId <= lastNecessaryFieldIndex) {
-			if (fieldByteEnd == structByteEnd
-					|| bytes[fieldByteEnd] == separator) {
-				// Reached the end of a field?
-				if (lastColumnTakesRest && fieldId == fieldEnds.length - 1) {
-					fieldByteEnd = structByteEnd;
-				}
-				fieldEnds[fieldId] = fieldByteEnd;
-				if (fieldId == fieldEnds.length - 1
-						|| fieldByteEnd == structByteEnd) {
-					// for the case of null fields
-					for (int i = fieldId; i < fieldEnds.length; i++) {
-						fieldEnds[i] = fieldByteEnd;
-					}
-					break;
-				}
-				fieldByteEnd++;
-				fieldId++;
-			} else {
-				if (isEscaped && bytes[fieldByteEnd] == escapeChar
-						&& fieldByteEnd + 1 < structByteEnd) {
-					// ignore the char after escape_char
-					fieldByteEnd += 2;
-				} else {
-					fieldByteEnd++;
-				}
-			}
-		}
-
-		for (int i = 0; i < invertedIndex.length; i++) {
-			int index = invertedIndex[i];
-			StructField fieldRef = fieldRefs.get(index);
-			ObjectInspector inspector = fieldRef.getFieldObjectInspector();
-			Category category = inspector.getCategory();
-			int fieldStart = index == 0 ? 0 : fieldEnds[index - 1] + 1;
-			int fieldEnd = fieldEnds[index];
-			if (bytes[fieldEnd] == separator)
-				fieldEnd--;
-			int fieldLen = fieldEnd - fieldStart + 1;
-			switch (category) {
-			case PRIMITIVE:
-				PrimitiveObjectInspector poi = (PrimitiveObjectInspector) inspector;
-				switch (poi.getPrimitiveCategory()) {
-				case VOID: {
-					break;
-				}
-				case BOOLEAN: {
-					output.write(bytes[fieldStart]);
-					break;
-				}
-				case BYTE: {
-					output.write(bytes[fieldStart]);
-					break;
-				}
-				case SHORT: {
-					short v = LazyShort.parseShort(bytes, fieldStart, fieldLen);
-					output.write((byte) (v >> 8));
-					output.write((byte) (v));
-					break;
-				}
-				case INT: {
-					int v = LazyInteger.parseInt(bytes, fieldStart, fieldLen);
-					LazyUtils.writeVInt(output, v);
-					break;
-				}
-				case LONG: {
-					long v = LazyLong.parseLong(bytes, fieldStart, fieldLen);
-					LazyUtils.writeVLong(output, v);
-					break;
-				}
-				case FLOAT: {
-					float value = Float.parseFloat(Text.decode(bytes,
-							fieldStart, fieldLen));
-					int v = Float.floatToIntBits(value);
-					output.write((byte) (v >> 24));
-					output.write((byte) (v >> 16));
-					output.write((byte) (v >> 8));
-					output.write((byte) (v));
-					break;
-				}
-				case DOUBLE: {
-					try {
-						double value = Double.parseDouble(Text.decode(bytes,
-								fieldStart, fieldLen));
-						long v = Double.doubleToLongBits(value);
-						output.write((byte) (v >> 56));
-						output.write((byte) (v >> 48));
-						output.write((byte) (v >> 40));
-						output.write((byte) (v >> 32));
-						output.write((byte) (v >> 24));
-						output.write((byte) (v >> 16));
-						output.write((byte) (v >> 8));
-						output.write((byte) (v));
-					} catch (NumberFormatException e) {
-						throw e;
-					}
-					break;
-				}
-				case STRING: {
-					LazyUtils.writeVInt(output, fieldLen);
-					output.write(bytes, fieldStart, fieldLen);
-					break;
-				}
-				default: {
-					throw new RuntimeException("Unrecognized type: "
-							+ poi.getPrimitiveCategory());
-				}
-				}
-				break;
-			case STRUCT:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			case LIST:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			case MAP:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			case UNION:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			}
-			tb.addFieldEndOffset();
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/Driver.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/Driver.java
deleted file mode 100644
index 57e2cc0..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/Driver.java
+++ /dev/null
@@ -1,1441 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql;
-
-import java.io.DataInput;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.fs.FSDataInputStream;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.common.JavaUtils;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.metastore.MetaStoreUtils;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
-import org.apache.hadoop.hive.metastore.api.Schema;
-import org.apache.hadoop.hive.ql.exec.ConditionalTask;
-import org.apache.hadoop.hive.ql.exec.ExecDriver;
-import org.apache.hadoop.hive.ql.exec.FetchTask;
-import org.apache.hadoop.hive.ql.exec.MapRedTask;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.StatsTask;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.Task;
-import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.exec.TaskResult;
-import org.apache.hadoop.hive.ql.exec.TaskRunner;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.history.HiveHistory.Keys;
-import org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext;
-import org.apache.hadoop.hive.ql.hooks.Hook;
-import org.apache.hadoop.hive.ql.hooks.HookContext;
-import org.apache.hadoop.hive.ql.hooks.PostExecute;
-import org.apache.hadoop.hive.ql.hooks.PreExecute;
-import org.apache.hadoop.hive.ql.hooks.ReadEntity;
-import org.apache.hadoop.hive.ql.hooks.WriteEntity;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLock;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockManager;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockManagerCtx;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockMode;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockObj;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject.HiveLockObjectData;
-import org.apache.hadoop.hive.ql.lockmgr.LockException;
-import org.apache.hadoop.hive.ql.metadata.AuthorizationException;
-import org.apache.hadoop.hive.ql.metadata.DummyPartition;
-import org.apache.hadoop.hive.ql.metadata.Hive;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.metadata.HiveUtils;
-import org.apache.hadoop.hive.ql.metadata.Partition;
-import org.apache.hadoop.hive.ql.metadata.Table;
-import org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner;
-import org.apache.hadoop.hive.ql.parse.ASTNode;
-import org.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook;
-import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
-import org.apache.hadoop.hive.ql.parse.ErrorMsg;
-import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext;
-import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContextImpl;
-import org.apache.hadoop.hive.ql.parse.ParseContext;
-import org.apache.hadoop.hive.ql.parse.ParseDriver;
-import org.apache.hadoop.hive.ql.parse.ParseException;
-import org.apache.hadoop.hive.ql.parse.ParseUtils;
-import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
-import org.apache.hadoop.hive.ql.parse.SemanticAnalyzer;
-import org.apache.hadoop.hive.ql.parse.SemanticAnalyzerFactory;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
-import org.apache.hadoop.hive.ql.plan.ConditionalResolver;
-import org.apache.hadoop.hive.ql.plan.ConditionalResolverMergeFiles;
-import org.apache.hadoop.hive.ql.plan.HiveOperation;
-import org.apache.hadoop.hive.ql.plan.TableDesc;
-import org.apache.hadoop.hive.ql.processors.CommandProcessor;
-import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
-import org.apache.hadoop.hive.serde2.ByteStream;
-import org.apache.hadoop.hive.shims.ShimLoader;
-import org.apache.hadoop.mapred.ClusterStatus;
-import org.apache.hadoop.mapred.JobClient;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.util.ReflectionUtils;
-
-import edu.uci.ics.hivesterix.runtime.exec.HyracksExecutionEngine;
-import edu.uci.ics.hivesterix.runtime.exec.IExecutionEngine;
-
-@SuppressWarnings({ "deprecation", "unused" })
-public class Driver implements CommandProcessor {
-
-	static final private Log LOG = LogFactory.getLog(Driver.class.getName());
-	static final private LogHelper console = new LogHelper(LOG);
-
-	// hive-sterix
-	private IExecutionEngine engine;
-	private boolean hivesterix = false;
-
-	private int maxRows = 100;
-	ByteStream.Output bos = new ByteStream.Output();
-
-	private HiveConf conf;
-	private DataInput resStream;
-	private Context ctx;
-	private QueryPlan plan;
-	private Schema schema;
-	private HiveLockManager hiveLockMgr;
-
-	private String errorMessage;
-	private String SQLState;
-
-	// A limit on the number of threads that can be launched
-	private int maxthreads;
-	private final int sleeptime = 2000;
-
-	protected int tryCount = Integer.MAX_VALUE;
-
-	private int checkLockManager() {
-		boolean supportConcurrency = conf
-				.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY);
-		if (supportConcurrency && (hiveLockMgr == null)) {
-			try {
-				setLockManager();
-			} catch (SemanticException e) {
-				errorMessage = "FAILED: Error in semantic analysis: "
-						+ e.getMessage();
-				SQLState = ErrorMsg.findSQLState(e.getMessage());
-				console.printError(
-						errorMessage,
-						"\n"
-								+ org.apache.hadoop.util.StringUtils
-										.stringifyException(e));
-				return (12);
-			}
-		}
-		return (0);
-	}
-
-	private void setLockManager() throws SemanticException {
-		boolean supportConcurrency = conf
-				.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY);
-		if (supportConcurrency) {
-			String lockMgr = conf.getVar(HiveConf.ConfVars.HIVE_LOCK_MANAGER);
-			if ((lockMgr == null) || (lockMgr.isEmpty())) {
-				throw new SemanticException(
-						ErrorMsg.LOCKMGR_NOT_SPECIFIED.getMsg());
-			}
-
-			try {
-				hiveLockMgr = (HiveLockManager) ReflectionUtils.newInstance(
-						conf.getClassByName(lockMgr), conf);
-				hiveLockMgr.setContext(new HiveLockManagerCtx(conf));
-			} catch (Exception e) {
-				throw new SemanticException(
-						ErrorMsg.LOCKMGR_NOT_INITIALIZED.getMsg()
-								+ e.getMessage());
-			}
-		}
-	}
-
-	public void init() {
-		Operator.resetId();
-	}
-
-	/**
-	 * Return the status information about the Map-Reduce cluster
-	 */
-	public ClusterStatus getClusterStatus() throws Exception {
-		ClusterStatus cs;
-		try {
-			JobConf job = new JobConf(conf, ExecDriver.class);
-			JobClient jc = new JobClient(job);
-			cs = jc.getClusterStatus();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-		LOG.info("Returning cluster status: " + cs.toString());
-		return cs;
-	}
-
-	public Schema getSchema() {
-		return schema;
-	}
-
-	/**
-	 * Get a Schema with fields represented with native Hive types
-	 */
-	public static Schema getSchema(BaseSemanticAnalyzer sem, HiveConf conf) {
-		Schema schema = null;
-
-		// If we have a plan, prefer its logical result schema if it's
-		// available; otherwise, try digging out a fetch task; failing that,
-		// give up.
-		if (sem == null) {
-			// can't get any info without a plan
-		} else if (sem.getResultSchema() != null) {
-			List<FieldSchema> lst = sem.getResultSchema();
-			schema = new Schema(lst, null);
-		} else if (sem.getFetchTask() != null) {
-			FetchTask ft = sem.getFetchTask();
-			TableDesc td = ft.getTblDesc();
-			// partitioned tables don't have tableDesc set on the FetchTask.
-			// Instead
-			// they have a list of PartitionDesc objects, each with a table
-			// desc.
-			// Let's
-			// try to fetch the desc for the first partition and use it's
-			// deserializer.
-			if (td == null && ft.getWork() != null
-					&& ft.getWork().getPartDesc() != null) {
-				if (ft.getWork().getPartDesc().size() > 0) {
-					td = ft.getWork().getPartDesc().get(0).getTableDesc();
-				}
-			}
-
-			if (td == null) {
-				LOG.info("No returning schema.");
-			} else {
-				String tableName = "result";
-				List<FieldSchema> lst = null;
-				try {
-					lst = MetaStoreUtils.getFieldsFromDeserializer(tableName,
-							td.getDeserializer());
-				} catch (Exception e) {
-					LOG.warn("Error getting schema: "
-							+ org.apache.hadoop.util.StringUtils
-									.stringifyException(e));
-				}
-				if (lst != null) {
-					schema = new Schema(lst, null);
-				}
-			}
-		}
-		if (schema == null) {
-			schema = new Schema();
-		}
-		LOG.info("Returning Hive schema: " + schema);
-		return schema;
-	}
-
-	/**
-	 * Get a Schema with fields represented with Thrift DDL types
-	 */
-	public Schema getThriftSchema() throws Exception {
-		Schema schema;
-		try {
-			schema = getSchema();
-			if (schema != null) {
-				List<FieldSchema> lst = schema.getFieldSchemas();
-				// Go over the schema and convert type to thrift type
-				if (lst != null) {
-					for (FieldSchema f : lst) {
-						f.setType(MetaStoreUtils.typeToThriftType(f.getType()));
-					}
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-		LOG.info("Returning Thrift schema: " + schema);
-		return schema;
-	}
-
-	/**
-	 * Return the maximum number of rows returned by getResults
-	 */
-	public int getMaxRows() {
-		return maxRows;
-	}
-
-	/**
-	 * Set the maximum number of rows returned by getResults
-	 */
-	public void setMaxRows(int maxRows) {
-		this.maxRows = maxRows;
-	}
-
-	public boolean hasReduceTasks(List<Task<? extends Serializable>> tasks) {
-		if (tasks == null) {
-			return false;
-		}
-
-		boolean hasReduce = false;
-		for (Task<? extends Serializable> task : tasks) {
-			if (task.hasReduce()) {
-				return true;
-			}
-
-			hasReduce = (hasReduce || hasReduceTasks(task.getChildTasks()));
-		}
-		return hasReduce;
-	}
-
-	/**
-	 * for backwards compatibility with current tests
-	 */
-	public Driver(HiveConf conf) {
-		this.conf = conf;
-
-		// hivesterix
-		engine = new HyracksExecutionEngine(conf);
-	}
-
-	public Driver() {
-		if (SessionState.get() != null) {
-			conf = SessionState.get().getConf();
-		}
-
-		// hivesterix
-		engine = new HyracksExecutionEngine(conf);
-	}
-
-	// hivesterix: plan printer
-	public Driver(HiveConf conf, PrintWriter planPrinter) {
-		this.conf = conf;
-		engine = new HyracksExecutionEngine(conf, planPrinter);
-	}
-
-	public void clear() {
-		this.hivesterix = false;
-	}
-
-	/**
-	 * Compile a new query. Any currently-planned query associated with this
-	 * Driver is discarded.
-	 * 
-	 * @param command
-	 *            The SQL query to compile.
-	 */
-	public int compile(String command) {
-		if (plan != null) {
-			close();
-			plan = null;
-		}
-
-		TaskFactory.resetId();
-
-		try {
-			command = new VariableSubstitution().substitute(conf, command);
-			ctx = new Context(conf);
-
-			ParseDriver pd = new ParseDriver();
-			ASTNode tree = pd.parse(command, ctx);
-			tree = ParseUtils.findRootNonNullToken(tree);
-
-			BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree);
-			List<AbstractSemanticAnalyzerHook> saHooks = getSemanticAnalyzerHooks();
-
-			// Do semantic analysis and plan generation
-			if (saHooks != null) {
-				HiveSemanticAnalyzerHookContext hookCtx = new HiveSemanticAnalyzerHookContextImpl();
-				hookCtx.setConf(conf);
-				for (AbstractSemanticAnalyzerHook hook : saHooks) {
-					tree = hook.preAnalyze(hookCtx, tree);
-				}
-				sem.analyze(tree, ctx);
-				for (AbstractSemanticAnalyzerHook hook : saHooks) {
-					hook.postAnalyze(hookCtx, sem.getRootTasks());
-				}
-			} else {
-				sem.analyze(tree, ctx);
-			}
-
-			LOG.info("Semantic Analysis Completed");
-
-			// validate the plan
-			sem.validate();
-
-			plan = new QueryPlan(command, sem);
-			// initialize FetchTask right here
-			if (plan.getFetchTask() != null) {
-				plan.getFetchTask().initialize(conf, plan, null);
-			}
-
-			// get the output schema
-			schema = getSchema(sem, conf);
-
-			// test Only - serialize the query plan and deserialize it
-			if (sem instanceof SemanticAnalyzer
-					&& command.toLowerCase().indexOf("create") < 0) {
-
-				Thread.currentThread().setContextClassLoader(
-						this.getClass().getClassLoader());
-
-				String queryPlanFileName = ctx.getLocalScratchDir(true)
-						+ Path.SEPARATOR_CHAR + "queryplan.xml";
-				LOG.info("query plan = " + queryPlanFileName);
-				queryPlanFileName = new Path(queryPlanFileName).toUri()
-						.getPath();
-
-				// serialize the queryPlan
-				FileOutputStream fos = new FileOutputStream(queryPlanFileName);
-				Utilities.serializeQueryPlan(plan, fos);
-				fos.close();
-
-				// deserialize the queryPlan
-				FileInputStream fis = new FileInputStream(queryPlanFileName);
-				QueryPlan newPlan = Utilities.deserializeQueryPlan(fis, conf);
-				fis.close();
-
-				// Use the deserialized plan
-				plan = newPlan;
-			}
-
-			// initialize FetchTask right here
-			if (plan.getFetchTask() != null) {
-				plan.getFetchTask().initialize(conf, plan, null);
-			}
-
-			// do the authorization check
-			if (HiveConf.getBoolVar(conf,
-					HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED)) {
-				try {
-					// doAuthorization(sem);
-				} catch (AuthorizationException authExp) {
-					console.printError("Authorization failed:"
-							+ authExp.getMessage()
-							+ ". Use show grant to get more details.");
-					return 403;
-				}
-			}
-
-			// hyracks run
-			if (sem instanceof SemanticAnalyzer
-					&& command.toLowerCase().indexOf("create") < 0) {
-				hivesterix = true;
-				return engine.compileJob(sem.getRootTasks());
-			}
-
-			return 0;
-		} catch (SemanticException e) {
-			errorMessage = "FAILED: Error in semantic analysis: "
-					+ e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (10);
-		} catch (ParseException e) {
-			errorMessage = "FAILED: Parse Error: " + e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (11);
-		} catch (Exception e) {
-			errorMessage = "FAILED: Hive Internal Error: "
-					+ Utilities.getNameMessage(e);
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage + "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (12);
-		}
-	}
-
-	private void doAuthorization(BaseSemanticAnalyzer sem)
-			throws HiveException, AuthorizationException {
-		HashSet<ReadEntity> inputs = sem.getInputs();
-		HashSet<WriteEntity> outputs = sem.getOutputs();
-		SessionState ss = SessionState.get();
-		HiveOperation op = ss.getHiveOperation();
-		Hive db = sem.getDb();
-		if (op != null) {
-			if (op.equals(HiveOperation.CREATETABLE_AS_SELECT)
-					|| op.equals(HiveOperation.CREATETABLE)) {
-				ss.getAuthorizer().authorize(
-						db.getDatabase(db.getCurrentDatabase()),
-						null,
-						HiveOperation.CREATETABLE_AS_SELECT
-								.getOutputRequiredPrivileges());
-			} else {
-				// if (op.equals(HiveOperation.IMPORT)) {
-				// ImportSemanticAnalyzer isa = (ImportSemanticAnalyzer) sem;
-				// if (!isa.existsTable()) {
-				ss.getAuthorizer().authorize(
-						db.getDatabase(db.getCurrentDatabase()),
-						null,
-						HiveOperation.CREATETABLE_AS_SELECT
-								.getOutputRequiredPrivileges());
-				// }
-				// }
-			}
-			if (outputs != null && outputs.size() > 0) {
-				for (WriteEntity write : outputs) {
-
-					if (write.getType() == WriteEntity.Type.PARTITION) {
-						Partition part = db.getPartition(write.getTable(),
-								write.getPartition().getSpec(), false);
-						if (part != null) {
-							ss.getAuthorizer().authorize(write.getPartition(),
-									null, op.getOutputRequiredPrivileges());
-							continue;
-						}
-					}
-
-					if (write.getTable() != null) {
-						ss.getAuthorizer().authorize(write.getTable(), null,
-								op.getOutputRequiredPrivileges());
-					}
-				}
-
-			}
-		}
-
-		if (inputs != null && inputs.size() > 0) {
-
-			Map<Table, List<String>> tab2Cols = new HashMap<Table, List<String>>();
-			Map<Partition, List<String>> part2Cols = new HashMap<Partition, List<String>>();
-
-			Map<String, Boolean> tableUsePartLevelAuth = new HashMap<String, Boolean>();
-			for (ReadEntity read : inputs) {
-				if (read.getPartition() != null) {
-					Table tbl = read.getTable();
-					String tblName = tbl.getTableName();
-					if (tableUsePartLevelAuth.get(tblName) == null) {
-						boolean usePartLevelPriv = (tbl.getParameters().get(
-								"PARTITION_LEVEL_PRIVILEGE") != null && ("TRUE"
-								.equalsIgnoreCase(tbl.getParameters().get(
-										"PARTITION_LEVEL_PRIVILEGE"))));
-						if (usePartLevelPriv) {
-							tableUsePartLevelAuth.put(tblName, Boolean.TRUE);
-						} else {
-							tableUsePartLevelAuth.put(tblName, Boolean.FALSE);
-						}
-					}
-				}
-			}
-
-			if (op.equals(HiveOperation.CREATETABLE_AS_SELECT)
-					|| op.equals(HiveOperation.QUERY)) {
-				SemanticAnalyzer querySem = (SemanticAnalyzer) sem;
-				ParseContext parseCtx = querySem.getParseContext();
-				Map<TableScanOperator, Table> tsoTopMap = parseCtx
-						.getTopToTable();
-
-				for (Map.Entry<String, Operator<? extends Serializable>> topOpMap : querySem
-						.getParseContext().getTopOps().entrySet()) {
-					Operator<? extends Serializable> topOp = topOpMap
-							.getValue();
-					if (topOp instanceof TableScanOperator
-							&& tsoTopMap.containsKey(topOp)) {
-						TableScanOperator tableScanOp = (TableScanOperator) topOp;
-						Table tbl = tsoTopMap.get(tableScanOp);
-						List<Integer> neededColumnIds = tableScanOp
-								.getNeededColumnIDs();
-						List<FieldSchema> columns = tbl.getCols();
-						List<String> cols = new ArrayList<String>();
-						if (neededColumnIds != null
-								&& neededColumnIds.size() > 0) {
-							for (int i = 0; i < neededColumnIds.size(); i++) {
-								cols.add(columns.get(neededColumnIds.get(i))
-										.getName());
-							}
-						} else {
-							for (int i = 0; i < columns.size(); i++) {
-								cols.add(columns.get(i).getName());
-							}
-						}
-						if (tbl.isPartitioned()
-								&& tableUsePartLevelAuth
-										.get(tbl.getTableName())) {
-							String alias_id = topOpMap.getKey();
-							PrunedPartitionList partsList = PartitionPruner
-									.prune(parseCtx.getTopToTable().get(topOp),
-											parseCtx.getOpToPartPruner().get(
-													topOp), parseCtx.getConf(),
-											alias_id,
-											parseCtx.getPrunedPartitions());
-							Set<Partition> parts = new HashSet<Partition>();
-							parts.addAll(partsList.getConfirmedPartns());
-							parts.addAll(partsList.getUnknownPartns());
-							for (Partition part : parts) {
-								List<String> existingCols = part2Cols.get(part);
-								if (existingCols == null) {
-									existingCols = new ArrayList<String>();
-								}
-								existingCols.addAll(cols);
-								part2Cols.put(part, existingCols);
-							}
-						} else {
-							List<String> existingCols = tab2Cols.get(tbl);
-							if (existingCols == null) {
-								existingCols = new ArrayList<String>();
-							}
-							existingCols.addAll(cols);
-							tab2Cols.put(tbl, existingCols);
-						}
-					}
-				}
-			}
-
-			// cache the results for table authorization
-			Set<String> tableAuthChecked = new HashSet<String>();
-			for (ReadEntity read : inputs) {
-				Table tbl = null;
-				if (read.getPartition() != null) {
-					tbl = read.getPartition().getTable();
-					// use partition level authorization
-					if (tableUsePartLevelAuth.get(tbl.getTableName())) {
-						List<String> cols = part2Cols.get(read.getPartition());
-						if (cols != null && cols.size() > 0) {
-							ss.getAuthorizer().authorize(
-									read.getPartition().getTable(),
-									read.getPartition(), cols,
-									op.getInputRequiredPrivileges(), null);
-						} else {
-							ss.getAuthorizer().authorize(read.getPartition(),
-									op.getInputRequiredPrivileges(), null);
-						}
-						continue;
-					}
-				} else if (read.getTable() != null) {
-					tbl = read.getTable();
-				}
-
-				// if we reach here, it means it needs to do a table
-				// authorization
-				// check, and the table authorization may already happened
-				// because of other
-				// partitions
-				if (tbl != null
-						&& !tableAuthChecked.contains(tbl.getTableName())) {
-					List<String> cols = tab2Cols.get(tbl);
-					if (cols != null && cols.size() > 0) {
-						ss.getAuthorizer().authorize(tbl, null, cols,
-								op.getInputRequiredPrivileges(), null);
-					} else {
-						ss.getAuthorizer().authorize(tbl,
-								op.getInputRequiredPrivileges(), null);
-					}
-					tableAuthChecked.add(tbl.getTableName());
-				}
-			}
-
-		}
-	}
-
-	/**
-	 * @return The current query plan associated with this Driver, if any.
-	 */
-	public QueryPlan getPlan() {
-		return plan;
-	}
-
-	/**
-	 * @param t
-	 *            The table to be locked
-	 * @param p
-	 *            The partition to be locked
-	 * @param mode
-	 *            The mode of the lock (SHARED/EXCLUSIVE) Get the list of
-	 *            objects to be locked. If a partition needs to be locked (in
-	 *            any mode), all its parents should also be locked in SHARED
-	 *            mode.
-	 **/
-	private List<HiveLockObj> getLockObjects(Table t, Partition p,
-			HiveLockMode mode) throws SemanticException {
-		List<HiveLockObj> locks = new LinkedList<HiveLockObj>();
-
-		HiveLockObjectData lockData = new HiveLockObjectData(plan.getQueryId(),
-				String.valueOf(System.currentTimeMillis()), "IMPLICIT");
-
-		if (t != null) {
-			locks.add(new HiveLockObj(new HiveLockObject(t, lockData), mode));
-			mode = HiveLockMode.SHARED;
-			locks.add(new HiveLockObj(new HiveLockObject(t.getDbName(),
-					lockData), mode));
-			return locks;
-		}
-
-		if (p != null) {
-			if (!(p instanceof DummyPartition)) {
-				locks.add(new HiveLockObj(new HiveLockObject(p, lockData), mode));
-			}
-
-			// All the parents are locked in shared mode
-			mode = HiveLockMode.SHARED;
-
-			// For dummy partitions, only partition name is needed
-			String name = p.getName();
-
-			if (p instanceof DummyPartition) {
-				name = p.getName().split("@")[2];
-			}
-
-			String partName = name;
-			String partialName = "";
-			String[] partns = name.split("/");
-			int len = p instanceof DummyPartition ? partns.length
-					: partns.length - 1;
-			for (int idx = 0; idx < len; idx++) {
-				String partn = partns[idx];
-				partialName += partn;
-				try {
-					locks.add(new HiveLockObj(new HiveLockObject(
-							new DummyPartition(p.getTable(), p.getTable()
-									.getDbName()
-									+ "/"
-									+ p.getTable().getTableName()
-									+ "/"
-									+ partialName), lockData), mode));
-					partialName += "/";
-				} catch (HiveException e) {
-					throw new SemanticException(e.getMessage());
-				}
-			}
-
-			locks.add(new HiveLockObj(
-					new HiveLockObject(p.getTable(), lockData), mode));
-			locks.add(new HiveLockObj(new HiveLockObject(p.getTable()
-					.getDbName(), lockData), mode));
-		}
-		return locks;
-	}
-
-	/**
-	 * Acquire read and write locks needed by the statement. The list of objects
-	 * to be locked are obtained from he inputs and outputs populated by the
-	 * compiler. The lock acuisition scheme is pretty simple. If all the locks
-	 * cannot be obtained, error out. Deadlock is avoided by making sure that
-	 * the locks are lexicographically sorted.
-	 **/
-	public int acquireReadWriteLocks() {
-		try {
-			int sleepTime = conf
-					.getIntVar(HiveConf.ConfVars.HIVE_LOCK_SLEEP_BETWEEN_RETRIES) * 1000;
-			int numRetries = conf
-					.getIntVar(HiveConf.ConfVars.HIVE_LOCK_NUMRETRIES);
-
-			boolean supportConcurrency = conf
-					.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY);
-			if (!supportConcurrency) {
-				return 0;
-			}
-
-			List<HiveLockObj> lockObjects = new ArrayList<HiveLockObj>();
-
-			// Sort all the inputs, outputs.
-			// If a lock needs to be acquired on any partition, a read lock
-			// needs to be acquired on all
-			// its parents also
-			for (ReadEntity input : plan.getInputs()) {
-				if (input.getType() == ReadEntity.Type.TABLE) {
-					lockObjects.addAll(getLockObjects(input.getTable(), null,
-							HiveLockMode.SHARED));
-				} else {
-					lockObjects.addAll(getLockObjects(null,
-							input.getPartition(), HiveLockMode.SHARED));
-				}
-			}
-
-			for (WriteEntity output : plan.getOutputs()) {
-				if (output.getTyp() == WriteEntity.Type.TABLE) {
-					lockObjects.addAll(getLockObjects(output.getTable(), null,
-							output.isComplete() ? HiveLockMode.EXCLUSIVE
-									: HiveLockMode.SHARED));
-				} else if (output.getTyp() == WriteEntity.Type.PARTITION) {
-					lockObjects.addAll(getLockObjects(null,
-							output.getPartition(), HiveLockMode.EXCLUSIVE));
-				}
-				// In case of dynamic queries, it is possible to have incomplete
-				// dummy partitions
-				else if (output.getTyp() == WriteEntity.Type.DUMMYPARTITION) {
-					lockObjects.addAll(getLockObjects(null,
-							output.getPartition(), HiveLockMode.SHARED));
-				}
-			}
-
-			if (lockObjects.isEmpty() && !ctx.isNeedLockMgr()) {
-				return 0;
-			}
-
-			int ret = checkLockManager();
-			if (ret != 0) {
-				return ret;
-			}
-
-			HiveLockObjectData lockData = new HiveLockObjectData(
-					plan.getQueryId(), String.valueOf(System
-							.currentTimeMillis()), "IMPLICIT");
-
-			// Lock the database also
-			try {
-				Hive db = Hive.get(conf);
-				lockObjects.add(new HiveLockObj(new HiveLockObject(db
-						.getCurrentDatabase(), lockData), HiveLockMode.SHARED));
-			} catch (HiveException e) {
-				throw new SemanticException(e.getMessage());
-			}
-
-			ctx.setHiveLockMgr(hiveLockMgr);
-			List<HiveLock> hiveLocks = null;
-
-			int tryNum = 1;
-			do {
-
-				// ctx.getHiveLockMgr();
-				// hiveLocks = ctx.getHiveLockMgr().lock(lockObjects, false);
-
-				if (hiveLocks != null) {
-					break;
-				}
-
-				tryNum++;
-				try {
-					Thread.sleep(sleepTime);
-				} catch (InterruptedException e) {
-				}
-			} while (tryNum < numRetries);
-
-			if (hiveLocks == null) {
-				throw new SemanticException(
-						ErrorMsg.LOCK_CANNOT_BE_ACQUIRED.getMsg());
-			} else {
-				ctx.setHiveLocks(hiveLocks);
-			}
-
-			return (0);
-		} catch (SemanticException e) {
-			errorMessage = "FAILED: Error in acquiring locks: "
-					+ e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (10);
-		} catch (Exception e) {
-			errorMessage = "FAILED: Error in acquiring locks: "
-					+ e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (10);
-		}
-	}
-
-	/**
-	 * Release all the locks acquired implicitly by the statement. Note that the
-	 * locks acquired with 'keepAlive' set to True are not released.
-	 **/
-	private void releaseLocks() {
-		if (ctx != null && ctx.getHiveLockMgr() != null) {
-			try {
-				ctx.getHiveLockMgr().close();
-				ctx.setHiveLocks(null);
-			} catch (LockException e) {
-			}
-		}
-	}
-
-	/**
-	 * @param hiveLocks
-	 *            list of hive locks to be released Release all the locks
-	 *            specified. If some of the locks have already been released,
-	 *            ignore them
-	 **/
-	private void releaseLocks(List<HiveLock> hiveLocks) {
-		if (hiveLocks != null) {
-			ctx.getHiveLockMgr().releaseLocks(hiveLocks);
-		}
-		ctx.setHiveLocks(null);
-	}
-
-	public CommandProcessorResponse run(String command) {
-		errorMessage = null;
-		SQLState = null;
-
-		int ret = compile(command);
-		if (ret != 0) {
-			// releaseLocks(ctx.getHiveLocks());
-			return new CommandProcessorResponse(ret, errorMessage, SQLState);
-		}
-
-		// ret = acquireReadWriteLocks();
-		if (ret != 0) {
-			// releaseLocks(ctx.getHiveLocks());
-			return new CommandProcessorResponse(ret, errorMessage, SQLState);
-		}
-
-		ret = execute();
-		if (ret != 0) {
-			// releaseLocks(ctx.getHiveLocks());
-			return new CommandProcessorResponse(ret, errorMessage, SQLState);
-		}
-
-		// releaseLocks(ctx.getHiveLocks());
-		return new CommandProcessorResponse(ret);
-	}
-
-	private List<AbstractSemanticAnalyzerHook> getSemanticAnalyzerHooks()
-			throws Exception {
-		ArrayList<AbstractSemanticAnalyzerHook> saHooks = new ArrayList<AbstractSemanticAnalyzerHook>();
-		String pestr = conf.getVar(HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK);
-		if (pestr == null) {
-			return saHooks;
-		}
-		pestr = pestr.trim();
-		if (pestr.equals("")) {
-			return saHooks;
-		}
-
-		String[] peClasses = pestr.split(",");
-
-		for (String peClass : peClasses) {
-			try {
-				AbstractSemanticAnalyzerHook hook = HiveUtils
-						.getSemanticAnalyzerHook(conf, peClass);
-				saHooks.add(hook);
-			} catch (HiveException e) {
-				console.printError("Pre Exec Hook Class not found:"
-						+ e.getMessage());
-				throw e;
-			}
-		}
-
-		return saHooks;
-	}
-
-	private List<Hook> getPreExecHooks() throws Exception {
-		ArrayList<Hook> pehooks = new ArrayList<Hook>();
-		String pestr = conf.getVar(HiveConf.ConfVars.PREEXECHOOKS);
-		pestr = pestr.trim();
-		if (pestr.equals("")) {
-			return pehooks;
-		}
-
-		String[] peClasses = pestr.split(",");
-
-		for (String peClass : peClasses) {
-			try {
-				pehooks.add((Hook) Class.forName(peClass.trim(), true,
-						JavaUtils.getClassLoader()).newInstance());
-			} catch (ClassNotFoundException e) {
-				console.printError("Pre Exec Hook Class not found:"
-						+ e.getMessage());
-				throw e;
-			}
-		}
-
-		return pehooks;
-	}
-
-	private List<Hook> getPostExecHooks() throws Exception {
-		ArrayList<Hook> pehooks = new ArrayList<Hook>();
-		String pestr = conf.getVar(HiveConf.ConfVars.POSTEXECHOOKS);
-		pestr = pestr.trim();
-		if (pestr.equals("")) {
-			return pehooks;
-		}
-
-		String[] peClasses = pestr.split(",");
-
-		for (String peClass : peClasses) {
-			try {
-				pehooks.add((Hook) Class.forName(peClass.trim(), true,
-						JavaUtils.getClassLoader()).newInstance());
-			} catch (ClassNotFoundException e) {
-				console.printError("Post Exec Hook Class not found:"
-						+ e.getMessage());
-				throw e;
-			}
-		}
-
-		return pehooks;
-	}
-
-	public int execute() {
-		// execute hivesterix plan
-		if (hivesterix) {
-			hivesterix = false;
-			int ret = engine.executeJob();
-			if (ret != 0)
-				return ret;
-		}
-
-		boolean noName = StringUtils.isEmpty(conf
-				.getVar(HiveConf.ConfVars.HADOOPJOBNAME));
-		int maxlen = conf.getIntVar(HiveConf.ConfVars.HIVEJOBNAMELENGTH);
-
-		String queryId = plan.getQueryId();
-		String queryStr = plan.getQueryStr();
-
-		conf.setVar(HiveConf.ConfVars.HIVEQUERYID, queryId);
-		conf.setVar(HiveConf.ConfVars.HIVEQUERYSTRING, queryStr);
-		maxthreads = HiveConf.getIntVar(conf,
-				HiveConf.ConfVars.EXECPARALLETHREADNUMBER);
-
-		try {
-			LOG.info("Starting command: " + queryStr);
-
-			plan.setStarted();
-
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.startQuery(queryStr,
-								conf.getVar(HiveConf.ConfVars.HIVEQUERYID));
-				SessionState.get().getHiveHistory().logPlanProgress(plan);
-			}
-			resStream = null;
-
-			HookContext hookContext = new HookContext(plan, conf);
-
-			for (Hook peh : getPreExecHooks()) {
-				if (peh instanceof ExecuteWithHookContext) {
-					((ExecuteWithHookContext) peh).run(hookContext);
-				} else if (peh instanceof PreExecute) {
-					((PreExecute) peh).run(SessionState.get(),
-							plan.getInputs(), plan.getOutputs(), ShimLoader
-									.getHadoopShims().getUGIForConf(conf));
-				}
-			}
-
-			int jobs = Utilities.getMRTasks(plan.getRootTasks()).size();
-			if (jobs > 0) {
-				console.printInfo("Total MapReduce jobs = " + jobs);
-			}
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.setQueryProperty(queryId, Keys.QUERY_NUM_TASKS,
-								String.valueOf(jobs));
-				SessionState.get().getHiveHistory()
-						.setIdToTableMap(plan.getIdToTableNameMap());
-			}
-			String jobname = Utilities.abbreviate(queryStr, maxlen - 6);
-
-			// A runtime that launches runnable tasks as separate Threads
-			// through
-			// TaskRunners
-			// As soon as a task isRunnable, it is put in a queue
-			// At any time, at most maxthreads tasks can be running
-			// The main thread polls the TaskRunners to check if they have
-			// finished.
-
-			Queue<Task<? extends Serializable>> runnable = new LinkedList<Task<? extends Serializable>>();
-			Map<TaskResult, TaskRunner> running = new HashMap<TaskResult, TaskRunner>();
-
-			DriverContext driverCxt = new DriverContext(runnable, ctx);
-
-			// Add root Tasks to runnable
-
-			for (Task<? extends Serializable> tsk : plan.getRootTasks()) {
-				driverCxt.addToRunnable(tsk);
-			}
-
-			// Loop while you either have tasks running, or tasks queued up
-
-			while (running.size() != 0 || runnable.peek() != null) {
-				// Launch upto maxthreads tasks
-				while (runnable.peek() != null && running.size() < maxthreads) {
-					Task<? extends Serializable> tsk = runnable.remove();
-					console.printInfo("executing task " + tsk.getName());
-					launchTask(tsk, queryId, noName, running, jobname, jobs,
-							driverCxt);
-				}
-
-				// poll the Tasks to see which one completed
-				TaskResult tskRes = pollTasks(running.keySet());
-				TaskRunner tskRun = running.remove(tskRes);
-				Task<? extends Serializable> tsk = tskRun.getTask();
-				hookContext.addCompleteTask(tskRun);
-
-				int exitVal = tskRes.getExitVal();
-				if (exitVal != 0) {
-					Task<? extends Serializable> backupTask = tsk
-							.getAndInitBackupTask();
-					if (backupTask != null) {
-						errorMessage = "FAILED: Execution Error, return code "
-								+ exitVal + " from " + tsk.getClass().getName();
-						console.printError(errorMessage);
-
-						errorMessage = "ATTEMPT: Execute BackupTask: "
-								+ backupTask.getClass().getName();
-						console.printError(errorMessage);
-
-						// add backup task to runnable
-						if (DriverContext.isLaunchable(backupTask)) {
-							driverCxt.addToRunnable(backupTask);
-						}
-						continue;
-
-					} else {
-						// TODO: This error messaging is not very informative.
-						// Fix that.
-						errorMessage = "FAILED: Execution Error, return code "
-								+ exitVal + " from " + tsk.getClass().getName();
-						SQLState = "08S01";
-						console.printError(errorMessage);
-						if (running.size() != 0) {
-							taskCleanup();
-						}
-						// in case we decided to run everything in local mode,
-						// restore the
-						// the jobtracker setting to its initial value
-						ctx.restoreOriginalTracker();
-						return 9;
-					}
-				}
-
-				if (SessionState.get() != null) {
-					SessionState
-							.get()
-							.getHiveHistory()
-							.setTaskProperty(queryId, tsk.getId(),
-									Keys.TASK_RET_CODE, String.valueOf(exitVal));
-					SessionState.get().getHiveHistory().endTask(queryId, tsk);
-				}
-
-				if (tsk.getChildTasks() != null) {
-					for (Task<? extends Serializable> child : tsk
-							.getChildTasks()) {
-						// hivesterix: don't check launchable condition
-						// if (DriverContext.isLaunchable(child)) {
-						driverCxt.addToRunnable(child);
-						// }
-					}
-				}
-			}
-
-			// in case we decided to run everything in local mode, restore the
-			// the jobtracker setting to its initial value
-			ctx.restoreOriginalTracker();
-
-			// remove incomplete outputs.
-			// Some incomplete outputs may be added at the beginning, for eg:
-			// for dynamic partitions.
-			// remove them
-			HashSet<WriteEntity> remOutputs = new HashSet<WriteEntity>();
-			for (WriteEntity output : plan.getOutputs()) {
-				if (!output.isComplete()) {
-					remOutputs.add(output);
-				}
-			}
-
-			for (WriteEntity output : remOutputs) {
-				plan.getOutputs().remove(output);
-			}
-
-			// Get all the post execution hooks and execute them.
-			for (Hook peh : getPostExecHooks()) {
-				if (peh instanceof ExecuteWithHookContext) {
-					((ExecuteWithHookContext) peh).run(hookContext);
-				} else if (peh instanceof PostExecute) {
-					((PostExecute) peh)
-							.run(SessionState.get(),
-									plan.getInputs(),
-									plan.getOutputs(),
-									(SessionState.get() != null ? SessionState
-											.get().getLineageState()
-											.getLineageInfo() : null),
-									ShimLoader.getHadoopShims().getUGIForConf(
-											conf));
-				}
-			}
-
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.setQueryProperty(queryId, Keys.QUERY_RET_CODE,
-								String.valueOf(0));
-				SessionState.get().getHiveHistory().printRowCount(queryId);
-			}
-		} catch (Exception e) {
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.setQueryProperty(queryId, Keys.QUERY_RET_CODE,
-								String.valueOf(12));
-			}
-			// TODO: do better with handling types of Exception here
-			errorMessage = "FAILED: Hive Internal Error: "
-					+ Utilities.getNameMessage(e);
-			SQLState = "08S01";
-			console.printError(errorMessage + "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (12);
-		} finally {
-			if (SessionState.get() != null) {
-				SessionState.get().getHiveHistory().endQuery(queryId);
-			}
-			if (noName) {
-				conf.setVar(HiveConf.ConfVars.HADOOPJOBNAME, "");
-			}
-		}
-		plan.setDone();
-
-		if (SessionState.get() != null) {
-			try {
-				SessionState.get().getHiveHistory().logPlanProgress(plan);
-			} catch (Exception e) {
-			}
-		}
-		console.printInfo("OK");
-
-		return (0);
-	}
-
-	/**
-	 * Launches a new task
-	 * 
-	 * @param tsk
-	 *            task being launched
-	 * @param queryId
-	 *            Id of the query containing the task
-	 * @param noName
-	 *            whether the task has a name set
-	 * @param running
-	 *            map from taskresults to taskrunners
-	 * @param jobname
-	 *            name of the task, if it is a map-reduce job
-	 * @param jobs
-	 *            number of map-reduce jobs
-	 * @param curJobNo
-	 *            the sequential number of the next map-reduce job
-	 * @return the updated number of last the map-reduce job launched
-	 */
-
-	public void launchTask(Task<? extends Serializable> tsk, String queryId,
-			boolean noName, Map<TaskResult, TaskRunner> running,
-			String jobname, int jobs, DriverContext cxt) {
-
-		if (SessionState.get() != null) {
-			SessionState.get().getHiveHistory()
-					.startTask(queryId, tsk, tsk.getClass().getName());
-		}
-		if (tsk.isMapRedTask() && !(tsk instanceof ConditionalTask)) {
-			if (noName) {
-				conf.setVar(HiveConf.ConfVars.HADOOPJOBNAME, jobname + "("
-						+ tsk.getId() + ")");
-			}
-			cxt.incCurJobNo(1);
-			console.printInfo("Launching Job " + cxt.getCurJobNo() + " out of "
-					+ jobs);
-		}
-		tsk.initialize(conf, plan, cxt);
-		TaskResult tskRes = new TaskResult();
-		TaskRunner tskRun = new TaskRunner(tsk, tskRes);
-
-		// HiveConf.getBoolVar(conf, HiveConf.ConfVars.EXECPARALLEL) &&
-		// Launch Task: hivesterix tweak
-		if (tsk instanceof MapRedTask || tsk instanceof StatsTask) {
-			// Launch it in the parallel mode, as a separate thread only for MR
-			// tasks
-			tskRes.setRunning(false);
-			tskRes.setExitVal(0);
-		} else if (tsk instanceof ConditionalTask) {
-			ConditionalTask condTask = (ConditionalTask) tsk;
-			ConditionalResolver crs = condTask.getResolver();
-			if (crs instanceof ConditionalResolverMergeFiles) {
-				tskRes.setRunning(false);
-				tskRes.setExitVal(0);
-
-				List<Task<? extends Serializable>> children = condTask
-						.getListTasks();
-				for (Task<? extends Serializable> child : children)
-					if (child instanceof MapRedTask)
-						cxt.addToRunnable(child);
-			}
-		} else {
-			tskRun.runSequential();
-		}
-		running.put(tskRes, tskRun);
-		return;
-	}
-
-	/**
-	 * Cleans up remaining tasks in case of failure
-	 */
-
-	public void taskCleanup() {
-		// The currently existing Shutdown hooks will be automatically called,
-		// killing the map-reduce processes.
-		// The non MR processes will be killed as well.
-		System.exit(9);
-	}
-
-	/**
-	 * Polls running tasks to see if a task has ended.
-	 * 
-	 * @param results
-	 *            Set of result objects for running tasks
-	 * @return The result object for any completed/failed task
-	 */
-
-	public TaskResult pollTasks(Set<TaskResult> results) {
-		Iterator<TaskResult> resultIterator = results.iterator();
-		while (true) {
-			while (resultIterator.hasNext()) {
-				TaskResult tskRes = resultIterator.next();
-				if (tskRes.isRunning() == false) {
-					return tskRes;
-				}
-			}
-
-			// In this loop, nothing was found
-			// Sleep 10 seconds and restart
-			try {
-				Thread.sleep(sleeptime);
-			} catch (InterruptedException ie) {
-				// Do Nothing
-				;
-			}
-			resultIterator = results.iterator();
-		}
-	}
-
-	public boolean getResults(ArrayList<String> res) throws IOException {
-		if (plan != null && plan.getFetchTask() != null) {
-			FetchTask ft = plan.getFetchTask();
-			ft.setMaxRows(maxRows);
-			return ft.fetch(res);
-		}
-
-		if (resStream == null) {
-			resStream = ctx.getStream();
-		}
-		if (resStream == null) {
-			return false;
-		}
-
-		int numRows = 0;
-		String row = null;
-
-		while (numRows < maxRows) {
-			if (resStream == null) {
-				if (numRows > 0) {
-					return true;
-				} else {
-					return false;
-				}
-			}
-
-			bos.reset();
-			Utilities.StreamStatus ss;
-			try {
-				ss = Utilities.readColumn(resStream, bos);
-				if (bos.getCount() > 0) {
-					row = new String(bos.getData(), 0, bos.getCount(), "UTF-8");
-				} else if (ss == Utilities.StreamStatus.TERMINATED) {
-					row = new String();
-				}
-
-				if (row != null) {
-					numRows++;
-					res.add(row);
-				}
-			} catch (IOException e) {
-				console.printError("FAILED: Unexpected IO exception : "
-						+ e.getMessage());
-				res = null;
-				return false;
-			}
-
-			if (ss == Utilities.StreamStatus.EOF) {
-				resStream = ctx.getStream();
-			}
-		}
-		return true;
-	}
-
-	public int close() {
-		try {
-			if (plan != null) {
-				FetchTask fetchTask = plan.getFetchTask();
-				if (null != fetchTask) {
-					try {
-						fetchTask.clearFetch();
-					} catch (Exception e) {
-						LOG.debug(" Exception while clearing the Fetch task ",
-								e);
-					}
-				}
-			}
-			if (ctx != null) {
-				ctx.clear();
-			}
-			if (null != resStream) {
-				try {
-					((FSDataInputStream) resStream).close();
-				} catch (Exception e) {
-					LOG.debug(" Exception while closing the resStream ", e);
-				}
-			}
-		} catch (Exception e) {
-			console.printError("FAILED: Hive Internal Error: "
-					+ Utilities.getNameMessage(e) + "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return 13;
-		}
-
-		return 0;
-	}
-
-	public void destroy() {
-		releaseLocks();
-	}
-
-	public org.apache.hadoop.hive.ql.plan.api.Query getQueryPlan()
-			throws IOException {
-		return plan.getQueryPlan();
-	}
-
-	public int getTryCount() {
-		return tryCount;
-	}
-
-	public void setTryCount(int tryCount) {
-		this.tryCount = tryCount;
-	}
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
deleted file mode 100644
index b174432..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.util.StringUtils;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * GenericUDAFAverage.
- * 
- */
-@Description(name = "avg", value = "_FUNC_(x) - Returns the mean of a set of numbers")
-public class GenericUDAFAverage extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory
-			.getLog(GenericUDAFAverage.class.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 1) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly one argument is expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-		case STRING:
-			return new GenericUDAFAverageEvaluator();
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * GenericUDAFAverageEvaluator.
-	 * 
-	 */
-	public static class GenericUDAFAverageEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		PrimitiveObjectInspector inputOI;
-
-		// For PARTIAL2 and FINAL
-		StructObjectInspector soi;
-		StructField countField;
-		StructField sumField;
-		LongObjectInspector countFieldOI;
-		DoubleObjectInspector sumFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				inputOI = (PrimitiveObjectInspector) parameters[0];
-			} else {
-				soi = (StructObjectInspector) parameters[0];
-				countField = soi.getStructFieldRef("count");
-				sumField = soi.getStructFieldRef("sum");
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				sumFieldOI = (DoubleObjectInspector) sumField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a "long" count and a "double" sum.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("sum");
-				partialResult = new Object[2];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				result = new DoubleWritable(0);
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class AverageAgg implements SerializableBuffer {
-			long count;
-			double sum;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				sum = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(sum, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(sum);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			AverageAgg result = new AverageAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			AverageAgg myagg = (AverageAgg) agg;
-			myagg.count = 0;
-			myagg.sum = 0;
-		}
-
-		boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			Object p = parameters[0];
-			if (p != null) {
-				AverageAgg myagg = (AverageAgg) agg;
-				try {
-					double v = PrimitiveObjectInspectorUtils.getDouble(p,
-							inputOI);
-					myagg.count++;
-					myagg.sum += v;
-				} catch (NumberFormatException e) {
-					if (!warned) {
-						warned = true;
-						LOG.warn(getClass().getSimpleName() + " "
-								+ StringUtils.stringifyException(e));
-						LOG.warn(getClass().getSimpleName()
-								+ " ignoring similar exceptions.");
-					}
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			AverageAgg myagg = (AverageAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.sum);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				AverageAgg myagg = (AverageAgg) agg;
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialSum = soi.getStructFieldData(partial, sumField);
-				myagg.count += countFieldOI.get(partialCount);
-				myagg.sum += sumFieldOI.get(partialSum);
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			AverageAgg myagg = (AverageAgg) agg;
-			if (myagg.count == 0) {
-				return null;
-			} else {
-				result.set(myagg.sum / myagg.count);
-				return result;
-			}
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCorrelation.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCorrelation.java
deleted file mode 100644
index 716faac..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCorrelation.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * Compute the Pearson correlation coefficient corr(x, y), using the following
- * stable one-pass method, based on: "Formulas for Robust, One-Pass Parallel
- * Computation of Covariances and Arbitrary-Order Statistical Moments", Philippe
- * Pebay, Sandia Labs and
- * "The Art of Computer Programming, volume 2: Seminumerical Algorithms", Donald
- * Knuth.
- * 
- * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg> my_n =
- * my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n - mx_(n-1))*(y_n
- * - my_n) : <covariance * n> vx_n = vx_(n-1) + (x_n - mx_n)(x_n - mx_(n-1)):
- * <variance * n> vy_n = vy_(n-1) + (y_n - my_n)(y_n - my_(n-1)): <variance * n>
- * 
- * Merge: c_(A,B) = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/(n_A+n_B)
- * vx_(A,B) = vx_A + vx_B + (mx_A - mx_B)*(mx_A - mx_B)*n_A*n_B/(n_A+n_B)
- * vy_(A,B) = vy_A + vy_B + (my_A - my_B)*(my_A - my_B)*n_A*n_B/(n_A+n_B)
- * 
- */
-@Description(name = "corr", value = "_FUNC_(x,y) - Returns the Pearson coefficient of correlation\n"
-		+ "between a set of number pairs", extended = "The function takes as arguments any pair of numeric types and returns a double.\n"
-		+ "Any pair with a NULL is ignored. If the function is applied to an empty set or\n"
-		+ "a singleton set, NULL will be returned. Otherwise, it computes the following:\n"
-		+ "   COVAR_POP(x,y)/(STDDEV_POP(x)*STDDEV_POP(y))\n"
-		+ "where neither x nor y is null,\n"
-		+ "COVAR_POP is the population covariance,\n"
-		+ "and STDDEV_POP is the population standard deviation.")
-public class GenericUDAFCorrelation extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFCorrelation.class
-			.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 2) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly two arguments are expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-
-		if (parameters[1].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(1,
-					"Only primitive type arguments are accepted but "
-							+ parameters[1].getTypeName() + " is passed.");
-		}
-
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-			switch (((PrimitiveTypeInfo) parameters[1]).getPrimitiveCategory()) {
-			case BYTE:
-			case SHORT:
-			case INT:
-			case LONG:
-			case FLOAT:
-			case DOUBLE:
-				return new GenericUDAFCorrelationEvaluator();
-			case STRING:
-			case BOOLEAN:
-			default:
-				throw new UDFArgumentTypeException(1,
-						"Only numeric type arguments are accepted but "
-								+ parameters[1].getTypeName() + " is passed.");
-			}
-		case STRING:
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * Evaluate the Pearson correlation coefficient using a stable one-pass
-	 * algorithm, based on work by Philippe Pébay and Donald Knuth.
-	 * 
-	 * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg>
-	 * my_n = my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n -
-	 * mx_(n-1))*(y_n - my_n) : <covariance * n> vx_n = vx_(n-1) + (x_n -
-	 * mx_n)(x_n - mx_(n-1)): <variance * n> vy_n = vy_(n-1) + (y_n - my_n)(y_n
-	 * - my_(n-1)): <variance * n>
-	 * 
-	 * Merge: c_X = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/n_X vx_(A,B)
-	 * = vx_A + vx_B + (mx_A - mx_B)*(mx_A - mx_B)*n_A*n_B/(n_A+n_B) vy_(A,B) =
-	 * vy_A + vy_B + (my_A - my_B)*(my_A - my_B)*n_A*n_B/(n_A+n_B)
-	 * 
-	 */
-	public static class GenericUDAFCorrelationEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		private PrimitiveObjectInspector xInputOI;
-		private PrimitiveObjectInspector yInputOI;
-
-		// For PARTIAL2 and FINAL
-		private StructObjectInspector soi;
-		private StructField countField;
-		private StructField xavgField;
-		private StructField yavgField;
-		private StructField xvarField;
-		private StructField yvarField;
-		private StructField covarField;
-		private LongObjectInspector countFieldOI;
-		private DoubleObjectInspector xavgFieldOI;
-		private DoubleObjectInspector yavgFieldOI;
-		private DoubleObjectInspector xvarFieldOI;
-		private DoubleObjectInspector yvarFieldOI;
-		private DoubleObjectInspector covarFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		private Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				assert (parameters.length == 2);
-				xInputOI = (PrimitiveObjectInspector) parameters[0];
-				yInputOI = (PrimitiveObjectInspector) parameters[1];
-			} else {
-				assert (parameters.length == 1);
-				soi = (StructObjectInspector) parameters[0];
-
-				countField = soi.getStructFieldRef("count");
-				xavgField = soi.getStructFieldRef("xavg");
-				yavgField = soi.getStructFieldRef("yavg");
-				xvarField = soi.getStructFieldRef("xvar");
-				yvarField = soi.getStructFieldRef("yvar");
-				covarField = soi.getStructFieldRef("covar");
-
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				xavgFieldOI = (DoubleObjectInspector) xavgField
-						.getFieldObjectInspector();
-				yavgFieldOI = (DoubleObjectInspector) yavgField
-						.getFieldObjectInspector();
-				xvarFieldOI = (DoubleObjectInspector) xvarField
-						.getFieldObjectInspector();
-				yvarFieldOI = (DoubleObjectInspector) yvarField
-						.getFieldObjectInspector();
-				covarFieldOI = (DoubleObjectInspector) covarField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a long count, two double averages, two double variances,
-				// and a double covariance.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("xavg");
-				fname.add("yavg");
-				fname.add("xvar");
-				fname.add("yvar");
-				fname.add("covar");
-
-				partialResult = new Object[6];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				partialResult[2] = new DoubleWritable(0);
-				partialResult[3] = new DoubleWritable(0);
-				partialResult[4] = new DoubleWritable(0);
-				partialResult[5] = new DoubleWritable(0);
-
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				setResult(new DoubleWritable(0));
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class StdAgg implements SerializableBuffer {
-			long count; // number n of elements
-			double xavg; // average of x elements
-			double yavg; // average of y elements
-			double xvar; // n times the variance of x elements
-			double yvar; // n times the variance of y elements
-			double covar; // n times the covariance
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				xavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				yavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				xvar = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				yvar = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				covar = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(xavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(yavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(xvar, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(yvar, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(covar, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(xavg);
-				output.writeDouble(yavg);
-				output.writeDouble(xvar);
-				output.writeDouble(yvar);
-				output.writeDouble(covar);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			StdAgg result = new StdAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			myagg.count = 0;
-			myagg.xavg = 0;
-			myagg.yavg = 0;
-			myagg.xvar = 0;
-			myagg.yvar = 0;
-			myagg.covar = 0;
-		}
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 2);
-			Object px = parameters[0];
-			Object py = parameters[1];
-			if (px != null && py != null) {
-				StdAgg myagg = (StdAgg) agg;
-				double vx = PrimitiveObjectInspectorUtils.getDouble(px,
-						xInputOI);
-				double vy = PrimitiveObjectInspectorUtils.getDouble(py,
-						yInputOI);
-				double xavgOld = myagg.xavg;
-				double yavgOld = myagg.yavg;
-				myagg.count++;
-				myagg.xavg += (vx - xavgOld) / myagg.count;
-				myagg.yavg += (vy - yavgOld) / myagg.count;
-				if (myagg.count > 1) {
-					myagg.covar += (vx - xavgOld) * (vy - myagg.yavg);
-					myagg.xvar += (vx - xavgOld) * (vx - myagg.xavg);
-					myagg.yvar += (vy - yavgOld) * (vy - myagg.yavg);
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.xavg);
-			((DoubleWritable) partialResult[2]).set(myagg.yavg);
-			((DoubleWritable) partialResult[3]).set(myagg.xvar);
-			((DoubleWritable) partialResult[4]).set(myagg.yvar);
-			((DoubleWritable) partialResult[5]).set(myagg.covar);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				StdAgg myagg = (StdAgg) agg;
-
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialXAvg = soi.getStructFieldData(partial, xavgField);
-				Object partialYAvg = soi.getStructFieldData(partial, yavgField);
-				Object partialXVar = soi.getStructFieldData(partial, xvarField);
-				Object partialYVar = soi.getStructFieldData(partial, yvarField);
-				Object partialCovar = soi.getStructFieldData(partial,
-						covarField);
-
-				long nA = myagg.count;
-				long nB = countFieldOI.get(partialCount);
-
-				if (nA == 0) {
-					// Just copy the information since there is nothing so far
-					myagg.count = countFieldOI.get(partialCount);
-					myagg.xavg = xavgFieldOI.get(partialXAvg);
-					myagg.yavg = yavgFieldOI.get(partialYAvg);
-					myagg.xvar = xvarFieldOI.get(partialXVar);
-					myagg.yvar = yvarFieldOI.get(partialYVar);
-					myagg.covar = covarFieldOI.get(partialCovar);
-				}
-
-				if (nA != 0 && nB != 0) {
-					// Merge the two partials
-					double xavgA = myagg.xavg;
-					double yavgA = myagg.yavg;
-					double xavgB = xavgFieldOI.get(partialXAvg);
-					double yavgB = yavgFieldOI.get(partialYAvg);
-					double xvarB = xvarFieldOI.get(partialXVar);
-					double yvarB = yvarFieldOI.get(partialYVar);
-					double covarB = covarFieldOI.get(partialCovar);
-
-					myagg.count += nB;
-					myagg.xavg = (xavgA * nA + xavgB * nB) / myagg.count;
-					myagg.yavg = (yavgA * nA + yavgB * nB) / myagg.count;
-					myagg.xvar += xvarB + (xavgA - xavgB) * (xavgA - xavgB)
-							* myagg.count;
-					myagg.yvar += yvarB + (yavgA - yavgB) * (yavgA - yavgB)
-							* myagg.count;
-					myagg.covar += covarB + (xavgA - xavgB) * (yavgA - yavgB)
-							* ((double) (nA * nB) / myagg.count);
-				}
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-
-			if (myagg.count < 2) { // SQL standard - return null for zero or one
-									// pair
-				return null;
-			} else {
-				getResult().set(
-						myagg.covar / java.lang.Math.sqrt(myagg.xvar)
-								/ java.lang.Math.sqrt(myagg.yvar));
-				return getResult();
-			}
-		}
-
-		public void setResult(DoubleWritable result) {
-			this.result = result;
-		}
-
-		public DoubleWritable getResult() {
-			return result;
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java
deleted file mode 100644
index 4160d5b..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * This class implements the COUNT aggregation function as in SQL.
- */
-@Description(name = "count", value = "_FUNC_(*) - Returns the total number of retrieved rows, including "
-		+ "rows containing NULL values.\n"
-
-		+ "_FUNC_(expr) - Returns the number of rows for which the supplied "
-		+ "expression is non-NULL.\n"
-
-		+ "_FUNC_(DISTINCT expr[, expr...]) - Returns the number of rows for "
-		+ "which the supplied expression(s) are unique and non-NULL.")
-public class GenericUDAFCount implements GenericUDAFResolver2 {
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		// This method implementation is preserved for backward compatibility.
-		return new GenericUDAFCountEvaluator();
-	}
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(GenericUDAFParameterInfo paramInfo)
-			throws SemanticException {
-
-		TypeInfo[] parameters = paramInfo.getParameters();
-
-		if (parameters.length == 0) {
-			if (!paramInfo.isAllColumns()) {
-				throw new UDFArgumentException("Argument expected");
-			}
-			assert !paramInfo.isDistinct() : "DISTINCT not supported with *";
-		} else {
-			if (parameters.length > 1 && !paramInfo.isDistinct()) {
-				throw new UDFArgumentException(
-						"DISTINCT keyword must be specified");
-			}
-			assert !paramInfo.isAllColumns() : "* not supported in expression list";
-		}
-
-		return new GenericUDAFCountEvaluator().setCountAllColumns(paramInfo
-				.isAllColumns());
-	}
-
-	/**
-	 * GenericUDAFCountEvaluator.
-	 * 
-	 */
-	public static class GenericUDAFCountEvaluator extends GenericUDAFEvaluator {
-		private boolean countAllColumns = false;
-		private LongObjectInspector partialCountAggOI;
-		private LongWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			super.init(m, parameters);
-			partialCountAggOI = PrimitiveObjectInspectorFactory.writableLongObjectInspector;
-			result = new LongWritable(0);
-			return PrimitiveObjectInspectorFactory.writableLongObjectInspector;
-		}
-
-		private GenericUDAFCountEvaluator setCountAllColumns(
-				boolean countAllCols) {
-			countAllColumns = countAllCols;
-			return this;
-		}
-
-		/** class for storing count value. */
-		static class CountAgg implements SerializableBuffer {
-			long value;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				value = BufferSerDeUtil.getLong(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(value, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(value);
-			}
-		}
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			CountAgg buffer = new CountAgg();
-			reset(buffer);
-			return buffer;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			((CountAgg) agg).value = 0;
-		}
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			// parameters == null means the input table/split is empty
-			if (parameters == null) {
-				return;
-			}
-			if (countAllColumns) {
-				assert parameters.length == 0;
-				((CountAgg) agg).value++;
-			} else {
-				assert parameters.length > 0;
-				boolean countThisRow = true;
-				for (Object nextParam : parameters) {
-					if (nextParam == null) {
-						countThisRow = false;
-						break;
-					}
-				}
-				if (countThisRow) {
-					((CountAgg) agg).value++;
-				}
-			}
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				long p = partialCountAggOI.get(partial);
-				((CountAgg) agg).value += p;
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			result.set(((CountAgg) agg).value);
-			return result;
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			return terminate(agg);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCovariance.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCovariance.java
deleted file mode 100644
index 11d9dc3..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCovariance.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * Compute the covariance covar_pop(x, y), using the following one-pass method
- * (ref. "Formulas for Robust, One-Pass Parallel Computation of Covariances and
- * Arbitrary-Order Statistical Moments", Philippe Pebay, Sandia Labs):
- * 
- * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg> my_n =
- * my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n - mx_(n-1))*(y_n
- * - my_n) : <covariance * n>
- * 
- * Merge: c_X = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/n_X
- * 
- */
-@Description(name = "covariance,covar_pop", value = "_FUNC_(x,y) - Returns the population covariance of a set of number pairs", extended = "The function takes as arguments any pair of numeric types and returns a double.\n"
-		+ "Any pair with a NULL is ignored. If the function is applied to an empty set, NULL\n"
-		+ "will be returned. Otherwise, it computes the following:\n"
-		+ "   (SUM(x*y)-SUM(x)*SUM(y)/COUNT(x,y))/COUNT(x,y)\n"
-		+ "where neither x nor y is null.")
-public class GenericUDAFCovariance extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFCovariance.class
-			.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 2) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly two arguments are expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-
-		if (parameters[1].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(1,
-					"Only primitive type arguments are accepted but "
-							+ parameters[1].getTypeName() + " is passed.");
-		}
-
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-			switch (((PrimitiveTypeInfo) parameters[1]).getPrimitiveCategory()) {
-			case BYTE:
-			case SHORT:
-			case INT:
-			case LONG:
-			case FLOAT:
-			case DOUBLE:
-				return new GenericUDAFCovarianceEvaluator();
-			case STRING:
-			case BOOLEAN:
-			default:
-				throw new UDFArgumentTypeException(1,
-						"Only numeric or string type arguments are accepted but "
-								+ parameters[1].getTypeName() + " is passed.");
-			}
-		case STRING:
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * Evaluate the variance using the algorithm described in
-	 * http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance,
-	 * presumably by Pébay, Philippe (2008), in "Formulas for Robust, One-Pass
-	 * Parallel Computation of Covariances and Arbitrary-Order Statistical
-	 * Moments", Technical Report SAND2008-6212, Sandia National Laboratories,
-	 * http://infoserve.sandia.gov/sand_doc/2008/086212.pdf
-	 * 
-	 * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg>
-	 * my_n = my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n -
-	 * mx_(n-1))*(y_n - my_n) : <covariance * n>
-	 * 
-	 * Merge: c_X = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/n_X
-	 * 
-	 * This one-pass algorithm is stable.
-	 * 
-	 */
-	public static class GenericUDAFCovarianceEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		private PrimitiveObjectInspector xInputOI;
-		private PrimitiveObjectInspector yInputOI;
-
-		// For PARTIAL2 and FINAL
-		private StructObjectInspector soi;
-		private StructField countField;
-		private StructField xavgField;
-		private StructField yavgField;
-		private StructField covarField;
-		private LongObjectInspector countFieldOI;
-		private DoubleObjectInspector xavgFieldOI;
-		private DoubleObjectInspector yavgFieldOI;
-		private DoubleObjectInspector covarFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		private Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				assert (parameters.length == 2);
-				xInputOI = (PrimitiveObjectInspector) parameters[0];
-				yInputOI = (PrimitiveObjectInspector) parameters[1];
-			} else {
-				assert (parameters.length == 1);
-				soi = (StructObjectInspector) parameters[0];
-
-				countField = soi.getStructFieldRef("count");
-				xavgField = soi.getStructFieldRef("xavg");
-				yavgField = soi.getStructFieldRef("yavg");
-				covarField = soi.getStructFieldRef("covar");
-
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				xavgFieldOI = (DoubleObjectInspector) xavgField
-						.getFieldObjectInspector();
-				yavgFieldOI = (DoubleObjectInspector) yavgField
-						.getFieldObjectInspector();
-				covarFieldOI = (DoubleObjectInspector) covarField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a long count, two double averages, and a double covariance.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("xavg");
-				fname.add("yavg");
-				fname.add("covar");
-
-				partialResult = new Object[4];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				partialResult[2] = new DoubleWritable(0);
-				partialResult[3] = new DoubleWritable(0);
-
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				setResult(new DoubleWritable(0));
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class StdAgg implements SerializableBuffer {
-			long count; // number n of elements
-			double xavg; // average of x elements
-			double yavg; // average of y elements
-			double covar; // n times the covariance
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				xavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				yavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				covar = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(xavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(yavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(covar, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(xavg);
-				output.writeDouble(yavg);
-				output.writeDouble(covar);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			StdAgg result = new StdAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			myagg.count = 0;
-			myagg.xavg = 0;
-			myagg.yavg = 0;
-			myagg.covar = 0;
-		}
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 2);
-			Object px = parameters[0];
-			Object py = parameters[1];
-			if (px != null && py != null) {
-				StdAgg myagg = (StdAgg) agg;
-				double vx = PrimitiveObjectInspectorUtils.getDouble(px,
-						xInputOI);
-				double vy = PrimitiveObjectInspectorUtils.getDouble(py,
-						yInputOI);
-				myagg.count++;
-				myagg.yavg = myagg.yavg + (vy - myagg.yavg) / myagg.count;
-				if (myagg.count > 1) {
-					myagg.covar += (vx - myagg.xavg) * (vy - myagg.yavg);
-				}
-				myagg.xavg = myagg.xavg + (vx - myagg.xavg) / myagg.count;
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.xavg);
-			((DoubleWritable) partialResult[2]).set(myagg.yavg);
-			((DoubleWritable) partialResult[3]).set(myagg.covar);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				StdAgg myagg = (StdAgg) agg;
-
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialXAvg = soi.getStructFieldData(partial, xavgField);
-				Object partialYAvg = soi.getStructFieldData(partial, yavgField);
-				Object partialCovar = soi.getStructFieldData(partial,
-						covarField);
-
-				long nA = myagg.count;
-				long nB = countFieldOI.get(partialCount);
-
-				if (nA == 0) {
-					// Just copy the information since there is nothing so far
-					myagg.count = countFieldOI.get(partialCount);
-					myagg.xavg = xavgFieldOI.get(partialXAvg);
-					myagg.yavg = yavgFieldOI.get(partialYAvg);
-					myagg.covar = covarFieldOI.get(partialCovar);
-				}
-
-				if (nA != 0 && nB != 0) {
-					// Merge the two partials
-					double xavgA = myagg.xavg;
-					double yavgA = myagg.yavg;
-					double xavgB = xavgFieldOI.get(partialXAvg);
-					double yavgB = yavgFieldOI.get(partialYAvg);
-					double covarB = covarFieldOI.get(partialCovar);
-
-					myagg.count += nB;
-					myagg.xavg = (xavgA * nA + xavgB * nB) / myagg.count;
-					myagg.yavg = (yavgA * nA + yavgB * nB) / myagg.count;
-					myagg.covar += covarB + (xavgA - xavgB) * (yavgA - yavgB)
-							* ((double) (nA * nB) / myagg.count);
-				}
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-
-			if (myagg.count == 0) { // SQL standard - return null for zero
-									// elements
-				return null;
-			} else {
-				getResult().set(myagg.covar / (myagg.count));
-				return getResult();
-			}
-		}
-
-		public void setResult(DoubleWritable result) {
-			this.result = result;
-		}
-
-		public DoubleWritable getResult() {
-			return result;
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
deleted file mode 100644
index 0323531..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.util.StringUtils;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * GenericUDAFSum.
- * 
- */
-@Description(name = "sum", value = "_FUNC_(x) - Returns the sum of a set of numbers")
-public class GenericUDAFSum extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFSum.class.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 1) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly one argument is expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-			return new GenericUDAFSumLong();
-		case FLOAT:
-		case DOUBLE:
-		case STRING:
-			return new GenericUDAFSumDouble();
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * GenericUDAFSumDouble.
-	 * 
-	 */
-	public static class GenericUDAFSumDouble extends GenericUDAFEvaluator {
-		private PrimitiveObjectInspector inputOI;
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-			result = new DoubleWritable(0);
-			inputOI = (PrimitiveObjectInspector) parameters[0];
-			return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-		}
-
-		/** class for storing double sum value. */
-		static class SumDoubleAgg implements SerializableBuffer {
-			boolean empty;
-			double sum;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				empty = BufferSerDeUtil.getBoolean(data, start);
-				start += 1;
-				sum = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeBoolean(empty, data, start);
-				start += 1;
-				BufferSerDeUtil.writeDouble(sum, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeBoolean(empty);
-				output.writeDouble(sum);
-			}
-		}
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			SumDoubleAgg result = new SumDoubleAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			SumDoubleAgg myagg = (SumDoubleAgg) agg;
-			myagg.empty = true;
-			myagg.sum = 0;
-		}
-
-		boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			try {
-				merge(agg, parameters[0]);
-			} catch (NumberFormatException e) {
-				if (!warned) {
-					warned = true;
-					LOG.warn(getClass().getSimpleName() + " "
-							+ StringUtils.stringifyException(e));
-					LOG.warn(getClass().getSimpleName()
-							+ " ignoring similar exceptions.");
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			return terminate(agg);
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				SumDoubleAgg myagg = (SumDoubleAgg) agg;
-				myagg.empty = false;
-				myagg.sum += PrimitiveObjectInspectorUtils.getDouble(partial,
-						inputOI);
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			SumDoubleAgg myagg = (SumDoubleAgg) agg;
-			if (myagg.empty) {
-				return null;
-			}
-			result.set(myagg.sum);
-			return result;
-		}
-
-	}
-
-	/**
-	 * GenericUDAFSumLong.
-	 * 
-	 */
-	public static class GenericUDAFSumLong extends GenericUDAFEvaluator {
-		private PrimitiveObjectInspector inputOI;
-		private LongWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-			result = new LongWritable(0);
-			inputOI = (PrimitiveObjectInspector) parameters[0];
-			return PrimitiveObjectInspectorFactory.writableLongObjectInspector;
-		}
-
-		/** class for storing double sum value. */
-		static class SumLongAgg implements SerializableBuffer {
-			boolean empty;
-			long sum;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				empty = BufferSerDeUtil.getBoolean(data, start);
-				start += 1;
-				sum = BufferSerDeUtil.getLong(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeBoolean(empty, data, start);
-				start += 1;
-				BufferSerDeUtil.writeLong(sum, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeBoolean(empty);
-				output.writeLong(sum);
-			}
-		}
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			SumLongAgg result = new SumLongAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			SumLongAgg myagg = (SumLongAgg) agg;
-			myagg.empty = true;
-			myagg.sum = 0;
-		}
-
-		private boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			try {
-				merge(agg, parameters[0]);
-			} catch (NumberFormatException e) {
-				if (!warned) {
-					warned = true;
-					LOG.warn(getClass().getSimpleName() + " "
-							+ StringUtils.stringifyException(e));
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			return terminate(agg);
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				SumLongAgg myagg = (SumLongAgg) agg;
-				myagg.sum += PrimitiveObjectInspectorUtils.getLong(partial,
-						inputOI);
-				myagg.empty = false;
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			SumLongAgg myagg = (SumLongAgg) agg;
-			if (myagg.empty) {
-				return null;
-			}
-			result.set(myagg.sum);
-			return result;
-		}
-
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java
deleted file mode 100644
index 4c16f5a..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.util.StringUtils;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * Compute the variance. This class is extended by: GenericUDAFVarianceSample
- * GenericUDAFStd GenericUDAFStdSample
- * 
- */
-@Description(name = "variance,var_pop", value = "_FUNC_(x) - Returns the variance of a set of numbers")
-public class GenericUDAFVariance extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFVariance.class
-			.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 1) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly one argument is expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-		case STRING:
-			return new GenericUDAFVarianceEvaluator();
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * Evaluate the variance using the algorithm described by Chan, Golub, and
-	 * LeVeque in
-	 * "Algorithms for computing the sample variance: analysis and recommendations"
-	 * The American Statistician, 37 (1983) pp. 242--247.
-	 * 
-	 * variance = variance1 + variance2 + n/(m*(m+n)) * pow(((m/n)*t1 - t2),2)
-	 * 
-	 * where: - variance is sum[x-avg^2] (this is actually n times the variance)
-	 * and is updated at every step. - n is the count of elements in chunk1 - m
-	 * is the count of elements in chunk2 - t1 = sum of elements in chunk1, t2 =
-	 * sum of elements in chunk2.
-	 * 
-	 * This algorithm was proven to be numerically stable by J.L. Barlow in
-	 * "Error analysis of a pairwise summation algorithm to compute sample variance"
-	 * Numer. Math, 58 (1991) pp. 583--590
-	 * 
-	 */
-	public static class GenericUDAFVarianceEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		private PrimitiveObjectInspector inputOI;
-
-		// For PARTIAL2 and FINAL
-		private StructObjectInspector soi;
-		private StructField countField;
-		private StructField sumField;
-		private StructField varianceField;
-		private LongObjectInspector countFieldOI;
-		private DoubleObjectInspector sumFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		private Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				inputOI = (PrimitiveObjectInspector) parameters[0];
-			} else {
-				soi = (StructObjectInspector) parameters[0];
-
-				countField = soi.getStructFieldRef("count");
-				sumField = soi.getStructFieldRef("sum");
-				varianceField = soi.getStructFieldRef("variance");
-
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				sumFieldOI = (DoubleObjectInspector) sumField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a long count and doubles sum and variance.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("sum");
-				fname.add("variance");
-
-				partialResult = new Object[3];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				partialResult[2] = new DoubleWritable(0);
-
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				setResult(new DoubleWritable(0));
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class StdAgg implements SerializableBuffer {
-			long count; // number of elements
-			double sum; // sum of elements
-			double variance; // sum[x-avg^2] (this is actually n times the
-								// variance)
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				sum = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				variance = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(sum, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(variance, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(sum);
-				output.writeDouble(variance);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			StdAgg result = new StdAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			myagg.count = 0;
-			myagg.sum = 0;
-			myagg.variance = 0;
-		}
-
-		private boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			Object p = parameters[0];
-			if (p != null) {
-				StdAgg myagg = (StdAgg) agg;
-				try {
-					double v = PrimitiveObjectInspectorUtils.getDouble(p,
-							inputOI);
-					myagg.count++;
-					myagg.sum += v;
-					if (myagg.count > 1) {
-						double t = myagg.count * v - myagg.sum;
-						myagg.variance += (t * t)
-								/ ((double) myagg.count * (myagg.count - 1));
-					}
-				} catch (NumberFormatException e) {
-					if (!warned) {
-						warned = true;
-						LOG.warn(getClass().getSimpleName() + " "
-								+ StringUtils.stringifyException(e));
-						LOG.warn(getClass().getSimpleName()
-								+ " ignoring similar exceptions.");
-					}
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.sum);
-			((DoubleWritable) partialResult[2]).set(myagg.variance);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				StdAgg myagg = (StdAgg) agg;
-
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialSum = soi.getStructFieldData(partial, sumField);
-				Object partialVariance = soi.getStructFieldData(partial,
-						varianceField);
-
-				long n = myagg.count;
-				long m = countFieldOI.get(partialCount);
-
-				if (n == 0) {
-					// Just copy the information since there is nothing so far
-					myagg.variance = sumFieldOI.get(partialVariance);
-					myagg.count = countFieldOI.get(partialCount);
-					myagg.sum = sumFieldOI.get(partialSum);
-				}
-
-				if (m != 0 && n != 0) {
-					// Merge the two partials
-
-					double a = myagg.sum;
-					double b = sumFieldOI.get(partialSum);
-
-					myagg.count += m;
-					myagg.sum += b;
-					double t = (m / (double) n) * a - b;
-					myagg.variance += sumFieldOI.get(partialVariance)
-							+ ((n / (double) m) / ((double) n + m)) * t * t;
-				}
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-
-			if (myagg.count == 0) { // SQL standard - return null for zero
-									// elements
-				return null;
-			} else {
-				if (myagg.count > 1) {
-					getResult().set(myagg.variance / (myagg.count));
-				} else { // for one element the variance is always 0
-					getResult().set(0);
-				}
-				return getResult();
-			}
-		}
-
-		public void setResult(DoubleWritable result) {
-			this.result = result;
-		}
-
-		public DoubleWritable getResult() {
-			return result;
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/scripts/run.cmd b/hivesterix/src/main/scripts/run.cmd
deleted file mode 100755
index b8eb4a0..0000000
--- a/hivesterix/src/main/scripts/run.cmd
+++ /dev/null
@@ -1,63 +0,0 @@
-@ECHO OFF
-SETLOCAL
-
-:: Licensed to the Apache Software Foundation (ASF) under one or more
-:: contributor license agreements.  See the NOTICE file distributed with
-:: this work for additional information regarding copyright ownership.
-:: The ASF licenses this file to You under the Apache License, Version 2.0
-:: (the "License"); you may not use this file except in compliance with
-:: the License.  You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-
-:: JAVA classpath
-:: Use the local variable CLASSPATH to add custom entries (e.g. JDBC drivers) to
-:: the classpath. Separate multiple paths with ":". Enclose the value
-:: in double quotes. Adding additional files or locations on separate
-:: lines makes things clearer.
-:: Note: If under running under cygwin use "/cygdrive/c/..." for "C:/..."
-:: Example:
-::
-::     Set the CLASSPATH to a jar file and a directory.  Note that
-::     "classes dir" is a directory of class files with a space in the name.
-::
-:: CLASSPATH="usr/local/Product1/lib/product.jar"
-:: CLASSPATH="${CLASSPATH}:../MyProject/classes dir"
-::
-SET CLASSPATH="@classpath@"
-
-:: JVM parameters
-:: If you want to modify the default parameters (e.g. maximum heap size -Xmx)
-:: for the Java virtual machine set the local variable JVM_PARAMETERS below
-:: Example:
-:: JVM_PARAMETERS=-Xms100M -Xmx200M
-::
-:: Below are the JVM parameters needed to do remote debugging using Intellij
-:: IDEA.  Uncomment and then do: JVM_PARAMETERS="$IDEA_REMOTE_DEBUG_PARAMS"
-:: IDEA_REMOTE_DEBUG_PARAMS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
-::
-:: JVM_PARAMETERS=
-
-:: ---------------------------------------------------------------------------
-:: Default configuration. Do not modify below this line.
-:: ---------------------------------------------------------------------------
-:: Application specific parameters
-
-SET MAIN_CLASS=@main.class@
-SET JVM_PARAMS=@jvm.params@
-SET PROGRAM_PARAMS=@program.params@
-
-:: Try to find java virtual machine
-IF NOT DEFINED JAVA (
-  IF NOT DEFINED JAVA_HOME SET JAVA="java.exe"
-  IF DEFINED JAVA_HOME SET JAVA="%JAVA_HOME%\bin\java.exe"
-)
-
-:: Run program
-%JAVA% %JVM_PARAMS% %JVM_PARAMETERS% -classpath %CLASSPATH% %MAIN_CLASS% %PROGRAM_PARAMS% %*
diff --git a/hivesterix/src/main/scripts/run.sh b/hivesterix/src/main/scripts/run.sh
deleted file mode 100755
index a998626..0000000
--- a/hivesterix/src/main/scripts/run.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-# JAVA classpath
-# Use the local variable CLASSPATH to add custom entries (e.g. JDBC drivers) to
-# the classpath. Separate multiple paths with ":". Enclose the value
-# in double quotes. Adding additional files or locations on separate
-# lines makes things clearer.
-# Note: If under running under cygwin use "/cygdrive/c/..." for "C:/..."
-# Example:
-#
-#     Set the CLASSPATH to a jar file and a directory.  Note that
-#     "classes dir" is a directory of class files with a space in the name.
-#
-# CLASSPATH="usr/local/Product1/lib/product.jar"
-# CLASSPATH="${CLASSPATH}:../MyProject/classes dir"
-#
-CLASSPATH="@classpath@"
-
-# JVM parameters
-# If you want to modify the default parameters (e.g. maximum heap size -Xmx)
-# for the Java virtual machine set the local variable JVM_PARAMETERS below
-# Example:
-# JVM_PARAMETERS=-Xms100M -Xmx200M
-#
-# Below are the JVM parameters needed to do remote debugging using Intellij
-# IDEA.  Uncomment and then do: JVM_PARAMETERS="$IDEA_REMOTE_DEBUG_PARAMS"
-# IDEA_REMOTE_DEBUG_PARAMS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
-#
-# JVM_PARAMETERS=
-
-#run with shared memory setup
-#if [ -n "${RUN_SHARED_MEM}"]; then
-#  JVM_PARAMETERS="${JVM_PARAMETERS} -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,server=n,address=javadebug,suspend=y"
-#fi
-
-# ---------------------------------------------------------------------------
-# Default configuration. Do not modify below this line.
-# ---------------------------------------------------------------------------
-# Application specific parameters
-
-MAIN_CLASS="@main.class@"
-JVM_PARAMS="@jvm.params@"
-PROGRAM_PARAMS="@program.params@"
-
-# Cygwin support.  $cygwin _must_ be set to either true or false.
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  *) cygwin=false ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin; then
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# Try to find java virtual machine
-if [ -z "${JAVA}" ];  then
-  if [ -z "${JAVA_HOME}" ]; then
-    JAVA=java
-  else
-    JAVA=${JAVA_HOME}/bin/java
-  fi
-fi
-
-# Try to find directory where this script is located
-COMMAND="${PWD}/$0"
-if [ ! -f "${COMMAND}" ]; then
-	COMMAND="$0"
-fi
-BASEDIR=`expr "${COMMAND}" : '\(.*\)/\.*'`
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-#  JAVA=`cygpath --path --windows "$JAVA"`
-  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
-# Run program
-${JAVA} ${JVM_PARAMS} ${JVM_PARAMETERS} -classpath "${CLASSPATH}" ${MAIN_CLASS} ${PROGRAM_PARAMS} $*
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestCase.java
deleted file mode 100644
index a69a3f2..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestCase.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestCase;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-
-public class PerfTestCase extends AbstractPerfTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	PerfTestCase(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		if (!equal(buf, sb)) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ sw.toString());
-		}
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-
-	private boolean equal(StringBuilder sb1, StringBuilder sb2) {
-		String s1 = sb1.toString();
-		String s2 = sb2.toString();
-		String[] rowsOne = s1.split("\n");
-		String[] rowsTwo = s2.split("\n");
-
-		if (rowsOne.length != rowsTwo.length)
-			return false;
-
-		for (int i = 0; i < rowsOne.length; i++) {
-			String row1 = rowsOne[i];
-			String row2 = rowsTwo[i];
-
-			if (row1.equals(row2))
-				continue;
-
-			String[] fields1 = row1.split("");
-			String[] fields2 = row2.split("");
-
-			for (int j = 0; j < fields1.length; j++) {
-				if (fields1[j].equals(fields2[j])) {
-					continue;
-				} else if (fields1[j].indexOf('.') < 0) {
-					return false;
-				} else {
-					Float float1 = Float.parseFloat(fields1[j]);
-					Float float2 = Float.parseFloat(fields2[j]);
-
-					if (Math.abs(float1 - float2) == 0)
-						continue;
-					else
-						return false;
-				}
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuite.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuite.java
deleted file mode 100644
index 8d8178f..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuite.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestSuiteClass;
-
-public class PerfTestSuite extends AbstractPerfTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/perf/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/perf/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/perf/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		PerfTestSuite testSuite = new PerfTestSuite();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile()) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new PerfTestCase(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteCaseGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteCaseGenerator.java
deleted file mode 100644
index 258db22..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteCaseGenerator.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestCase;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-
-public class PerfTestSuiteCaseGenerator extends AbstractPerfTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	PerfTestSuiteCaseGenerator(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf);
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		long startTime = System.currentTimeMillis();
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			// driver.clear();
-			i++;
-		}
-		long endTime = System.currentTimeMillis();
-		System.out.println(resultFile.getName() + " execution time "
-				+ (endTime - startTime));
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		writeStringToFile(resultFile, sb);
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteGenerator.java
deleted file mode 100644
index 0a27ca2..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteGenerator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestSuiteClass;
-
-public class PerfTestSuiteGenerator extends AbstractPerfTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/perf/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/perf/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/perf/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		PerfTestSuiteGenerator testSuite = new PerfTestSuiteGenerator();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile() && qFile.getName().startsWith("q18_")) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new PerfTestSuiteCaseGenerator(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestCase.java
deleted file mode 100644
index f55d6a1..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestCase.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package edu.uci.ics.hivesterix.perf.base;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import junit.framework.TestCase;
-
-public class AbstractPerfTestCase extends TestCase {
-	protected File queryFile;
-
-	public AbstractPerfTestCase(String testName, File queryFile) {
-		super(testName);
-	}
-
-	protected static void readFileToString(File file, StringBuilder buf)
-			throws Exception {
-		BufferedReader result = new BufferedReader(new FileReader(file));
-		while (true) {
-			String s = result.readLine();
-			if (s == null) {
-				break;
-			} else {
-				buf.append(s);
-				buf.append('\n');
-			}
-		}
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringWriter buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringBuilder buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static String removeExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot);
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestSuiteClass.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestSuiteClass.java
deleted file mode 100644
index 3d66f59..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestSuiteClass.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package edu.uci.ics.hivesterix.perf.base;
-
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestSuite;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MiniMRCluster;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
-import edu.uci.ics.hyracks.control.common.controllers.CCConfig;
-import edu.uci.ics.hyracks.control.common.controllers.NCConfig;
-import edu.uci.ics.hyracks.control.nc.NodeControllerService;
-
-@SuppressWarnings("deprecation")
-public abstract class AbstractPerfTestSuiteClass extends TestSuite {
-
-	private static final String PATH_TO_HADOOP_CONF = "src/test/resources/perf/hadoop/conf";
-	private static final String PATH_TO_HIVE_CONF = "src/test/resources/perf/hive/conf/hive-default.xml";
-	private static final String PATH_TO_DATA = "src/test/resources/perf/data/";
-
-	private MiniDFSCluster dfsCluster;
-	private MiniMRCluster mrCluster;
-
-	private JobConf conf = new JobConf();
-	protected FileSystem dfs;
-
-	private int numberOfNC = 2;
-	private ClusterControllerService cc;
-	private Map<String, NodeControllerService> ncs = new HashMap<String, NodeControllerService>();
-
-	/**
-	 * setup cluster
-	 *
-	 * @throws IOException
-	 */
-	protected void setup() throws Exception {
-		setupHdfs();
-		setupHyracks();
-	}
-
-	private void setupHdfs() throws IOException {
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-
-		FileSystem lfs = FileSystem.getLocal(new Configuration());
-		lfs.delete(new Path("build"), true);
-		lfs.delete(new Path("metastore_db"), true);
-
-		System.setProperty("hadoop.log.dir", "logs");
-		dfsCluster = new MiniDFSCluster(hconf, numberOfNC, true, null);
-		dfs = dfsCluster.getFileSystem();
-
-		mrCluster = new MiniMRCluster(2, dfs.getUri().toString(), 1);
-		hconf.setVar(HiveConf.ConfVars.HADOOPJT,
-				"localhost:" + mrCluster.getJobTrackerPort());
-		hconf.setInt("mapred.min.split.size", 1342177280);
-
-		conf = new JobConf(hconf);
-		ConfUtil.setJobConf(conf);
-
-		String fsName = conf.get("fs.default.name");
-		hconf.set("hive.metastore.warehouse.dir",
-				fsName.concat("/tmp/hivesterix"));
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		dfs.mkdirs(new Path(warehouse));
-		ConfUtil.setHiveConf(hconf);
-	}
-
-	private void setupHyracks() throws Exception {
-		// read hive conf
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-		SessionState.start(hconf);
-		String ipAddress = hconf.get("hive.hyracks.host");
-		int clientPort = Integer.parseInt(hconf.get("hive.hyracks.port"));
-		int clusterPort = clientPort;
-		String applicationName = hconf.get("hive.hyracks.app");
-
-		// start hyracks cc
-		CCConfig ccConfig = new CCConfig();
-		ccConfig.clientNetIpAddress = ipAddress;
-		ccConfig.clientNetPort = clientPort;
-		ccConfig.clusterNetPort = clusterPort;
-		ccConfig.profileDumpPeriod = 1000;
-		ccConfig.heartbeatPeriod = 200000000;
-		ccConfig.maxHeartbeatLapsePeriods = 200000000;
-		cc = new ClusterControllerService(ccConfig);
-		cc.start();
-
-		// start hyracks nc
-		for (int i = 0; i < numberOfNC; i++) {
-			NCConfig ncConfig = new NCConfig();
-			ncConfig.ccHost = ipAddress;
-			ncConfig.clusterNetIPAddress = ipAddress;
-			ncConfig.ccPort = clientPort;
-			ncConfig.dataIPAddress = "127.0.0.1";
-            ncConfig.datasetIPAddress = "127.0.0.1";
-			ncConfig.nodeId = "nc" + i;
-			NodeControllerService nc = new NodeControllerService(ncConfig);
-			nc.start();
-			ncs.put(ncConfig.nodeId, nc);
-		}
-
-		IHyracksClientConnection hcc = new HyracksConnection(
-				ccConfig.clientNetIpAddress, clientPort);
-		hcc.createApplication(applicationName, null);
-	}
-
-	protected void makeDir(String path) throws IOException {
-		dfs.mkdirs(new Path(path));
-	}
-
-	protected void loadFiles(String src, String dest) throws IOException {
-		dfs.copyFromLocalFile(new Path(src), new Path(dest));
-	}
-
-	protected void cleanup() throws Exception {
-		cleanupHdfs();
-		cleanupHyracks();
-	}
-
-	/**
-	 * cleanup hdfs cluster
-	 */
-	private void cleanupHdfs() throws IOException {
-		dfs.delete(new Path("/"), true);
-		FileSystem.closeAll();
-		dfsCluster.shutdown();
-	}
-
-	/**
-	 * cleanup hyracks cluster
-	 */
-	private void cleanupHyracks() throws Exception {
-		Iterator<NodeControllerService> iterator = ncs.values().iterator();
-		while (iterator.hasNext()) {
-			NodeControllerService nc = iterator.next();
-			nc.stop();
-		}
-		cc.stop();
-	}
-
-	protected static List<String> getIgnoreList(String ignorePath)
-			throws FileNotFoundException, IOException {
-		BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
-		String s = null;
-		List<String> ignores = new ArrayList<String>();
-		while ((s = reader.readLine()) != null) {
-			ignores.add(s);
-		}
-		reader.close();
-		return ignores;
-	}
-
-	protected static boolean isIgnored(String q, List<String> ignoreList) {
-		for (String ignore : ignoreList) {
-			if (ignore.equals(q)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	protected void loadData() throws IOException {
-
-		makeDir("/tpch");
-		makeDir("/tpch/customer");
-		makeDir("/tpch/lineitem");
-		makeDir("/tpch/orders");
-		makeDir("/tpch/part");
-		makeDir("/tpch/partsupp");
-		makeDir("/tpch/supplier");
-		makeDir("/tpch/nation");
-		makeDir("/tpch/region");
-
-		makeDir("/jarod");
-
-		loadFiles(PATH_TO_DATA + "customer.tbl", "/tpch/customer/");
-		loadFiles(PATH_TO_DATA + "lineitem.tbl", "/tpch/lineitem/");
-		loadFiles(PATH_TO_DATA + "orders.tbl", "/tpch/orders/");
-		loadFiles(PATH_TO_DATA + "part.tbl", "/tpch/part/");
-		loadFiles(PATH_TO_DATA + "partsupp.tbl", "/tpch/partsupp/");
-		loadFiles(PATH_TO_DATA + "supplier.tbl", "/tpch/supplier/");
-		loadFiles(PATH_TO_DATA + "nation.tbl", "/tpch/nation/");
-		loadFiles(PATH_TO_DATA + "region.tbl", "/tpch/region/");
-
-		loadFiles(PATH_TO_DATA + "ext-gby.tbl", "/jarod/");
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractHivesterixTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractHivesterixTestCase.java
deleted file mode 100644
index 560cef7..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractHivesterixTestCase.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package edu.uci.ics.hivesterix.test.base;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import junit.framework.TestCase;
-
-public class AbstractHivesterixTestCase extends TestCase {
-	protected File queryFile;
-
-	public AbstractHivesterixTestCase(String testName, File queryFile) {
-		super(testName);
-	}
-
-	protected static void readFileToString(File file, StringBuilder buf)
-			throws Exception {
-		BufferedReader result = new BufferedReader(new FileReader(file));
-		while (true) {
-			String s = result.readLine();
-			if (s == null) {
-				break;
-			} else {
-				buf.append(s);
-				buf.append('\n');
-			}
-		}
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringWriter buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringBuilder buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static String removeExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot);
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
deleted file mode 100644
index 64ad495..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package edu.uci.ics.hivesterix.test.base;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestSuite;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MiniMRCluster;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
-import edu.uci.ics.hyracks.control.common.controllers.CCConfig;
-import edu.uci.ics.hyracks.control.common.controllers.NCConfig;
-import edu.uci.ics.hyracks.control.nc.NodeControllerService;
-
-@SuppressWarnings("deprecation")
-public abstract class AbstractTestSuiteClass extends TestSuite {
-
-	private static final String PATH_TO_HADOOP_CONF = "src/test/resources/runtimefunctionts/hadoop/conf";
-	private static final String PATH_TO_HIVE_CONF = "src/test/resources/runtimefunctionts/hive/conf/hive-default.xml";
-
-	private static final String PATH_TO_CLUSTER_CONF = "src/test/resources/runtimefunctionts/hive/conf/topology.xml";
-	private static final String PATH_TO_DATA = "src/test/resources/runtimefunctionts/data/";
-
-	private MiniDFSCluster dfsCluster;
-	private MiniMRCluster mrCluster;
-
-	private JobConf conf = new JobConf();
-	protected FileSystem dfs;
-
-	private int numberOfNC = 2;
-	private ClusterControllerService cc;
-	private Map<String, NodeControllerService> ncs = new HashMap<String, NodeControllerService>();
-
-	/**
-	 * setup cluster
-	 *
-	 * @throws IOException
-	 */
-	protected void setup() throws Exception {
-		setupHdfs();
-		setupHyracks();
-	}
-
-	private void setupHdfs() throws IOException {
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-
-		FileSystem lfs = FileSystem.getLocal(new Configuration());
-		lfs.delete(new Path("build"), true);
-		lfs.delete(new Path("metastore_db"), true);
-
-		System.setProperty("hadoop.log.dir", "logs");
-		dfsCluster = new MiniDFSCluster(hconf, numberOfNC, true, null);
-		dfs = dfsCluster.getFileSystem();
-
-		mrCluster = new MiniMRCluster(2, dfs.getUri().toString(), 1);
-		hconf.setVar(HiveConf.ConfVars.HADOOPJT,
-				"localhost:" + mrCluster.getJobTrackerPort());
-
-		conf = new JobConf(hconf);
-		ConfUtil.setJobConf(conf);
-
-		String fsName = conf.get("fs.default.name");
-		hconf.set("hive.metastore.warehouse.dir",
-				fsName.concat("/tmp/hivesterix"));
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		dfs.mkdirs(new Path(warehouse));
-		ConfUtil.setHiveConf(hconf);
-	}
-
-	private void setupHyracks() throws Exception {
-		// read hive conf
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-		SessionState.start(hconf);
-		String ipAddress = hconf.get("hive.hyracks.host");
-		int clientPort = Integer.parseInt(hconf.get("hive.hyracks.port"));
-		int netPort = clientPort + 1;
-		String applicationName = hconf.get("hive.hyracks.app");
-
-		// start hyracks cc
-		CCConfig ccConfig = new CCConfig();
-		ccConfig.clientNetIpAddress = ipAddress;
-		ccConfig.clientNetPort = clientPort;
-		ccConfig.clusterNetPort = netPort;
-		ccConfig.profileDumpPeriod = 1000;
-		ccConfig.heartbeatPeriod = 200000000;
-		ccConfig.maxHeartbeatLapsePeriods = 200000000;
-		ccConfig.clusterTopologyDefinition = new File(PATH_TO_CLUSTER_CONF);
-		cc = new ClusterControllerService(ccConfig);
-		cc.start();
-
-		// start hyracks nc
-		for (int i = 0; i < numberOfNC; i++) {
-			NCConfig ncConfig = new NCConfig();
-			ncConfig.ccHost = ipAddress;
-			ncConfig.clusterNetIPAddress = ipAddress;
-			ncConfig.ccPort = netPort;
-			ncConfig.dataIPAddress = "127.0.0.1";
-            ncConfig.datasetIPAddress = "127.0.0.1";
-			ncConfig.nodeId = "nc" + i;
-			NodeControllerService nc = new NodeControllerService(ncConfig);
-			nc.start();
-			ncs.put(ncConfig.nodeId, nc);
-		}
-
-		IHyracksClientConnection hcc = new HyracksConnection(
-				ccConfig.clientNetIpAddress, clientPort);
-		hcc.createApplication(applicationName, null);
-	}
-
-	protected void makeDir(String path) throws IOException {
-		dfs.mkdirs(new Path(path));
-	}
-
-	protected void loadFiles(String src, String dest) throws IOException {
-		dfs.copyFromLocalFile(new Path(src), new Path(dest));
-	}
-
-	protected void cleanup() throws Exception {
-		cleanupHdfs();
-		cleanupHyracks();
-	}
-
-	/**
-	 * cleanup hdfs cluster
-	 */
-	private void cleanupHdfs() throws IOException {
-		dfs.delete(new Path("/"), true);
-		FileSystem.closeAll();
-		dfsCluster.shutdown();
-	}
-
-	/**
-	 * cleanup hyracks cluster
-	 */
-	private void cleanupHyracks() throws Exception {
-		Iterator<NodeControllerService> iterator = ncs.values().iterator();
-		while (iterator.hasNext()) {
-			NodeControllerService nc = iterator.next();
-			nc.stop();
-		}
-		cc.stop();
-	}
-
-	protected static List<String> getIgnoreList(String ignorePath)
-			throws FileNotFoundException, IOException {
-		BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
-		String s = null;
-		List<String> ignores = new ArrayList<String>();
-		while ((s = reader.readLine()) != null) {
-			ignores.add(s);
-		}
-		reader.close();
-		return ignores;
-	}
-
-	protected static boolean isIgnored(String q, List<String> ignoreList) {
-		for (String ignore : ignoreList) {
-			if (q.indexOf(ignore) >= 0) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	protected void loadData() throws IOException {
-
-		makeDir("/tpch");
-		makeDir("/tpch/customer");
-		makeDir("/tpch/lineitem");
-		makeDir("/tpch/orders");
-		makeDir("/tpch/part");
-		makeDir("/tpch/partsupp");
-		makeDir("/tpch/supplier");
-		makeDir("/tpch/nation");
-		makeDir("/tpch/region");
-
-		makeDir("/test");
-		makeDir("/test/joinsrc1");
-		makeDir("/test/joinsrc2");
-
-		loadFiles(PATH_TO_DATA + "customer.tbl", "/tpch/customer/");
-		loadFiles(PATH_TO_DATA + "lineitem.tbl", "/tpch/lineitem/");
-		loadFiles(PATH_TO_DATA + "orders.tbl", "/tpch/orders/");
-		loadFiles(PATH_TO_DATA + "part.tbl", "/tpch/part/");
-		loadFiles(PATH_TO_DATA + "partsupp.tbl", "/tpch/partsupp/");
-		loadFiles(PATH_TO_DATA + "supplier.tbl", "/tpch/supplier/");
-		loadFiles(PATH_TO_DATA + "nation.tbl", "/tpch/nation/");
-		loadFiles(PATH_TO_DATA + "region.tbl", "/tpch/region/");
-
-		loadFiles(PATH_TO_DATA + "large_card_join_src.tbl", "/test/joinsrc1/");
-		loadFiles(PATH_TO_DATA + "large_card_join_src_small.tbl",
-				"/test/joinsrc2/");
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/datagen/RecordBalance.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/datagen/RecordBalance.java
deleted file mode 100644
index 800d6be..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/datagen/RecordBalance.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package edu.uci.ics.hivesterix.test.datagen;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapred.FileInputFormat;
-import org.apache.hadoop.mapred.FileOutputFormat;
-import org.apache.hadoop.mapred.JobClient;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MapReduceBase;
-import org.apache.hadoop.mapred.Mapper;
-import org.apache.hadoop.mapred.OutputCollector;
-import org.apache.hadoop.mapred.Reducer;
-import org.apache.hadoop.mapred.Reporter;
-import org.apache.hadoop.mapred.TextInputFormat;
-
-@SuppressWarnings("deprecation")
-public class RecordBalance {
-
-	private static String confPath = System.getenv("HADDOP_HOME");
-	private static Path[] inputPaths = { new Path("/tpch/100x/customer"),
-			new Path("/tpch/100x/nation"), new Path("/tpch/100x/region"),
-			new Path("/tpch/100x/lineitem"), new Path("/tpch/100x/orders"),
-			new Path("/tpch/100x/part"), new Path("/tpch/100x/partsupp"),
-			new Path("/tpch/100x/supplier") };
-
-	private static Path[] outputPaths = { new Path("/tpch/100/customer"),
-			new Path("/tpch/100/nation"), new Path("/tpch/100/region"),
-			new Path("/tpch/100/lineitem"), new Path("/tpch/100/orders"),
-			new Path("/tpch/100/part"), new Path("/tpch/100/partsupp"),
-			new Path("/tpch/100/supplier") };
-
-	public static class MapRecordOnly extends MapReduceBase implements
-			Mapper<LongWritable, Text, LongWritable, Text> {
-
-		public void map(LongWritable id, Text inputValue,
-				OutputCollector<LongWritable, Text> output, Reporter reporter)
-				throws IOException {
-			output.collect(id, inputValue);
-		}
-	}
-
-	public static class ReduceRecordOnly extends MapReduceBase implements
-			Reducer<LongWritable, Text, NullWritable, Text> {
-
-		NullWritable key = NullWritable.get();
-
-		public void reduce(LongWritable inputKey, Iterator<Text> inputValue,
-				OutputCollector<NullWritable, Text> output, Reporter reporter)
-				throws IOException {
-			while (inputValue.hasNext())
-				output.collect(key, inputValue.next());
-		}
-	}
-
-	public static void main(String[] args) throws IOException {
-
-		for (int i = 0; i < inputPaths.length; i++) {
-			JobConf job = new JobConf(RecordBalance.class);
-			job.addResource(new Path(confPath + "/core-site.xml"));
-			job.addResource(new Path(confPath + "/mapred-site.xml"));
-			job.addResource(new Path(confPath + "/hdfs-site.xml"));
-
-			job.setJobName(RecordBalance.class.getSimpleName());
-			job.setMapperClass(MapRecordOnly.class);
-			job.setReducerClass(ReduceRecordOnly.class);
-			job.setMapOutputKeyClass(LongWritable.class);
-			job.setMapOutputValueClass(Text.class);
-
-			job.setInputFormat(TextInputFormat.class);
-			FileInputFormat.setInputPaths(job, inputPaths[i]);
-			FileOutputFormat.setOutputPath(job, outputPaths[i]);
-			job.setNumReduceTasks(Integer.parseInt(args[0]));
-
-			JobClient.runJob(job);
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/legacy/LegacyTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/legacy/LegacyTestCase.java
deleted file mode 100644
index 9591c32..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/legacy/LegacyTestCase.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package edu.uci.ics.hivesterix.test.legacy;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class LegacyTestCase extends AbstractHivesterixTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	public LegacyTestCase(File queryFile, File resultFile) {
-		super("legacy", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		if (!equal(buf, sb)) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ sw.toString());
-		}
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-
-	private boolean equal(StringBuilder sb1, StringBuilder sb2) {
-		String s1 = sb1.toString();
-		String s2 = sb2.toString();
-		String[] rowsOne = s1.split("\n");
-		String[] rowsTwo = s2.split("\n");
-
-		if (rowsOne.length != rowsTwo.length)
-			return false;
-
-		for (int i = 0; i < rowsOne.length; i++) {
-			String row1 = rowsOne[i];
-			String row2 = rowsTwo[i];
-
-			if (row1.equals(row2))
-				continue;
-
-			String[] fields1 = row1.split("");
-			String[] fields2 = row2.split("");
-
-			for (int j = 0; j < fields1.length; j++) {
-				if (fields1[j].equals(fields2[j])) {
-					continue;
-				} else if (fields1[j].indexOf('.') < 0) {
-					return false;
-				} else {
-					Float float1 = Float.parseFloat(fields1[j]);
-					Float float2 = Float.parseFloat(fields2[j]);
-
-					if (Math.abs(float1 - float2) == 0)
-						continue;
-					else
-						return false;
-				}
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestCase.java
deleted file mode 100644
index db13676..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestCase.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class OptimizerTestCase extends AbstractHivesterixTestCase {
-	private File resultFile;
-
-	OptimizerTestCase(File queryFile, File resultFile) {
-		super("testOptimizer", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testOptimizer() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			if (query.toLowerCase().indexOf("create") >= 0
-					|| query.toLowerCase().indexOf("drop") >= 0
-					|| query.toLowerCase().indexOf("set") >= 0
-					|| query.toLowerCase().startsWith("\n\ncreate")
-					|| query.toLowerCase().startsWith("\n\ndrop")
-					|| query.toLowerCase().startsWith("\n\nset"))
-				driver.run(query);
-			else
-				driver.compile(query);
-			driver.clear();
-			i++;
-		}
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		if (!buf.toString().equals(sw.toString())) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ sw.toString());
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuitGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuitGenerator.java
deleted file mode 100644
index 217f67d..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuitGenerator.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class OptimizerTestSuitGenerator extends AbstractTestSuiteClass {
-	private static final String PATH_TO_QUERIES = "src/test/resources/optimizerts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/optimizerts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/optimizerts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "plan";
-
-	public static Test suite() throws UnsupportedEncodingException,
-			FileNotFoundException, IOException {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		OptimizerTestSuitGenerator testSuite = new OptimizerTestSuitGenerator();
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile()) {
-				String resultFileName = aqlExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new OptimizerTestSuiteCaseGenerator(qFile,
-						rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String aqlExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuite.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuite.java
deleted file mode 100644
index e3a4a4e..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuite.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-
-import junit.framework.Test;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class OptimizerTestSuite extends AbstractTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/optimizerts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/optimizerts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/optimizerts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "plan";
-
-	public static Test suite() throws UnsupportedEncodingException,
-			FileNotFoundException, IOException {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		OptimizerTestSuite testSuite = new OptimizerTestSuite();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile() && qFile.getName().startsWith("h11_")) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new OptimizerTestCase(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuiteCaseGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuiteCaseGenerator.java
deleted file mode 100644
index a86dc29..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuiteCaseGenerator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class OptimizerTestSuiteCaseGenerator extends AbstractHivesterixTestCase {
-	private File resultFile;
-
-	OptimizerTestSuiteCaseGenerator(File queryFile, File resultFile) {
-		super("testOptimizer", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testOptimizer() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			if (query.toLowerCase().indexOf("create") >= 0
-					|| query.toLowerCase().indexOf("drop") >= 0
-					|| query.toLowerCase().indexOf("set") >= 0
-					|| query.toLowerCase().startsWith("\n\ncreate")
-					|| query.toLowerCase().startsWith("\n\ndrop")
-					|| query.toLowerCase().startsWith("\n\nset"))
-				driver.run(query);
-			else
-				driver.compile(query);
-			driver.clear();
-			i++;
-		}
-		sw.close();
-		writeStringToFile(resultFile, sw);
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestCase.java
deleted file mode 100644
index 078de9a..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestCase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class RuntimeFunctionTestCase extends AbstractHivesterixTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	RuntimeFunctionTestCase(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-		// Driver driver = new Driver(hconf);
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		StringBuffer errorMsg = new StringBuffer();
-		if (!equal(buf, sb, errorMsg)) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ errorMsg.toString());
-		}
-		deleteDir(resultDirectory);
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-
-	private boolean equal(StringBuilder sb1, StringBuilder sb2,
-			StringBuffer errorMsg) {
-		String s1 = sb1.toString();
-		String s2 = sb2.toString();
-		String[] rowsOne = s1.split("\n");
-		String[] rowsTwo = s2.split("\n");
-
-		if (rowsOne.length != rowsTwo.length)
-			return false;
-
-		for (int i = 0; i < rowsOne.length; i++) {
-			String row1 = rowsOne[i];
-			String row2 = rowsTwo[i];
-
-			if (row1.equals(row2))
-				continue;
-
-			String[] fields1 = row1.split("");
-			String[] fields2 = row2.split("");
-
-			for (int j = 0; j < fields1.length; j++) {
-				if (fields1[j].equals(fields2[j])) {
-					continue;
-				} else if (fields1[j].indexOf('.') < 0) {
-					errorMsg.append("line " + i + " column " + j + ": "
-							+ fields2[j] + " expected " + fields1[j]);
-					return false;
-				} else {
-					Float float1 = Float.parseFloat(fields1[j]);
-					Float float2 = Float.parseFloat(fields2[j]);
-
-					if (Math.abs(float1 - float2) == 0)
-						continue;
-					else {
-						errorMsg.append("line " + i + " column " + j + ": "
-								+ fields2[j] + " expected " + fields1[j]);
-						return false;
-					}
-				}
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuite.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuite.java
deleted file mode 100644
index 2093b1d..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuite.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class RuntimeFunctionTestSuite extends AbstractTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/runtimefunctionts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/runtimefunctionts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/runtimefunctionts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		RuntimeFunctionTestSuite testSuite = new RuntimeFunctionTestSuite();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile()) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new RuntimeFunctionTestCase(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteCaseGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteCaseGenerator.java
deleted file mode 100644
index 1b45b41..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteCaseGenerator.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class RuntimeFunctionTestSuiteCaseGenerator extends
-		AbstractHivesterixTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	RuntimeFunctionTestSuiteCaseGenerator(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		writeStringToFile(resultFile, sb);
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteGenerator.java
deleted file mode 100644
index a67f475..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteGenerator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class RuntimeFunctionTestSuiteGenerator extends AbstractTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/runtimefunctionts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/runtimefunctionts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/runtimefunctionts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		RuntimeFunctionTestSuiteGenerator testSuite = new RuntimeFunctionTestSuiteGenerator();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile() && qFile.getName().startsWith("q16_")) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new RuntimeFunctionTestSuiteCaseGenerator(
-						qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/serde/SerDeTest.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/serde/SerDeTest.java
deleted file mode 100644
index b5db432..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/serde/SerDeTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.test.serde;
-
-import java.util.List;
-import java.util.Properties;
-
-import junit.framework.TestCase;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.serde.Constants;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.io.ByteWritable;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-import org.apache.hadoop.hive.serde2.lazy.LazyPrimitive;
-import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.IntWritable;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-
-/**
- * TestLazySimpleSerDe.
- * 
- */
-@SuppressWarnings({ "deprecation", "rawtypes" })
-public class SerDeTest extends TestCase {
-
-	/**
-	 * Test the LazySimpleSerDe class.
-	 */
-	public void testLazySimpleSerDe() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			serDe.initialize(conf, tbl);
-
-			LazySerDe outputSerde = new LazySerDe();
-			outputSerde.initialize(conf, tbl);
-
-			// Data
-			String s = "123\t456\t789\t1000\t5.3\thive and hadoop\t1\tqf";
-
-			byte[] bytes = s.getBytes();
-			Writable bytesWritable = new BytesWritable(bytes);
-
-			// Test
-			// deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-			Object row = serDe.deserialize(bytesWritable); // test my serde
-			StructObjectInspector simpleInspector = (StructObjectInspector) serDe
-					.getObjectInspector();
-			List<Object> fields = simpleInspector
-					.getStructFieldsDataAsList(row);
-			List<? extends StructField> fieldRefs = simpleInspector
-					.getAllStructFieldRefs();
-
-			int i = 0;
-			for (Object field : fields) {
-				BytesWritable fieldWritable = (BytesWritable) outputSerde
-						.serialize(field, fieldRefs.get(i)
-								.getFieldObjectInspector());
-				System.out.print(fieldWritable.getSize() + "|");
-				i++;
-			}
-
-			// Writable output = outputSerde.serialize(row, serDe
-			// .getObjectInspector());
-			// System.out.println(output);
-			//
-			// Object row2 = outputSerde.deserialize(output);
-			// Writable output2 = serDe.serialize(row2, outputSerde
-			// .getObjectInspector());
-			// System.out.println(output2);
-
-			// System.out.println(output);
-			// deserializeAndSerialize(outputSerde, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	private void deserializeAndSerialize(SerDe serDe, Text t, String s,
-			Object[] expectedFieldsData) throws SerDeException {
-		// Get the row structure
-		StructObjectInspector oi = (StructObjectInspector) serDe
-				.getObjectInspector();
-		List<? extends StructField> fieldRefs = oi.getAllStructFieldRefs();
-		assertEquals(8, fieldRefs.size());
-
-		// Deserialize
-		Object row = serDe.deserialize(t);
-		for (int i = 0; i < fieldRefs.size(); i++) {
-			Object fieldData = oi.getStructFieldData(row, fieldRefs.get(i));
-			if (fieldData != null) {
-				fieldData = ((LazyPrimitive) fieldData).getWritableObject();
-			}
-			assertEquals("Field " + i, expectedFieldsData[i], fieldData);
-		}
-		// Serialize
-		assertEquals(Text.class, serDe.getSerializedClass());
-		Text serializedText = (Text) serDe.serialize(row, oi);
-		assertEquals("Serialized data", s, serializedText.toString());
-	}
-
-	private Properties createProperties() {
-		Properties tbl = new Properties();
-
-		// Set the configuration parameters
-		tbl.setProperty(Constants.SERIALIZATION_FORMAT, "9");
-		tbl.setProperty("columns",
-				"abyte,ashort,aint,along,adouble,astring,anullint,anullstring");
-		tbl.setProperty("columns.types",
-				"tinyint:smallint:int:bigint:double:string:int:string");
-		tbl.setProperty(Constants.SERIALIZATION_NULL_FORMAT, "NULL");
-		return tbl;
-	}
-
-	/**
-	 * Test the LazySimpleSerDe class with LastColumnTakesRest option.
-	 */
-	public void testLazySimpleSerDeLastColumnTakesRest() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			tbl.setProperty(Constants.SERIALIZATION_LAST_COLUMN_TAKES_REST,
-					"true");
-			serDe.initialize(conf, tbl);
-
-			// Data
-			Text t = new Text(
-					"123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
-			String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta\tb\t";
-			Object[] expectedFieldsData = { new ByteWritable((byte) 123),
-					new ShortWritable((short) 456), new IntWritable(789),
-					new LongWritable(1000), new DoubleWritable(5.3),
-					new Text("hive and hadoop"), null, new Text("a\tb\t") };
-
-			// Test
-			deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	/**
-	 * Test the LazySimpleSerDe class with extra columns.
-	 */
-	public void testLazySimpleSerDeExtraColumns() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			serDe.initialize(conf, tbl);
-
-			// Data
-			Text t = new Text(
-					"123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
-			String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta";
-			Object[] expectedFieldsData = { new ByteWritable((byte) 123),
-					new ShortWritable((short) 456), new IntWritable(789),
-					new LongWritable(1000), new DoubleWritable(5.3),
-					new Text("hive and hadoop"), null, new Text("a") };
-
-			// Test
-			deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	/**
-	 * Test the LazySimpleSerDe class with missing columns.
-	 */
-	public void testLazySimpleSerDeMissingColumns() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			serDe.initialize(conf, tbl);
-
-			// Data
-			Text t = new Text("123\t456\t789\t1000\t5.3\t");
-			String s = "123\t456\t789\t1000\t5.3\t\tNULL\tNULL";
-			Object[] expectedFieldsData = { new ByteWritable((byte) 123),
-					new ShortWritable((short) 456), new IntWritable(789),
-					new LongWritable(1000), new DoubleWritable(5.3),
-					new Text(""), null, null };
-
-			// Test
-			deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/resources/log4j.properties b/hivesterix/src/test/resources/log4j.properties
deleted file mode 100755
index d5e6004..0000000
--- a/hivesterix/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-# Define some default values that can be overridden by system properties
-hadoop.root.logger=FATAL,console
-hadoop.log.dir=.
-hadoop.log.file=hadoop.log
-
-# Define the root logger to the system property "hadoop.root.logger".
-log4j.rootLogger=${hadoop.root.logger}, EventCounter
-
-# Logging Threshold
-log4j.threshhold=FATAL
-
-#
-# Daily Rolling File Appender
-#
-
-log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
-
-# Rollver at midnight
-log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-
-# 30-day backup
-#log4j.appender.DRFA.MaxBackupIndex=30
-log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
-
-# Pattern format: Date LogLevel LoggerName LogMessage
-log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
-# Debugging Pattern format
-#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
-
-
-#
-# console
-# Add "console" to rootlogger above if you want to use this 
-#
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
-
-#
-# TaskLog Appender
-#
-
-#Default values
-hadoop.tasklog.taskid=null
-hadoop.tasklog.noKeepSplits=4
-hadoop.tasklog.totalLogFileSize=100
-hadoop.tasklog.purgeLogSplits=true
-hadoop.tasklog.logsRetainHours=12
-
-log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
-log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
-log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
-
-log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
-log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
-
-#
-# Rolling File Appender
-#
-
-#log4j.appender.RFA=org.apache.log4j.RollingFileAppender
-#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
-
-# Logfile size and and 30-day backups
-#log4j.appender.RFA.MaxFileSize=1MB
-#log4j.appender.RFA.MaxBackupIndex=30
-
-#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
-#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
-#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
-
-#
-# FSNamesystem Audit logging
-# All audit events are logged at INFO level
-#
-log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=WARN
-
-# Custom Logging levels
-
-#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
-#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
-#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
-
-# Jets3t library
-log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
-
-#
-# Event Counter Appender
-# Sends counts of logging messages at different severity levels to Hadoop Metrics.
-#
-log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter
diff --git a/hivesterix/src/test/resources/logging.properties b/hivesterix/src/test/resources/logging.properties
deleted file mode 100644
index 1cc34e1..0000000
--- a/hivesterix/src/test/resources/logging.properties
+++ /dev/null
@@ -1,65 +0,0 @@
-############################################################
-#  	Default Logging Configuration File
-#
-# You can use a different file by specifying a filename
-# with the java.util.logging.config.file system property.  
-# For example java -Djava.util.logging.config.file=myfile
-############################################################
-
-############################################################
-#  	Global properties
-############################################################
-
-# "handlers" specifies a comma separated list of log Handler 
-# classes.  These handlers will be installed during VM startup.
-# Note that these classes must be on the system classpath.
-# By default we only configure a ConsoleHandler, which will only
-# show messages at the INFO and above levels.
-
-handlers= java.util.logging.ConsoleHandler
-
-# To also add the FileHandler, use the following line instead.
-
-# handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
-
-# Default global logging level.
-# This specifies which kinds of events are logged across
-# all loggers.  For any given facility this global level
-# can be overriden by a facility specific level
-# Note that the ConsoleHandler also has a separate level
-# setting to limit messages printed to the console.
-
-.level= WARNING
-# .level= INFO
-# .level= FINE
-# .level = FINEST
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-# default file output is in user's home directory.
-
-# java.util.logging.FileHandler.pattern = %h/java%u.log
-# java.util.logging.FileHandler.limit = 50000
-# java.util.logging.FileHandler.count = 1
-# java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
-
-# Limit the message that are printed on the console to FINE and above.
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-
-
-############################################################
-# Facility specific properties.
-# Provides extra control for each logger.
-############################################################
-
-# For example, set the com.xyz.foo logger to only log SEVERE
-# messages:
-
-edu.uci.ics.asterix.level = WARNING
-edu.uci.ics.algebricks.level = WARNING
-edu.uci.ics.hyracks.level = WARNING
diff --git a/hivesterix/src/test/resources/optimizerts/hive/conf/hive-default.xml b/hivesterix/src/test/resources/optimizerts/hive/conf/hive-default.xml
deleted file mode 100644
index d5d0149..0000000
--- a/hivesterix/src/test/resources/optimizerts/hive/conf/hive-default.xml
+++ /dev/null
@@ -1,793 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<configuration>
-
-	<!-- Hive Configuration can either be stored in this file or in the hadoop 
-		configuration files -->
-	<!-- that are implied by Hadoop setup variables. -->
-	<!-- Aside from Hadoop setup variables - this file is provided as a convenience 
-		so that Hive -->
-	<!-- users do not have to edit hadoop configuration files (that may be managed 
-		as a centralized -->
-	<!-- resource). -->
-
-	<!-- Hive Execution Parameters -->
-	<property>
-		<name>mapred.reduce.tasks</name>
-		<value>-1</value>
-		<description>The default number of reduce tasks per job. Typically set
-			to a prime close to the number of available hosts. Ignored when
-			mapred.job.tracker is "local". Hadoop set this to 1 by default,
-			whereas hive uses -1 as its default value.
-			By setting this property to
-			-1, Hive will automatically figure out what
-			should be the number of
-			reducers.
-  </description>
-	</property>
-
-	<property>
-		<name>hive.hyracks.host</name>
-		<value>127.0.0.1</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.port</name>
-		<value>13099</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.app</name>
-		<value>hivesterix</value>
-	</property>
-
-
-	<property>
-		<name>hive.hyracks.parrallelism</name>
-		<value>2</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external</name>
-		<value>true</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.sort.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.framesize</name>
-		<value>768</value>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.bytes.per.reducer</name>
-		<value>1000000000</value>
-		<description>size per reducer.The default is 1G, i.e if the input size
-			is 10G, it will use 10 reducers.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.max</name>
-		<value>999</value>
-		<description>max number of reducers will be used. If the one
-			specified
-			in the configuration parameter mapred.reduce.tasks is
-			negative, hive
-			will use this one as the max number of reducers when
-			automatically
-			determine number of reducers.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.scratchdir</name>
-		<value>/tmp/hive-${user.name}</value>
-		<description>Scratch space for Hive jobs</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode</name>
-		<value>false</value>
-		<description>whether hive is running in test mode. If yes, it turns on
-			sampling and prefixes the output tablename</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.prefix</name>
-		<value>test_</value>
-		<description>if hive is running in test mode, prefixes the output
-			table by this string</description>
-	</property>
-
-	<!-- If the input table is not bucketed, the denominator of the tablesample 
-		is determinied by the parameter below -->
-	<!-- For example, the following query: -->
-	<!-- INSERT OVERWRITE TABLE dest -->
-	<!-- SELECT col1 from src -->
-	<!-- would be converted to -->
-	<!-- INSERT OVERWRITE TABLE test_dest -->
-	<!-- SELECT col1 from src TABLESAMPLE (BUCKET 1 out of 32 on rand(1)) -->
-	<property>
-		<name>hive.test.mode.samplefreq</name>
-		<value>32</value>
-		<description>if hive is running in test mode and table is not
-			bucketed, sampling frequency</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.nosamplelist</name>
-		<value></value>
-		<description>if hive is running in test mode, dont sample the above
-			comma seperated list of tables</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.local</name>
-		<value>true</value>
-		<description>controls whether to connect to remove metastore server or
-			open a new metastore server in Hive Client JVM</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionURL</name>
-		<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
-		<description>JDBC connect string for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionDriverName</name>
-		<value>org.apache.derby.jdbc.EmbeddedDriver</value>
-		<description>Driver class name for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.PersistenceManagerFactoryClass</name>
-		<value>org.datanucleus.jdo.JDOPersistenceManagerFactory</value>
-		<description>class implementing the jdo persistence</description>
-	</property>
-
-	<property>
-		<name>datanucleus.connectionPoolingType</name>
-		<value>DBCP</value>
-		<description>Uses a DBCP connection pool for JDBC metastore
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.DetachAllOnCommit</name>
-		<value>true</value>
-		<description>detaches all objects from session so that they can be
-			used after transaction is committed</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.NonTransactionalRead</name>
-		<value>true</value>
-		<description>reads outside of transactions</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionUserName</name>
-		<value>APP</value>
-		<description>username to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionPassword</name>
-		<value>mine</value>
-		<description>password to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateTables</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema </description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateColumns</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema </description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateConstraints</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema </description>
-	</property>
-
-	<property>
-		<name>datanucleus.storeManagerType</name>
-		<value>rdbms</value>
-		<description>metadata store type</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoCreateSchema</name>
-		<value>true</value>
-		<description>creates necessary schema on a startup if one doesn't
-			exist. set this to false, after creating it once</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoStartMechanismMode</name>
-		<value>checked</value>
-		<description>throw exception if metadata tables are incorrect
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.transactionIsolation</name>
-		<value>read-committed</value>
-		<description>Default transaction isolation level for identity
-			generation. </description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2</name>
-		<value>false</value>
-		<description>Use a level 2 cache. Turn this off if metadata is changed
-			independently of hive metastore server</description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2.type</name>
-		<value>SOFT</value>
-		<description>SOFT=soft reference based cache, WEAK=weak reference
-			based cache.</description>
-	</property>
-
-	<property>
-		<name>datanucleus.identifierFactory</name>
-		<value>datanucleus</value>
-		<description>Name of the identifier factory to use when generating
-			table/column names etc. 'datanucleus' is used for backward
-			compatibility</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.warehouse.dir</name>
-		<value>/tmp/hivesterix</value>
-		<description>location of default database for the warehouse
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.connect.retries</name>
-		<value>5</value>
-		<description>Number of retries while opening a connection to metastore
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.rawstore.impl</name>
-		<value>org.apache.hadoop.hive.metastore.ObjectStore</value>
-		<description>Name of the class that implements
-			org.apache.hadoop.hive.metastore.rawstore interface. This class is
-			used to store and retrieval of raw metadata objects such as table,
-			database</description>
-	</property>
-
-	<property>
-		<name>hive.default.fileformat</name>
-		<value>TextFile</value>
-		<description>Default file format for CREATE TABLE statement. Options
-			are TextFile and SequenceFile. Users can explicitly say CREATE TABLE
-			... STORED AS &lt;TEXTFILE|SEQUENCEFILE&gt; to override</description>
-	</property>
-
-	<property>
-		<name>hive.fileformat.check</name>
-		<value>true</value>
-		<description>Whether to check file format or not when loading data
-			files</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr</name>
-		<value>true</value>
-		<description>Whether to use map-side aggregation in Hive Group By
-			queries</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.skewindata</name>
-		<value>false</value>
-		<description>Whether there is skew in data to optimize group by
-			queries</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.mapaggr.checkinterval</name>
-		<value>100000</value>
-		<description>Number of rows after which size of the grouping
-			keys/aggregation classes is performed</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.local.mem</name>
-		<value>0</value>
-		<description>For local mode, memory of the mappers/reducers
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.percentmemory</name>
-		<value>0.5</value>
-		<description>Portion of total memory to be used by map-side grup
-			aggregation hash table</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.min.reduction</name>
-		<value>0.5</value>
-		<description>Hash aggregation will be turned off if the ratio between
-			hash
-			table size and input rows is bigger than this number. Set to 1 to
-			make
-			sure
-			hash aggregation is never turned off.</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.cp</name>
-		<value>true</value>
-		<description>Whether to enable column pruner</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.ppd</name>
-		<value>true</value>
-		<description>Whether to enable predicate pushdown</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.pruner</name>
-		<value>true</value>
-		<description>Whether to enable the new partition pruner which depends
-			on predicate pushdown. If this is disabled,
-			the old partition pruner
-			which is based on AST will be enabled.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.groupby</name>
-		<value>true</value>
-		<description>Whether to enable the bucketed group by from bucketed
-			partitions/tables.</description>
-	</property>
-
-	<property>
-		<name>hive.join.emit.interval</name>
-		<value>1000</value>
-		<description>How many rows in the right-most join operand Hive should
-			buffer before emitting the join result. </description>
-	</property>
-
-	<property>
-		<name>hive.join.cache.size</name>
-		<value>25000</value>
-		<description>How many rows in the joining tables (except the streaming
-			table) should be cached in memory. </description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.bucket.cache.size</name>
-		<value>100</value>
-		<description>How many values in each keys in the map-joined table
-			should be cached in memory. </description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.maxsize</name>
-		<value>100000</value>
-		<description>Maximum # of rows of the small table that can be handled
-			by map-side join. If the size is reached and hive.task.progress is
-			set, a fatal error counter is set and the job will be killed.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.cache.numrows</name>
-		<value>25000</value>
-		<description>How many rows should be cached by jdbm for map join.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.skewjoin</name>
-		<value>false</value>
-		<description>Whether to enable skew join optimization. </description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.key</name>
-		<value>100000</value>
-		<description>Determine if we get a skew key in join. If we see more
-			than the specified number of rows with the same key in join operator,
-			we think the key as a skew join key. </description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.map.tasks</name>
-		<value>10000</value>
-		<description> Determine the number of map task used in the follow up
-			map join job
-			for a skew join. It should be used together with
-			hive.skewjoin.mapjoin.min.split
-			to perform a fine grained control.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.min.split</name>
-		<value>33554432</value>
-		<description> Determine the number of map task at most used in the
-			follow up map join job
-			for a skew join by specifying the minimum split
-			size. It should be used
-			together with
-			hive.skewjoin.mapjoin.map.tasks
-			to perform a fine grained control.</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.mode</name>
-		<value>nonstrict</value>
-		<description>The mode in which the hive operations are being
-			performed. In strict mode, some risky queries are not allowed to run
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.maxerrsize</name>
-		<value>100000</value>
-		<description>Maximum number of bytes a script is allowed to emit to
-			standard error (per map-reduce task). This prevents runaway scripts
-			from filling logs partitions to capacity </description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.allow.partial.consumption</name>
-		<value>false</value>
-		<description> When enabled, this option allows a user script to exit
-			successfully without consuming all the data from the standard input.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.operator.id.env.var</name>
-		<value>HIVE_SCRIPT_OPERATOR_ID</value>
-		<description> Name of the environment variable that holds the unique
-			script operator ID in the user's transform function (the custom
-			mapper/reducer that the user has specified in the query)
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.output</name>
-		<value>false</value>
-		<description> This controls whether the final outputs of a query (to a
-			local/hdfs file or a hive table) is compressed. The compression codec
-			and other options are determined from hadoop config variables
-			mapred.output.compress* </description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.intermediate</name>
-		<value>false</value>
-		<description> This controls whether intermediate files produced by
-			hive between multiple map-reduce jobs are compressed. The compression
-			codec and other options are determined from hadoop config variables
-			mapred.output.compress* </description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel</name>
-		<value>false</value>
-		<description>Whether to execute jobs in parallel</description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel.thread.number</name>
-		<value>8</value>
-		<description>How many jobs at most can be executed in parallel
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.war.file</name>
-		<value>lib\hive-hwi-0.7.0.war</value>
-		<description>This sets the path to the HWI war file, relative to
-			${HIVE_HOME}. </description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.host</name>
-		<value>0.0.0.0</value>
-		<description>This is the host address the Hive Web Interface will
-			listen on</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.port</name>
-		<value>9999</value>
-		<description>This is the port the Hive Web Interface will listen on
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.pre.hooks</name>
-		<value></value>
-		<description>Pre Execute Hook for Tests</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapfiles</name>
-		<value>true</value>
-		<description>Merge small files at the end of a map-only job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapredfiles</name>
-		<value>false</value>
-		<description>Merge small files at the end of a map-reduce job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.heartbeat.interval</name>
-		<value>1000</value>
-		<description>Send a heartbeat after this interval - used by mapjoin
-			and filter operators</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.per.task</name>
-		<value>256000000</value>
-		<description>Size of merged files at the end of the job</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.smallfiles.avgsize</name>
-		<value>16000000</value>
-		<description>When the average output file size of a job is less than
-			this number, Hive will start an additional map-reduce job to merge
-			the output files into bigger files. This is only done for map-only
-			jobs if hive.merge.mapfiles is true, and for map-reduce jobs if
-			hive.merge.mapredfiles is true.</description>
-	</property>
-
-	<property>
-		<name>hive.script.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive Tranform/Map/Reduce Clause should
-			automatically send progress information to TaskTracker to avoid the
-			task getting killed because of inactivity. Hive sends progress
-			information when the script is outputting to stderr. This option
-			removes the need of periodically producing stderr messages, but users
-			should be cautious because this may prevent infinite loops in the
-			scripts to be killed by TaskTracker.  </description>
-	</property>
-
-	<property>
-		<name>hive.script.serde</name>
-		<value>org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe</value>
-		<description>The default serde for trasmitting input data to and
-			reading output data from the user scripts. </description>
-	</property>
-
-	<property>
-		<name>hive.script.recordreader</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordReader</value>
-		<description>The default record reader for reading data from the user
-			scripts. </description>
-	</property>
-
-	<property>
-		<name>hive.script.recordwriter</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordWriter</value>
-		<description>The default record writer for writing data to the user
-			scripts. </description>
-	</property>
-
-	<property>
-		<name>hive.input.format</name>
-		<value>org.apache.hadoop.hive.ql.io.HiveInputFormat</value>
-		<description>The default input format, if it is not specified, the
-			system assigns it. It is set to HiveInputFormat for hadoop versions
-			17, 18 and 19, whereas it is set to CombinedHiveInputFormat for
-			hadoop 20. The user can always overwrite it - if there is a bug in
-			CombinedHiveInputFormat, it can always be manually set to
-			HiveInputFormat. </description>
-	</property>
-
-	<property>
-		<name>hive.udtf.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive should automatically send progress
-			information to TaskTracker when using UDTF's to prevent the task
-			getting killed because of inactivity. Users should be cautious
-			because this may prevent TaskTracker from killing tasks with infinte
-			loops.  </description>
-	</property>
-
-	<property>
-		<name>hive.mapred.reduce.tasks.speculative.execution</name>
-		<value>true</value>
-		<description>Whether speculative execution for reducers should be
-			turned on. </description>
-	</property>
-
-	<property>
-		<name>hive.exec.counters.pull.interval</name>
-		<value>1000</value>
-		<description>The interval with which to poll the JobTracker for the
-			counters the running job. The smaller it is the more load there will
-			be on the jobtracker, the higher it is the less granular the caught
-			will be.</description>
-	</property>
-
-	<property>
-		<name>hive.enforce.bucketing</name>
-		<value>false</value>
-		<description>Whether bucketing is enforced. If true, while inserting
-			into the table, bucketing is enforced. </description>
-	</property>
-
-	<property>
-		<name>hive.enforce.sorting</name>
-		<value>false</value>
-		<description>Whether sorting is enforced. If true, while inserting
-			into the table, sorting is enforced. </description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.connection.url.hook</name>
-		<value></value>
-		<description>Name of the hook to use for retriving the JDO connection
-			URL. If empty, the value in javax.jdo.option.ConnectionURL is used
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.attempts</name>
-		<value>1</value>
-		<description>The number of times to retry a metastore call if there
-			were a connection error</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.interval</name>
-		<value>1000</value>
-		<description>The number of miliseconds between metastore retry
-			attempts</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.min.threads</name>
-		<value>200</value>
-		<description>Minimum number of worker threads in the Thrift server's
-			pool.</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.max.threads</name>
-		<value>100000</value>
-		<description>Maximum number of worker threads in the Thrift server's
-			pool.</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.tcp.keepalive</name>
-		<value>true</value>
-		<description>Whether to enable TCP keepalive for the metastore server.
-			Keepalive will prevent accumulation of half-open connections.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.reducededuplication</name>
-		<value>true</value>
-		<description>Remove extra map-reduce jobs if the data is already
-			clustered by the same key which needs to be used again. This should
-			always be set to true. Since it is a new feature, it has been made
-			configurable.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition</name>
-		<value>false</value>
-		<description>Whether or not to allow dynamic partitions in DML/DDL.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition.mode</name>
-		<value>strict</value>
-		<description>In strict mode, the user must specify at least one static
-			partition in case the user accidentally overwrites all partitions.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions</name>
-		<value>1000</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in total.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions.pernode</name>
-		<value>100</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in each mapper/reducer node.</description>
-	</property>
-
-	<property>
-		<name>hive.default.partition.name</name>
-		<value>__HIVE_DEFAULT_PARTITION__</value>
-		<description>The default partition name in case the dynamic partition
-			column value is null/empty string or anyother values that cannot be
-			escaped. This value must not contain any special character used in
-			HDFS URI (e.g., ':', '%', '/' etc). The user has to be aware that the
-			dynamic partition value should not contain this value to avoid
-			confusions.</description>
-	</property>
-
-	<property>
-		<name>fs.har.impl</name>
-		<value>org.apache.hadoop.hive.shims.HiveHarFileSystem</value>
-		<description>The implementation for accessing Hadoop Archives. Note
-			that this won't be applicable to Hadoop vers less than 0.20
-		</description>
-	</property>
-
-	<property>
-		<name>hive.archive.enabled</name>
-		<value>false</value>
-		<description>Whether archiving operations are permitted</description>
-	</property>
-
-	<property>
-		<name>hive.archive.har.parentdir.settable</name>
-		<value>false</value>
-		<description>In new Hadoop versions, the parent directory must be set
-			while
-			creating a HAR. Because this functionality is hard to detect
-			with just
-			version
-			numbers, this conf var needs to be set manually.
-		</description>
-	</property>
-
-	<!-- HBase Storage Handler Parameters -->
-
-	<property>
-		<name>hive.hbase.wal.enabled</name>
-		<value>true</value>
-		<description>Whether writes to HBase should be forced to the
-			write-ahead log. Disabling this improves HBase write performance at
-			the risk of lost writes in case of a crash.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.drop.ignorenonexistent</name>
-		<value>true</value>
-		<description>drop table always works.</description>
-	</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/optimizerts/ignore.txt b/hivesterix/src/test/resources/optimizerts/ignore.txt
deleted file mode 100644
index e69de29..0000000
--- a/hivesterix/src/test/resources/optimizerts/ignore.txt
+++ /dev/null
diff --git a/hivesterix/src/test/resources/optimizerts/queries/h11_share_scan.hive b/hivesterix/src/test/resources/optimizerts/queries/h11_share_scan.hive
deleted file mode 100644
index a5c46c6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/h11_share_scan.hive
+++ /dev/null
@@ -1,10 +0,0 @@
--- union case: both subqueries are map jobs on same input, followed by filesink
-DROP TABLE IF EXISTS src;
-
-CREATE TABLE src(key int, value int);
-CREATE TABLE src1(key int, value int);
-CREATE TABLE src2(key int);
-
-FROM src
-INSERT overwrite table src1 select * where key < 5
-INSERT overwrite table src2 select key where key > 10;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/h12_select_struct.hive b/hivesterix/src/test/resources/optimizerts/queries/h12_select_struct.hive
deleted file mode 100644
index 24ca265..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/h12_select_struct.hive
+++ /dev/null
@@ -1,6 +0,0 @@
--- union case: both subqueries are map jobs on same input, followed by filesink
-DROP TABLE IF EXISTS src;
-
-CREATE TABLE src(key int, value struct<v1:int, v2:int>);
-
-select value from src;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q10_returned_item.hive b/hivesterix/src/test/resources/optimizerts/queries/q10_returned_item.hive
deleted file mode 100644
index 3f1214a..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q10_returned_item.hive
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q10_returned_item;
-
--- create the tables and load the data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q10_returned_item (c_custkey int, c_name string, revenue double, c_acctbal string, n_name string, c_address string, c_phone string, c_comment string);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q10_returned_item
-select 
-  c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) as revenue, 
-  c_acctbal, n_name, c_address, c_phone, c_comment
-from
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey and o.o_orderdate >= '1993-10-01' and o.o_orderdate < '1994-01-01'
-  join nation n 
-  on 
-    c.c_nationkey = n.n_nationkey
-  join lineitem l 
-  on 
-    l.l_orderkey = o.o_orderkey and l.l_returnflag = 'R'
-group by c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment 
-order by revenue desc 
-limit 20;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q11_important_stock.hive b/hivesterix/src/test/resources/optimizerts/queries/q11_important_stock.hive
deleted file mode 100644
index 8550b72..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q11_important_stock.hive
+++ /dev/null
@@ -1,47 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q11_important_stock;
-DROP TABLE IF EXISTS q11_part_tmp;
-DROP TABLE IF EXISTS q11_sum_tmp;
-
--- create tables and load data
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-
--- create the target table
-create table q11_important_stock(ps_partkey INT, value DOUBLE);
-create table q11_part_tmp(ps_partkey int, part_value double);
-create table q11_sum_tmp(total_value double);
-
--- the query
-insert overwrite table q11_part_tmp
-select 
-  ps_partkey, sum(ps_supplycost * ps_availqty) as part_value 
-from
-  nation n join supplier s 
-  on 
-    s.s_nationkey = n.n_nationkey and n.n_name = 'GERMANY'
-  join partsupp ps 
-  on 
-    ps.ps_suppkey = s.s_suppkey
-group by ps_partkey;
-
-insert overwrite table q11_sum_tmp
-select 
-  sum(part_value) as total_value
-from 
-  q11_part_tmp;
-
-insert overwrite table q11_important_stock
-select 
-  ps_partkey, part_value as value
-from
-  (
-    select ps_partkey, part_value, total_value
-    from q11_part_tmp join q11_sum_tmp
-  ) a
-where part_value > total_value * 0.0001
-order by value desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q12_shipping.hive b/hivesterix/src/test/resources/optimizerts/queries/q12_shipping.hive
deleted file mode 100644
index 062f7b9..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q12_shipping.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q12_shipping;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q12_shipping(l_shipmode string, high_line_count double, low_line_count double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q12_shipping
-select 
-  l_shipmode,
-  sum(case
-    when o_orderpriority ='1-URGENT'
-         or o_orderpriority ='2-HIGH'
-    then 1
-    else 0
-end
-  ) as high_line_count,
-  sum(case
-    when o_orderpriority <> '1-URGENT'
-         and o_orderpriority <> '2-HIGH'
-    then 1
-    else 0
-end
-  ) as low_line_count
-from
-  orders o join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey and l.l_commitdate < l.l_receiptdate
-and l.l_shipdate < l.l_commitdate and l.l_receiptdate >= '1994-01-01' 
-and l.l_receiptdate < '1995-01-01'
-where 
-  l.l_shipmode = 'MAIL' or l.l_shipmode = 'SHIP'
-group by l_shipmode
-order by l_shipmode;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q13_customer_distribution.hive b/hivesterix/src/test/resources/optimizerts/queries/q13_customer_distribution.hive
deleted file mode 100644
index a799008..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q13_customer_distribution.hive
+++ /dev/null
@@ -1,27 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q13_customer_distribution;
-
--- create the tables and load the data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q13_customer_distribution (c_count int, custdist int);
-
--- the query
-insert overwrite table q13_customer_distribution
-select 
-  c_count, count(1) as custdist
-from 
-  (select 
-     c_custkey, count(o_orderkey) as c_count
-   from 
-     customer c left outer join orders o 
-     on 
-       c.c_custkey = o.o_custkey and not o.o_comment like '%special%requests%'
-   group by c_custkey
-   ) c_orders
-group by c_count
-order by custdist desc, c_count desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q14_promotion_effect.hive b/hivesterix/src/test/resources/optimizerts/queries/q14_promotion_effect.hive
deleted file mode 100644
index 988f400..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q14_promotion_effect.hive
+++ /dev/null
@@ -1,28 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q14_promotion_effect;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q14_promotion_effect(promo_revenue double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q14_promotion_effect
-select 
-  100.00 * sum(case
-               when p_type like 'PROMO%'
-               then l_extendedprice*(1-l_discount)
-               else 0.0
-               end
-  ) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue
-from 
-  part p join lineitem l 
-  on 
-    l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01';
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q15_top_supplier.hive b/hivesterix/src/test/resources/optimizerts/queries/q15_top_supplier.hive
deleted file mode 100644
index 04064ed..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q15_top_supplier.hive
+++ /dev/null
@@ -1,45 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS revenue;
-DROP TABLE IF EXISTS max_revenue;
-DROP TABLE IF EXISTS q15_top_supplier;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create result tables
-create table revenue(supplier_no int, total_revenue double); 
-create table max_revenue(max_revenue double); 
-create table q15_top_supplier(s_suppkey int, s_name string, s_address string, s_phone string, total_revenue double);
-
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table revenue
-select 
-  l_suppkey as supplier_no, sum(l_extendedprice * (1 - l_discount)) as total_revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1996-01-01' and l_shipdate < '1996-04-01'
-group by l_suppkey;
-
-insert overwrite table max_revenue
-select 
-  max(total_revenue)
-from 
-  revenue;
-
-insert overwrite table q15_top_supplier
-select 
-  s_suppkey, s_name, s_address, s_phone, total_revenue
-from supplier s join revenue r 
-  on 
-    s.s_suppkey = r.supplier_no
-  join max_revenue m 
-  on 
-    r.total_revenue = m.max_revenue
-order by s_suppkey;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q16_parts_supplier_relationship.hive b/hivesterix/src/test/resources/optimizerts/queries/q16_parts_supplier_relationship.hive
deleted file mode 100644
index 971ef99..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q16_parts_supplier_relationship.hive
+++ /dev/null
@@ -1,53 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS q16_parts_supplier_relationship;
-DROP TABLE IF EXISTS q16_tmp;
-DROP TABLE IF EXISTS supplier_tmp;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create the result table
-create table q16_parts_supplier_relationship(p_brand string, p_type string, p_size int, supplier_cnt int);
-create table q16_tmp(p_brand string, p_type string, p_size int, ps_suppkey int);
-create table supplier_tmp(s_suppkey int);
-
--- the query
-insert overwrite table supplier_tmp
-select 
-  s_suppkey
-from 
-  supplier
-where 
-  not s_comment like '%Customer%Complaints%';
-
-insert overwrite table q16_tmp
-select 
-  p_brand, p_type, p_size, ps_suppkey
-from 
-  partsupp ps join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_brand <> 'Brand#45' 
-    and not p.p_type like 'MEDIUM POLISHED%'
-  join supplier_tmp s 
-  on 
-    ps.ps_suppkey = s.s_suppkey;
-
-insert overwrite table q16_parts_supplier_relationship
-select 
-  p_brand, p_type, p_size, count(distinct ps_suppkey) as supplier_cnt
-from 
-  (select 
-     * 
-   from
-     q16_tmp 
-   where p_size = 49 or p_size = 14 or p_size = 23 or
-         p_size = 45 or p_size = 19 or p_size = 3 or
-         p_size = 36 or p_size = 9
-) q16_all
-group by p_brand, p_type, p_size
-order by supplier_cnt desc, p_brand, p_type, p_size;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q17_small_quantity_order_revenue.hive b/hivesterix/src/test/resources/optimizerts/queries/q17_small_quantity_order_revenue.hive
deleted file mode 100644
index 65291cd..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q17_small_quantity_order_revenue.hive
+++ /dev/null
@@ -1,38 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q17_small_quantity_order_revenue;
-DROP TABLE IF EXISTS lineitem_tmp;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q17_small_quantity_order_revenue (avg_yearly double);
-create table lineitem_tmp (t_partkey int, t_avg_quantity double);
-
--- the query
-insert overwrite table lineitem_tmp
-select 
-  l_partkey as t_partkey, 0.2 * avg(l_quantity) as t_avg_quantity
-from 
-  lineitem
-group by l_partkey;
-
-insert overwrite table q17_small_quantity_order_revenue
-select
-  sum(l_extendedprice) / 7.0 as avg_yearly
-from
-  (select l_quantity, l_extendedprice, t_avg_quantity from
-   lineitem_tmp t join
-     (select
-        l_quantity, l_partkey, l_extendedprice
-      from
-        part p join lineitem l
-        on
-          p.p_partkey = l.l_partkey
-          and p.p_brand = 'Brand#23'
-          and p.p_container = 'MED BOX'
-      ) l1 on l1.l_partkey = t.t_partkey
-   ) a
-where l_quantity < t_avg_quantity;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q18_large_volume_customer.hive b/hivesterix/src/test/resources/optimizerts/queries/q18_large_volume_customer.hive
deleted file mode 100644
index 76d0475..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q18_large_volume_customer.hive
+++ /dev/null
@@ -1,43 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q18_tmp;
-DROP TABLE IF EXISTS q18_large_volume_customer;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the result tables
-create table q18_tmp(l_orderkey int, t_sum_quantity double);
-create table q18_large_volume_customer(c_name string, c_custkey int, o_orderkey int, o_orderdate string, o_totalprice double, sum_quantity double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1164000000;
-
--- the query
-insert overwrite table q18_tmp
-select 
-  l_orderkey, sum(l_quantity) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q18_large_volume_customer
-select 
-  c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice,sum(l_quantity)
-from 
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey
-  join q18_tmp t 
-  on 
-    o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 300
-  join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey
-group by c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice
-order by o_totalprice desc,o_orderdate
-limit 100;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q19_discounted_revenue.hive b/hivesterix/src/test/resources/optimizerts/queries/q19_discounted_revenue.hive
deleted file mode 100644
index fd330cd..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q19_discounted_revenue.hive
+++ /dev/null
@@ -1,49 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q19_discounted_revenue;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q19_discounted_revenue(revenue double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q19_discounted_revenue
-select
-  sum(l_extendedprice * (1 - l_discount) ) as revenue
-from
-  	part p join lineitem l
-  on 
-    p.p_partkey = l.l_partkey    
-where
-  (
-    p_brand = 'Brand#12'
-	and p_container REGEXP 'SM CASE||SM BOX||SM PACK||SM PKG'
-	and l_quantity >= 1 and l_quantity <= 11
-	and p_size >= 1 and p_size <= 5
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  ) 
-  or 
-  (
-    p_brand = 'Brand#23'
-	and p_container REGEXP 'MED BAG||MED BOX||MED PKG||MED PACK'
-	and l_quantity >= 10 and l_quantity <= 20
-	and p_size >= 1 and p_size <= 10
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  )
-  or
-  (
-	p_brand = 'Brand#34'
-	and p_container REGEXP 'LG CASE||LG BOX||LG PACK||LG PKG'
-	and l_quantity >= 20 and l_quantity <= 30
-	and p_size >= 1 and p_size <= 15
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  );
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q1_pricing_summary_report.hive b/hivesterix/src/test/resources/optimizerts/queries/q1_pricing_summary_report.hive
deleted file mode 100644
index a002068..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q1_pricing_summary_report.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q1_pricing_summary_report;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q1_pricing_summary_report ( L_RETURNFLAG STRING, L_LINESTATUS STRING, SUM_QTY DOUBLE, SUM_BASE_PRICE DOUBLE, SUM_DISC_PRICE DOUBLE, SUM_CHARGE DOUBLE, AVE_QTY DOUBLE, AVE_PRICE DOUBLE, AVE_DISC DOUBLE, COUNT_ORDER INT);
-
-set mapred.min.split.size=536870912;
-
--- the query
-INSERT OVERWRITE TABLE q1_pricing_summary_report 
-SELECT 
-  L_RETURNFLAG, L_LINESTATUS, SUM(L_QUANTITY), SUM(L_EXTENDEDPRICE), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)), AVG(L_QUANTITY), AVG(L_EXTENDEDPRICE), AVG(L_DISCOUNT), COUNT(1) 
-FROM 
-  lineitem 
-WHERE 
-  L_SHIPDATE<='1998-09-02' 
-GROUP BY L_RETURNFLAG, L_LINESTATUS 
-ORDER BY L_RETURNFLAG, L_LINESTATUS;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q20_potential_part_promotion.hive b/hivesterix/src/test/resources/optimizerts/queries/q20_potential_part_promotion.hive
deleted file mode 100644
index 63297e6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q20_potential_part_promotion.hive
+++ /dev/null
@@ -1,78 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q20_tmp1;
-DROP TABLE IF EXISTS q20_tmp2;
-DROP TABLE IF EXISTS q20_tmp3;
-DROP TABLE IF EXISTS q20_tmp4;
-DROP TABLE IF EXISTS q20_potential_part_promotion;
-
--- create tables and load data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-
--- create the target table
-create table q20_tmp1(p_partkey int);
-create table q20_tmp2(l_partkey int, l_suppkey int, sum_quantity double);
-create table q20_tmp3(ps_suppkey int, ps_availqty int, sum_quantity double);
-create table q20_tmp4(ps_suppkey int);
-create table q20_potential_part_promotion(s_name string, s_address string);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q20_tmp1
-select distinct p_partkey
-from
-  part 
-where 
-  p_name like 'forest%';
-
-insert overwrite table q20_tmp2
-select 
-  l_partkey, l_suppkey, 0.5 * sum(l_quantity)
-from
-  lineitem
-where
-  l_shipdate >= '1994-01-01'
-  and l_shipdate < '1995-01-01'
-group by l_partkey, l_suppkey;
-
-insert overwrite table q20_tmp3
-select 
-  ps_suppkey, ps_availqty, sum_quantity
-from  
-  partsupp ps join q20_tmp1 t1 
-  on 
-    ps.ps_partkey = t1.p_partkey
-  join q20_tmp2 t2 
-  on 
-    ps.ps_partkey = t2.l_partkey and ps.ps_suppkey = t2.l_suppkey;
-
-insert overwrite table q20_tmp4
-select 
-  ps_suppkey
-from 
-  q20_tmp3
-where 
-  ps_availqty > sum_quantity
-group by ps_suppkey;
-
-insert overwrite table q20_potential_part_promotion
-select 
-  s_name, s_address
-from 
-  supplier s join nation n
-  on
-    s.s_nationkey = n.n_nationkey
-    and n.n_name = 'CANADA'
-  join q20_tmp4 t4
-  on 
-    s.s_suppkey = t4.ps_suppkey
-order by s_name;
-
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q21_suppliers_who_kept_orders_waiting.hive b/hivesterix/src/test/resources/optimizerts/queries/q21_suppliers_who_kept_orders_waiting.hive
deleted file mode 100644
index a467f60..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q21_suppliers_who_kept_orders_waiting.hive
+++ /dev/null
@@ -1,74 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q21_tmp1;
-DROP TABLE IF EXISTS q21_tmp2;
-DROP TABLE IF EXISTS q21_suppliers_who_kept_orders_waiting;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create target tables
-create table q21_tmp1(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_tmp2(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_suppliers_who_kept_orders_waiting(s_name string, numwait int);
-
--- the query
-insert overwrite table q21_tmp1
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q21_tmp2
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-where
-  l_receiptdate > l_commitdate
-group by l_orderkey;
-
-insert overwrite table q21_suppliers_who_kept_orders_waiting
-select
-  s_name, count(1) as numwait
-from
-  (select s_name from
-(select s_name, t2.l_orderkey, l_suppkey, count_suppkey, max_suppkey 
- from q21_tmp2 t2 right outer join
-      (select s_name, l_orderkey, l_suppkey from
-         (select s_name, t1.l_orderkey, l_suppkey, count_suppkey, max_suppkey
-          from
-            q21_tmp1 t1 join
-            (select s_name, l_orderkey, l_suppkey
-             from 
-               orders o join
-               (select s_name, l_orderkey, l_suppkey
-                from
-                  nation n join supplier s
-                  on
-                    s.s_nationkey = n.n_nationkey
-                    and n.n_name = 'SAUDI ARABIA'
-                  join lineitem l
-                  on
-                    s.s_suppkey = l.l_suppkey
-                where
-                  l.l_receiptdate > l.l_commitdate
-                ) l1 on o.o_orderkey = l1.l_orderkey and o.o_orderstatus = 'F'
-             ) l2 on l2.l_orderkey = t1.l_orderkey
-          ) a
-          where
-           (count_suppkey > 1) or ((count_suppkey=1) and (l_suppkey <> max_suppkey))
-       ) l3 on l3.l_orderkey = t2.l_orderkey
-    ) b
-    where
-     (count_suppkey is null) or ((count_suppkey=1) and (l_suppkey = max_suppkey))
-  )c
-group by s_name
-order by numwait desc, s_name
-limit 100;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q22_global_sales_opportunity.hive b/hivesterix/src/test/resources/optimizerts/queries/q22_global_sales_opportunity.hive
deleted file mode 100644
index a7d6c72..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q22_global_sales_opportunity.hive
+++ /dev/null
@@ -1,70 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q22_customer_tmp;
-DROP TABLE IF EXISTS q22_customer_tmp1;
-DROP TABLE IF EXISTS q22_orders_tmp;
-DROP TABLE IF EXISTS q22_global_sales_opportunity;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create target tables
-create table q22_customer_tmp(c_acctbal double, c_custkey int, cntrycode string);
-create table q22_customer_tmp1(avg_acctbal double);
-create table q22_orders_tmp(o_custkey int);
-create table q22_global_sales_opportunity(cntrycode string, numcust int, totacctbal double);
-
--- the query
-insert overwrite table q22_customer_tmp
-select 
-  c_acctbal, c_custkey, substr(c_phone, 1, 2) as cntrycode
-from 
-  customer
-where 
-  substr(c_phone, 1, 2) = '13' or
-  substr(c_phone, 1, 2) = '31' or
-  substr(c_phone, 1, 2) = '23' or
-  substr(c_phone, 1, 2) = '29' or
-  substr(c_phone, 1, 2) = '30' or
-  substr(c_phone, 1, 2) = '18' or
-  substr(c_phone, 1, 2) = '17';
- 
-insert overwrite table q22_customer_tmp1
-select
-  avg(c_acctbal)
-from
-  q22_customer_tmp
-where
-  c_acctbal > 0.00;
-
-insert overwrite table q22_orders_tmp
-select 
-  o_custkey 
-from 
-  orders
-group by 
-  o_custkey;
-
-insert overwrite table q22_global_sales_opportunity
-select
-  cntrycode, count(1) as numcust, sum(c_acctbal) as totacctbal
-from
-(
-  select cntrycode, c_acctbal, avg_acctbal from
-  q22_customer_tmp1 ct1 join
-  (
-    select cntrycode, c_acctbal from
-      q22_orders_tmp ot 
-      right outer join q22_customer_tmp ct 
-      on
-        ct.c_custkey = ot.o_custkey
-    where
-      o_custkey is null
-  ) ct2
-) a
-where
-  c_acctbal > avg_acctbal
-group by cntrycode
-order by cntrycode;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q2_minimum_cost_supplier.hive b/hivesterix/src/test/resources/optimizerts/queries/q2_minimum_cost_supplier.hive
deleted file mode 100644
index 061c5e7..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q2_minimum_cost_supplier.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp1;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp2;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create result tables
-create table q2_minimum_cost_supplier_tmp1 (s_acctbal double, s_name string, n_name string, p_partkey int, ps_supplycost double, p_mfgr string, s_address string, s_phone string, s_comment string);
-create table q2_minimum_cost_supplier_tmp2 (p_partkey int, ps_min_supplycost double);
-create table q2_minimum_cost_supplier (s_acctbal double, s_name string, n_name string, p_partkey int, p_mfgr string, s_address string, s_phone string, s_comment string);
-
--- the query
-insert overwrite table q2_minimum_cost_supplier_tmp1 
-select 
-  s.s_acctbal, s.s_name, n.n_name, p.p_partkey, ps.ps_supplycost, p.p_mfgr, s.s_address, s.s_phone, s.s_comment 
-from 
-  nation n join region r 
-  on 
-    n.n_regionkey = r.r_regionkey and r.r_name = 'EUROPE' 
-  join supplier s 
-  on 
-s.s_nationkey = n.n_nationkey 
-  join partsupp ps 
-  on  
-s.s_suppkey = ps.ps_suppkey 
-  join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_size = 15 and p.p_type like '%BRASS' ;
-
-insert overwrite table q2_minimum_cost_supplier_tmp2 
-select 
-  p_partkey, min(ps_supplycost) 
-from  
-  q2_minimum_cost_supplier_tmp1 
-group by p_partkey;
-
-insert overwrite table q2_minimum_cost_supplier 
-select 
-  t1.s_acctbal, t1.s_name, t1.n_name, t1.p_partkey, t1.p_mfgr, t1.s_address, t1.s_phone, t1.s_comment 
-from 
-  q2_minimum_cost_supplier_tmp1 t1 join q2_minimum_cost_supplier_tmp2 t2 
-on 
-  t1.p_partkey = t2.p_partkey and t1.ps_supplycost=t2.ps_min_supplycost 
-order by s_acctbal desc, n_name, s_name, p_partkey 
-limit 100;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q3_shipping_priority.hive b/hivesterix/src/test/resources/optimizerts/queries/q3_shipping_priority.hive
deleted file mode 100644
index 0049eb3..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q3_shipping_priority.hive
+++ /dev/null
@@ -1,29 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q3_shipping_priority;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the target table
-create table q3_shipping_priority (l_orderkey int, revenue double, o_orderdate string, o_shippriority int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-Insert overwrite table q3_shipping_priority 
-select 
-  l_orderkey, (l_extendedprice*(1-l_discount)) as revenue, o_orderdate, o_shippriority 
-from 
-  customer c join orders o 
-    on c.c_mktsegment = 'BUILDING' and c.c_custkey = o.o_custkey 
-  join lineitem l 
-    on l.l_orderkey = o.o_orderkey and l.l_linenumber<3
--- group by l_orderkey, o_orderdate, o_shippriority 
-order by revenue desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q4_order_priority.hive b/hivesterix/src/test/resources/optimizerts/queries/q4_order_priority.hive
deleted file mode 100644
index aa828e9..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q4_order_priority.hive
+++ /dev/null
@@ -1,30 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q4_order_priority_tmp;
-DROP TABLE IF EXISTS q4_order_priority;
-
--- create tables and load data
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q4_order_priority_tmp (O_ORDERKEY INT);
-CREATE TABLE q4_order_priority (O_ORDERPRIORITY STRING, ORDER_COUNT INT);
-
-set mapred.min.split.size=536870912;
--- the query
-INSERT OVERWRITE TABLE q4_order_priority_tmp 
-select 
-  DISTINCT l_orderkey 
-from 
-  lineitem 
-where 
-  l_commitdate < l_receiptdate;
-INSERT OVERWRITE TABLE q4_order_priority 
-select o_orderpriority, count(1) as order_count 
-from 
-  orders o join q4_order_priority_tmp t 
-  on 
-o.o_orderkey = t.o_orderkey and o.o_orderdate >= '1993-07-01' and o.o_orderdate < '1993-10-01' 
-group by o_orderpriority 
-order by o_orderpriority;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q5_local_supplier_volume.hive b/hivesterix/src/test/resources/optimizerts/queries/q5_local_supplier_volume.hive
deleted file mode 100644
index a975ce1..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q5_local_supplier_volume.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q5_local_supplier_volume;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the target table
-create table q5_local_supplier_volume (N_NAME STRING, REVENUE DOUBLE);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q5_local_supplier_volume 
-select 
-  n_name, sum(l_extendedprice * (1 - l_discount)) as revenue 
-from
-  customer c join
-    ( select n_name, l_extendedprice, l_discount, s_nationkey, o_custkey from orders o join
-      ( select n_name, l_extendedprice, l_discount, l_orderkey, s_nationkey from lineitem l join
-        ( select n_name, s_suppkey, s_nationkey from supplier s join
-          ( select n_name, n_nationkey 
-            from nation n join region r 
-            on n.n_regionkey = r.r_regionkey and r.r_name = 'ASIA'
-          ) n1 on s.s_nationkey = n1.n_nationkey
-        ) s1 on l.l_suppkey = s1.s_suppkey
-      ) l1 on l1.l_orderkey = o.o_orderkey and o.o_orderdate >= '1994-01-01' 
-              and o.o_orderdate < '1995-01-01'
-) o1 
-on c.c_nationkey = o1.s_nationkey and c.c_custkey = o1.o_custkey
-group by n_name 
-order by revenue desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q6_forecast_revenue_change.hive b/hivesterix/src/test/resources/optimizerts/queries/q6_forecast_revenue_change.hive
deleted file mode 100644
index d8cb9b9..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q6_forecast_revenue_change.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q6_forecast_revenue_change;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-create table q6_forecast_revenue_change (revenue double);
-
--- the query
-insert overwrite table q6_forecast_revenue_change 
-select 
-  sum(l_extendedprice*l_discount) as revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1994-01-01'
-  and l_shipdate < '1995-01-01'
-  and l_discount >= 0.05 and l_discount <= 0.07
-  and l_quantity < 24;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q7_volume_shipping.hive b/hivesterix/src/test/resources/optimizerts/queries/q7_volume_shipping.hive
deleted file mode 100644
index 3dfb22a..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q7_volume_shipping.hive
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q7_volume_shipping;
-DROP TABLE IF EXISTS q7_volume_shipping_tmp;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table q7_volume_shipping (supp_nation string, cust_nation string, l_year int, revenue double);
-create table q7_volume_shipping_tmp(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q7_volume_shipping_tmp
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n1.n_name = 'FRANCE' and n2.n_name = 'GERMANY'
-    UNION ALL
-select 
-  n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey, 
-  n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n2.n_name = 'FRANCE' and n1.n_name = 'GERMANY'
-) a;
-
-insert overwrite table q7_volume_shipping 
-select 
-  supp_nation, cust_nation, l_year, sum(volume) as revenue
-from 
-  (
-    select
-      supp_nation, cust_nation, year(l_shipdate) as l_year, 
-      l_extendedprice * (1 - l_discount) as volume
-    from
-      q7_volume_shipping_tmp t join
-        (select l_shipdate, l_extendedprice, l_discount, c_nationkey, s_nationkey 
-         from supplier s join
-           (select l_shipdate, l_extendedprice, l_discount, l_suppkey, c_nationkey 
-            from customer c join
-              (select l_shipdate, l_extendedprice, l_discount, l_suppkey, o_custkey 
-               from orders o join lineitem l 
-               on 
-                 o.o_orderkey = l.l_orderkey and l.l_shipdate >= '1995-01-01' 
-                 and l.l_shipdate <= '1996-12-31'
-               ) l1 on c.c_custkey = l1.o_custkey
-            ) l2 on s.s_suppkey = l2.l_suppkey
-         ) l3 on l3.c_nationkey = t.c_nationkey and l3.s_nationkey = t.s_nationkey
-   ) shipping
-group by supp_nation, cust_nation, l_year
-order by supp_nation, cust_nation, l_year;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q8_national_market_share.hive b/hivesterix/src/test/resources/optimizerts/queries/q8_national_market_share.hive
deleted file mode 100644
index 5e7baaa..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q8_national_market_share.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q8_national_market_share;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the result table
-create table q8_national_market_share(o_year string, mkt_share double);
-
--- the query
-insert overwrite table q8_national_market_share 
-select 
-  o_year, sum(case when nation = 'BRAZIL' then volume else 0.0 end) / sum(volume) as mkt_share
-from 
-  (
-select 
-  year(o_orderdate) as o_year, l_extendedprice * (1-l_discount) as volume, 
-  n2.n_name as nation
-    from
-      nation n2 join
-        (select o_orderdate, l_discount, l_extendedprice, s_nationkey 
-         from supplier s join
-          (select o_orderdate, l_discount, l_extendedprice, l_suppkey 
-           from part p join
-             (select o_orderdate, l_partkey, l_discount, l_extendedprice, l_suppkey 
-              from 
-                (select o_orderdate, o_orderkey 
-                 from orders o join
-                   (select c.c_custkey 
-                    from customer c join
-                      (select n1.n_nationkey 
-                       from nation n1 join region r
-                       on n1.n_regionkey = r.r_regionkey and r.r_name = 'AMERICA'
-                       ) n11 on c.c_nationkey = n11.n_nationkey
-                    ) c1 on c1.c_custkey = o.o_custkey
-                 ) o1 join lineitem l on l.l_orderkey = o1.o_orderkey and o1.o_orderdate >= '1995-01-01' 
-                         and o1.o_orderdate < '1996-12-31'
-              ) l1 on p.p_partkey = l1.l_partkey and p.p_type = 'ECONOMY ANODIZED STEEL'
-           ) p1 on s.s_suppkey = p1.l_suppkey
-        ) s1 on s1.s_nationkey = n2.n_nationkey
-  ) all_nation
-group by o_year
-order by o_year;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q9_product_type_profit.hive b/hivesterix/src/test/resources/optimizerts/queries/q9_product_type_profit.hive
deleted file mode 100644
index 586779c..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q9_product_type_profit.hive
+++ /dev/null
@@ -1,51 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q9_product_type_profit;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q9_product_type_profit (nation string, o_year string, sum_profit double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q9_product_type_profit
-select 
-  nation, o_year, sum(amount) as sum_profit
-from 
-  (
-select 
-  n_name as nation, year(o_orderdate) as o_year, 
-  l_extendedprice * (1 - l_discount) -  ps_supplycost * l_quantity as amount
-    from
-      orders o join
-      (select l_extendedprice, l_discount, l_quantity, l_orderkey, n_name, ps_supplycost 
-       from part p join
-         (select l_extendedprice, l_discount, l_quantity, l_partkey, l_orderkey, 
-                 n_name, ps_supplycost 
-          from partsupp ps join
-            (select l_suppkey, l_extendedprice, l_discount, l_quantity, l_partkey, 
-                    l_orderkey, n_name 
-             from
-               (select s_suppkey, n_name 
-                from nation n join supplier s on n.n_nationkey = s.s_nationkey
-               ) s1 join lineitem l on s1.s_suppkey = l.l_suppkey
-            ) l1 on ps.ps_suppkey = l1.l_suppkey and ps.ps_partkey = l1.l_partkey
-         ) l2 on p.p_name like '%green%' and p.p_partkey = l2.l_partkey
-     ) l3 on o.o_orderkey = l3.l_orderkey
-  )profit
-group by nation, o_year
-order by nation, o_year desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u10_nestedloop_join.hive b/hivesterix/src/test/resources/optimizerts/queries/u10_nestedloop_join.hive
deleted file mode 100644
index ce94ac6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u10_nestedloop_join.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS u10_nestedloop_join;
-
--- create tables and load data
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table u10_nestedloop_join(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
--- the query
-insert overwrite table u10_nestedloop_join
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 where n1.n_nationkey > n2.n_nationkey
-) a;
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u1_group_by.hive b/hivesterix/src/test/resources/optimizerts/queries/u1_group_by.hive
deleted file mode 100644
index 1d5c312..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u1_group_by.hive
+++ /dev/null
@@ -1,12 +0,0 @@
-drop table IF EXISTS lineitem;
-
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, 
-L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, 
-L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, 
-L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS 
-TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
-select * from (select sum(abs(L_QUANTITY)), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX))
-FROM lineitem WHERE L_SHIPDATE<='1998-09-02'  GROUP BY L_RETURNFLAG) T;
-
-drop table lineitem;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u2_select-project.hive b/hivesterix/src/test/resources/optimizerts/queries/u2_select-project.hive
deleted file mode 100644
index 1cf0c36..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u2_select-project.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-select (2*s_suppkey), s_address, s_nationkey,  s_name   FROM supplier where S_SUPPKEY*2 < 20;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u3_union.hive b/hivesterix/src/test/resources/optimizerts/queries/u3_union.hive
deleted file mode 100644
index 1c84ba8..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u3_union.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-select * from (select (2*s_suppkey), s_address, s_nationkey,  s_name  FROM supplier where S_SUPPKEY*2 < 20 union all select (2*s_suppkey), s_address, s_nationkey,  s_name   FROM supplier where S_SUPPKEY*2 > 50) t;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u4_join.hive b/hivesterix/src/test/resources/optimizerts/queries/u4_join.hive
deleted file mode 100644
index c013fa6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u4_join.hive
+++ /dev/null
@@ -1,14 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, 
-S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED
-BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-insert overwrite table result select s_suppkey, s_name, s_address, s_nationkey
-from supplier where S_SUPPKEY*2 < 20;
-
-select result.s_suppkey, supplier.s_phone, supplier.s_acctbal,
-supplier.s_comment from result join supplier on result.s_suppkey=supplier.s_suppkey;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u5_lateral_view.hive b/hivesterix/src/test/resources/optimizerts/queries/u5_lateral_view.hive
deleted file mode 100644
index 2740bca..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u5_lateral_view.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create table supplier (S_SUPPKEY array<int>, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING);
-create table result (S_SUPPKEY int);
-
-select s_name, s_address, col1 from supplier LATERAL VIEW explode(s_suppkey) suppadd as col1;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u6_limit.hive b/hivesterix/src/test/resources/optimizerts/queries/u6_limit.hive
deleted file mode 100644
index b268aff..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u6_limit.hive
+++ /dev/null
@@ -1,8 +0,0 @@
-drop table IF EXISTS orders;
-drop table IF EXISTS result;
-drop table IF EXISTS q_limit2;
-
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create table q_limit2(col1 int, col2 double, col3 string, col4 string);
-
-insert overwrite table q_limit2 select O_ORDERKEY, O_TOTALPRICE, O_ORDERDATE, O_CLERK from orders where O_TOTALPRICE<10000 order by o_totalprice limit 4;
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u7_multi_join.hive b/hivesterix/src/test/resources/optimizerts/queries/u7_multi_join.hive
deleted file mode 100644
index 2891c56..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u7_multi_join.hive
+++ /dev/null
@@ -1,9 +0,0 @@
-drop table IF EXISTS lineitem;
-drop table IF EXISTS orders;
-drop table IF EXISTS customer;
-
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
-select l_linenumber, o_orderkey, o_totalprice, o_orderdate, o_shippriority from  customer c join orders o  on c.c_custkey = o.o_custkey join lineitem l    on o.o_orderkey = l.l_orderkey  where c.c_custkey<5 and o.o_totalprice<30000;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u8_non_mapred.hive b/hivesterix/src/test/resources/optimizerts/queries/u8_non_mapred.hive
deleted file mode 100644
index 247f2c1..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u8_non_mapred.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-select * FROM supplier;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u9_order_by.hive b/hivesterix/src/test/resources/optimizerts/queries/u9_order_by.hive
deleted file mode 100644
index 8d5d1cf..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u9_order_by.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-insert overwrite table result select s_suppkey, s_name, s_address, s_nationkey  FROM supplier where S_SUPPKEY*2 < 20 order by s_name;
diff --git a/hivesterix/src/test/resources/optimizerts/results/h11_share_scan.plan b/hivesterix/src/test/resources/optimizerts/results/h11_share_scan.plan
deleted file mode 100644
index 867bfaf..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/h11_share_scan.plan
+++ /dev/null
@@ -1,34 +0,0 @@
-write [%0->$$1, %0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  select (function-call: algebricks:lt, Args:[%0->$$1, 5])
-  -- STREAM_SELECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      replicate 
-      -- SPLIT  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan []<-[$$1, $$2] <- default.src
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$1])
-  -- STREAM_PROJECT  |PARTITIONED|
-    select (function-call: algebricks:gt, Args:[%0->$$1, 10])
-    -- STREAM_SELECT  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        replicate 
-        -- SPLIT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$1, $$2] <- default.src
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/h12_select_struct.plan b/hivesterix/src/test/resources/optimizerts/results/h12_select_struct.plan
deleted file mode 100644
index 8bbfb61..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/h12_select_struct.plan
+++ /dev/null
@@ -1,10 +0,0 @@
-write [%0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    data-scan [$$2]<-[$$1, $$2] <- default.src
-    -- DATASOURCE_SCAN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        empty-tuple-source
-        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q10_returned_item.plan b/hivesterix/src/test/resources/optimizerts/results/q10_returned_item.plan
deleted file mode 100644
index 05b3718..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q10_returned_item.plan
+++ /dev/null
@@ -1,102 +0,0 @@
-write [%0->$$38, %0->$$39, %0->$$45, %0->$$40, %0->$$42, %0->$$43, %0->$$41, %0->$$44]
--- SINK_WRITE  |UNPARTITIONED|
-  project ([$$38, $$39, $$45, $$40, $$42, $$43, $$41, $$44])
-  -- STREAM_PROJECT  |PARTITIONED|
-    limit 20
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      limit 20
-      -- STREAM_LIMIT  |UNPARTITIONED|
-        exchange 
-        -- SORT_MERGE_EXCHANGE [$$45(DESC) ]  |PARTITIONED|
-          limit 20
-          -- STREAM_LIMIT  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-              order (DESC, %0->$$45) 
-              -- STABLE_SORT [$$45(DESC)]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  group by ([$$38 := %0->$$48; $$39 := %0->$$49; $$40 := %0->$$50; $$41 := %0->$$51; $$42 := %0->$$52; $$43 := %0->$$53; $$44 := %0->$$54]) decor ([]) {
-                            aggregate [$$45] <- [function-call: hive:sum(FINAL), Args:[%0->$$47]]
-                            -- AGGREGATE  |LOCAL|
-                              nested tuple source
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         }
-                  -- EXTERNAL_GROUP_BY[$$48, $$49, $$50, $$51, $$52, $$53, $$54]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$48, $$49, $$50, $$51, $$52, $$53, $$54]  |PARTITIONED|
-                      group by ([$$48 := %0->$$21; $$49 := %0->$$22; $$50 := %0->$$26; $$51 := %0->$$25; $$52 := %0->$$18; $$53 := %0->$$23; $$54 := %0->$$28]) decor ([]) {
-                                aggregate [$$47] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]]]
-                                -- AGGREGATE  |LOCAL|
-                                  nested tuple source
-                                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             }
-                      -- EXTERNAL_GROUP_BY[$$21, $$22, $$26, $$25, $$18, $$23, $$28]  |LOCAL|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$21, $$22, $$23, $$25, $$26, $$28, $$18, $$6, $$7])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$29])
-                              -- HYBRID_HASH_JOIN [$$1][$$29]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                  project ([$$1, $$6, $$7])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:eq, Args:[%0->$$9, R])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$1, $$6, $$7, $$9]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$29]  |PARTITIONED|
-                                  project ([$$29, $$21, $$22, $$23, $$25, $$26, $$28, $$18])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$17, %0->$$24])
-                                      -- HYBRID_HASH_JOIN [$$17][$$24]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$17]  |PARTITIONED|
-                                          data-scan [$$17, $$18]<-[$$17, $$18, $$19, $$20] <- default.nation
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$24]  |PARTITIONED|
-                                          project ([$$24, $$21, $$22, $$23, $$25, $$26, $$28, $$29])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (function-call: algebricks:eq, Args:[%0->$$30, %0->$$21])
-                                              -- HYBRID_HASH_JOIN [$$30][$$21]  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$30]  |PARTITIONED|
-                                                  project ([$$30, $$29])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$33, 1994-01-01], function-call: algebricks:ge, Args:[%0->$$33, 1993-10-01], function-call: algebricks:lt, Args:[%0->$$33, 1994-01-01]])
-                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                      exchange 
-                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan [$$33, $$29, $$30]<-[$$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36, $$37] <- default.orders
-                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange 
-                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source
-                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-                                                  data-scan [$$21, $$22, $$23, $$24, $$25, $$26, $$28]<-[$$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28] <- default.customer
-                                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source
-                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q11_important_stock.plan b/hivesterix/src/test/resources/optimizerts/results/q11_important_stock.plan
deleted file mode 100644
index 70ad7ee..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q11_important_stock.plan
+++ /dev/null
@@ -1,126 +0,0 @@
-write [%0->$$17, %0->$$18]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$21]) decor ([]) {
-                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$21]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-          group by ([$$21 := %0->$$1]) decor ([]) {
-                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$4, %0->$$3]]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$1]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$1, $$3, $$4])
-              -- STREAM_PROJECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (function-call: algebricks:eq, Args:[%0->$$2, %0->$$6])
-                  -- HYBRID_HASH_JOIN [$$2][$$6]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                      data-scan [$$2, $$1, $$3, $$4]<-[$$1, $$2, $$3, $$4, $$5] <- default.partsupp
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$6]  |PARTITIONED|
-                      project ([$$6])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (function-call: algebricks:eq, Args:[%0->$$9, %0->$$13])
-                          -- HYBRID_HASH_JOIN [$$9][$$13]  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                              data-scan [$$9, $$6]<-[$$6, $$7, $$8, $$9, $$10, $$11, $$12] <- default.supplier
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$13]  |PARTITIONED|
-                              project ([$$13])
-                              -- STREAM_PROJECT  |PARTITIONED|
-                                select (function-call: algebricks:eq, Args:[%0->$$14, GERMANY])
-                                -- STREAM_SELECT  |PARTITIONED|
-                                  exchange 
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan [$$13, $$14]<-[$$13, $$14, $$15, $$16] <- default.nation
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$3] <- [function-call: hive:sum(FINAL), Args:[%0->$$5]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$5] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$2]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan [$$2]<-[$$1, $$2] <- default.q11_part_tmp
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$2, %0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$3(DESC) ]  |PARTITIONED|
-    order (DESC, %0->$$3) 
-    -- STABLE_SORT [$$3(DESC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$2, $$3])
-        -- STREAM_PROJECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$3, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 1.0E-4]], true])
-            -- NESTED_LOOP  |PARTITIONED|
-              exchange 
-              -- BROADCAST_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$1] <- default.q11_sum_tmp
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$2, $$3]<-[$$2, $$3] <- default.q11_part_tmp
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q12_shipping.plan b/hivesterix/src/test/resources/optimizerts/results/q12_shipping.plan
deleted file mode 100644
index 5c240e2..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q12_shipping.plan
+++ /dev/null
@@ -1,58 +0,0 @@
-write [%0->$$26, %0->$$29, %0->$$30]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$26, $$29, $$30])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$29, $$30] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToDouble, Args:[%0->$$27], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToDouble, Args:[%0->$$28]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$26(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$26) 
-        -- STABLE_SORT [$$26(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$26 := %0->$$34]) decor ([]) {
-                      aggregate [$$27, $$28] <- [function-call: hive:sum(FINAL), Args:[%0->$$32], function-call: hive:sum(FINAL), Args:[%0->$$33]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$34]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                group by ([$$34 := %0->$$24]) decor ([]) {
-                          aggregate [$$32, $$33] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$6, 1-URGENT], function-call: algebricks:eq, Args:[%0->$$6, 2-HIGH]], 1, 0]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: algebricks:and, Args:[function-call: algebricks:neq, Args:[%0->$$6, 1-URGENT], function-call: algebricks:neq, Args:[%0->$$6, 2-HIGH]], 1, 0]]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$24]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$6, $$24])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:eq, Args:[%0->$$10, %0->$$1])
-                        -- HYBRID_HASH_JOIN [$$10][$$1]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                            project ([$$10, $$24])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$22, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$22, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$20, %0->$$21], function-call: algebricks:lt, Args:[%0->$$21, %0->$$22], function-call: algebricks:lt, Args:[%0->$$20, %0->$$21], function-call: algebricks:ge, Args:[%0->$$22, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$22, 1995-01-01], function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$24, MAIL], function-call: algebricks:eq, Args:[%0->$$24, SHIP]], function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$24, MAIL], function-call: algebricks:eq, Args:[%0->$$24, SHIP]]])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan [$$21, $$20, $$22, $$24, $$10]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25] <- default.lineitem
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                            data-scan [$$1, $$6]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                            -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q13_customer_distribution.plan b/hivesterix/src/test/resources/optimizerts/results/q13_customer_distribution.plan
deleted file mode 100644
index 19bcd24..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q13_customer_distribution.plan
+++ /dev/null
@@ -1,80 +0,0 @@
-write [%0->$$22, %0->$$23]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$22, $$23])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$22, $$23] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$20], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$21]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$21(DESC), $$20(DESC) ]  |PARTITIONED|
-        order (DESC, %0->$$21) (DESC, %0->$$20) 
-        -- STABLE_SORT [$$21(DESC), $$20(DESC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$20 := %0->$$28]) decor ([]) {
-                      aggregate [$$21] <- [function-call: hive:count(FINAL), Args:[%0->$$27]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$28]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$28]  |PARTITIONED|
-                group by ([$$28 := %0->$$19]) decor ([]) {
-                          aggregate [$$27] <- [function-call: hive:count(PARTIAL1), Args:[1]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$19]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$19])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        group by ([$$18 := %0->$$26]) decor ([]) {
-                                  aggregate [$$19] <- [function-call: hive:count(FINAL), Args:[%0->$$25]]
-                                  -- AGGREGATE  |LOCAL|
-                                    nested tuple source
-                                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-                               }
-                        -- EXTERNAL_GROUP_BY[$$26]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                            group by ([$$26 := %0->$$10]) decor ([]) {
-                                      aggregate [$$25] <- [function-call: hive:count(PARTIAL1), Args:[%0->$$1]]
-                                      -- AGGREGATE  |LOCAL|
-                                        nested tuple source
-                                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                   }
-                            -- EXTERNAL_GROUP_BY[$$10]  |LOCAL|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                project ([$$10, $$1])
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange 
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left outer join (function-call: algebricks:eq, Args:[%0->$$2, %0->$$10])
-                                    -- HYBRID_HASH_JOIN [$$10][$$2]  |PARTITIONED|
-                                      exchange 
-                                      -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                                        data-scan [$$10]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17] <- default.customer
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                      exchange 
-                                      -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                                        project ([$$2, $$1])
-                                        -- STREAM_PROJECT  |PARTITIONED|
-                                          select (function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$9, %special%requests%]])
-                                          -- STREAM_SELECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan [$$1, $$2, $$9]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source
-                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q14_promotion_effect.plan b/hivesterix/src/test/resources/optimizerts/results/q14_promotion_effect.plan
deleted file mode 100644
index 21b90bd..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q14_promotion_effect.plan
+++ /dev/null
@@ -1,54 +0,0 @@
-write [%0->$$28]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$28])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$28] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPDivide, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[100.0, %0->$$26], %0->$$27]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$26, $$27] <- [function-call: hive:sum(FINAL), Args:[%0->$$30], function-call: hive:sum(FINAL), Args:[%0->$$31]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-            group by ([]) decor ([]) {
-                      aggregate [$$30, $$31] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$5, PROMO%], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$15, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$16]], 0.0]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$15, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$16]]]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$5, $$15, $$16])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:eq, Args:[%0->$$11, %0->$$1])
-                    -- HYBRID_HASH_JOIN [$$11][$$1]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                        project ([$$11, $$15, $$16])
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$20, 1995-10-01], function-call: algebricks:ge, Args:[%0->$$20, 1995-09-01], function-call: algebricks:lt, Args:[%0->$$20, 1995-10-01]])
-                          -- STREAM_SELECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan [$$16, $$20, $$11, $$15]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25] <- default.lineitem
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                        data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q15_top_supplier.plan b/hivesterix/src/test/resources/optimizerts/results/q15_top_supplier.plan
deleted file mode 100644
index a5bd27a..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q15_top_supplier.plan
+++ /dev/null
@@ -1,110 +0,0 @@
-write [%0->$$17, %0->$$18]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$21]) decor ([]) {
-                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$21]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-          group by ([$$21 := %0->$$3]) decor ([]) {
-                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$3]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$3, $$6, $$7])
-              -- STREAM_PROJECT  |PARTITIONED|
-                select (function-call: algebricks:and, Args:[function-call: algebricks:ge, Args:[%0->$$11, 1996-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1996-04-01], function-call: algebricks:ge, Args:[%0->$$11, 1996-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1996-04-01]])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$3, $$6, $$7, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$3] <- [function-call: hive:max(FINAL), Args:[%0->$$5]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- PRE_CLUSTERED_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$5] <- [function-call: hive:max(PARTIAL1), Args:[%0->$$2]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- PRE_CLUSTERED_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan [$$2]<-[$$1, $$2] <- default.revenue
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$2, %0->$$3, %0->$$4, %0->$$6, %0->$$10]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$2(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$2) 
-    -- STABLE_SORT [$$2(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$2, $$3, $$4, $$6, $$10])
-        -- STREAM_PROJECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$10])
-            -- HYBRID_HASH_JOIN [$$1][$$10]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                data-scan []<-[$$1] <- default.max_revenue
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                project ([$$10, $$2, $$3, $$4, $$6])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:eq, Args:[%0->$$9, %0->$$2])
-                    -- HYBRID_HASH_JOIN [$$9][$$2]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                        data-scan []<-[$$9, $$10] <- default.revenue
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                        data-scan [$$2, $$3, $$4, $$6]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.supplier
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q16_parts_supplier_relationship.plan b/hivesterix/src/test/resources/optimizerts/results/q16_parts_supplier_relationship.plan
deleted file mode 100644
index 9835346..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q16_parts_supplier_relationship.plan
+++ /dev/null
@@ -1,98 +0,0 @@
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$1])
-  -- STREAM_PROJECT  |PARTITIONED|
-    select (function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$7, %Customer%Complaints%]])
-    -- STREAM_SELECT  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        data-scan [$$1, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-        -- DATASOURCE_SCAN  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            empty-tuple-source
-            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$5, %0->$$6, %0->$$7, %0->$$12]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$5, $$6, $$7, $$12])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$12])
-      -- HYBRID_HASH_JOIN [$$1][$$12]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          data-scan []<-[$$1] <- default.supplier_tmp
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$12]  |PARTITIONED|
-          project ([$$12, $$5, $$6, $$7])
-          -- STREAM_PROJECT  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (function-call: algebricks:eq, Args:[%0->$$2, %0->$$11])
-              -- HYBRID_HASH_JOIN [$$2][$$11]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                  select (function-call: algebricks:and, Args:[function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$6, MEDIUM POLISHED%]], function-call: algebricks:neq, Args:[%0->$$5, Brand#45], function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$6, MEDIUM POLISHED%]]])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan [$$2, $$5, $$6, $$7]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10] <- default.part
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                  data-scan [$$11, $$12]<-[$$11, $$12, $$13, $$14, $$15] <- default.partsupp
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$10, %0->$$11, %0->$$12, %0->$$14]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$10, $$11, $$12, $$14])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$14] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$13]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$13(DESC), $$10(ASC), $$11(ASC), $$12(ASC) ]  |PARTITIONED|
-        order (DESC, %0->$$13) (ASC, %0->$$10) (ASC, %0->$$11) (ASC, %0->$$12) 
-        -- STABLE_SORT [$$13(DESC), $$10(ASC), $$11(ASC), $$12(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$10 := %0->$$5; $$11 := %0->$$6; $$12 := %0->$$7]) decor ([]) {
-                      aggregate [$$13] <- [function-call: hive:count(COMPLETE), Args:[%0->$$8]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$5, $$6, $$7]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$5, $$6, $$7]  |PARTITIONED|
-                group by ([$$5 := %0->$$1; $$6 := %0->$$2; $$7 := %0->$$3; $$8 := %0->$$4]) decor ([]) {
-                          aggregate [] <- []
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$1, $$2, $$3, $$4]  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    select (function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$3, 49], function-call: algebricks:eq, Args:[%0->$$3, 14]], function-call: algebricks:eq, Args:[%0->$$3, 23]], function-call: algebricks:eq, Args:[%0->$$3, 45]], function-call: algebricks:eq, Args:[%0->$$3, 19]], function-call: algebricks:eq, Args:[%0->$$3, 3]], function-call: algebricks:eq, Args:[%0->$$3, 36]], function-call: algebricks:eq, Args:[%0->$$3, 9]])
-                    -- STREAM_SELECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$1, $$2, $$3, $$4] <- default.q16_tmp
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q17_small_quantity_order_revenue.plan b/hivesterix/src/test/resources/optimizerts/results/q17_small_quantity_order_revenue.plan
deleted file mode 100644
index a827007..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q17_small_quantity_order_revenue.plan
+++ /dev/null
@@ -1,104 +0,0 @@
-write [%0->$$17, %0->$$19]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$19])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$19] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[0.2, %0->$$18]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$17 := %0->$$22]) decor ([]) {
-                  aggregate [$$18] <- [function-call: hive:avg(FINAL), Args:[%0->$$21]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[$$22]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-            group by ([$$22 := %0->$$2]) decor ([]) {
-                      aggregate [$$21] <- [function-call: hive:avg(PARTIAL1), Args:[%0->$$5]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$2]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$2, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$29]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$29])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$29] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPDivide, Args:[%0->$$28, 7.0]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$28] <- [function-call: hive:sum(FINAL), Args:[%0->$$31]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-            group by ([]) decor ([]) {
-                      aggregate [$$31] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$17]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$17])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:lt, Args:[%0->$$16, %0->$$2])
-                  -- STREAM_SELECT  |UNPARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (function-call: algebricks:eq, Args:[%0->$$13, %0->$$1])
-                      -- HYBRID_HASH_JOIN [$$13][$$1]  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$13, $$16, $$17])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$13, %0->$$3])
-                              -- HYBRID_HASH_JOIN [$$13][$$3]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$13]  |PARTITIONED|
-                                  data-scan [$$13, $$16, $$17]<-[$$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27] <- default.lineitem
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$3]  |PARTITIONED|
-                                  project ([$$3])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$9, MED BOX], function-call: algebricks:eq, Args:[%0->$$6, Brand#23], function-call: algebricks:eq, Args:[%0->$$9, MED BOX]])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$3, $$6, $$9]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.part
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                          data-scan [$$1, $$2]<-[$$1, $$2] <- default.lineitem_tmp
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q18_large_volume_customer.plan b/hivesterix/src/test/resources/optimizerts/results/q18_large_volume_customer.plan
deleted file mode 100644
index ea47ea0..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q18_large_volume_customer.plan
+++ /dev/null
@@ -1,126 +0,0 @@
-write [%0->$$17, %0->$$18]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$21]) decor ([]) {
-                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$21]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-          group by ([$$21 := %0->$$1]) decor ([]) {
-                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$1]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-              -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source
-                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$36, %0->$$37, %0->$$38, %0->$$39, %0->$$40, %0->$$41]
--- SINK_WRITE  |UNPARTITIONED|
-  project ([$$36, $$37, $$38, $$39, $$40, $$41])
-  -- STREAM_PROJECT  |PARTITIONED|
-    limit 100
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      limit 100
-      -- STREAM_LIMIT  |UNPARTITIONED|
-        exchange 
-        -- SORT_MERGE_EXCHANGE [$$40(DESC), $$39(ASC) ]  |PARTITIONED|
-          limit 100
-          -- STREAM_LIMIT  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-              order (DESC, %0->$$40) (ASC, %0->$$39) 
-              -- STABLE_SORT [$$40(DESC), $$39(ASC)]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  group by ([$$36 := %0->$$44; $$37 := %0->$$45; $$38 := %0->$$46; $$39 := %0->$$47; $$40 := %0->$$48]) decor ([]) {
-                            aggregate [$$41] <- [function-call: hive:sum(FINAL), Args:[%0->$$43]]
-                            -- AGGREGATE  |LOCAL|
-                              nested tuple source
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         }
-                  -- EXTERNAL_GROUP_BY[$$44, $$45, $$46, $$47, $$48]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$44, $$45, $$46, $$47, $$48]  |PARTITIONED|
-                      group by ([$$44 := %0->$$20; $$45 := %0->$$19; $$46 := %0->$$27; $$47 := %0->$$31; $$48 := %0->$$30]) decor ([]) {
-                                aggregate [$$43] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$7]]
-                                -- AGGREGATE  |LOCAL|
-                                  nested tuple source
-                                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             }
-                      -- EXTERNAL_GROUP_BY[$$20, $$19, $$27, $$31, $$30]  |LOCAL|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$19, $$20, $$27, $$30, $$31, $$7])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$27, %0->$$1])
-                              -- HYBRID_HASH_JOIN [$$1][$$27]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                  project ([$$1, $$7])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$3, %0->$$1])
-                                      -- HYBRID_HASH_JOIN [$$3][$$1]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$3]  |PARTITIONED|
-                                          data-scan [$$3, $$7]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18] <- default.lineitem
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                          project ([$$1])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            select (function-call: algebricks:gt, Args:[%0->$$2, 300])
-                                            -- STREAM_SELECT  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$1, $$2] <- default.q18_tmp
-                                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange 
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source
-                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$27]  |PARTITIONED|
-                                  project ([$$27, $$19, $$20, $$30, $$31])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$28, %0->$$19])
-                                      -- HYBRID_HASH_JOIN [$$28][$$19]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$28]  |PARTITIONED|
-                                          data-scan [$$28, $$27, $$30, $$31]<-[$$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35] <- default.orders
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$19]  |PARTITIONED|
-                                          data-scan [$$19, $$20]<-[$$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26] <- default.customer
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q19_discounted_revenue.plan b/hivesterix/src/test/resources/optimizerts/results/q19_discounted_revenue.plan
deleted file mode 100644
index 1827729..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q19_discounted_revenue.plan
+++ /dev/null
@@ -1,46 +0,0 @@
-write [%0->$$26]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$26] <- [function-call: hive:sum(FINAL), Args:[%0->$$28]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$28] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$15, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$16]]]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$15, $$16])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$4, Brand#12], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$7, SM CASE||SM BOX||SM PACK||SM PKG]], function-call: algebricks:ge, Args:[%0->$$14, 1]], function-call: algebricks:le, Args:[%0->$$14, 11]], function-call: algebricks:ge, Args:[%0->$$6, 1]], function-call: algebricks:le, Args:[%0->$$6, 5]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$24, AIR||AIR REG]], function-call: algebricks:eq, Args:[%0->$$23, DELIVER IN PERSON]], function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$4, Brand#23], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$7, MED BAG||MED BOX||MED PKG||MED PACK]], function-call: algebricks:ge, Args:[%0->$$14, 10]], function-call: algebricks:le, Args:[%0->$$14, 20]], function-call: algebricks:ge, Args:[%0->$$6, 1]], function-call: algebricks:le, Args:[%0->$$6, 10]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$24, AIR||AIR REG]], function-call: algebricks:eq, Args:[%0->$$23, DELIVER IN PERSON]]], function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$4, Brand#34], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$7, LG CASE||LG BOX||LG PACK||LG PKG]], function-call: algebricks:ge, Args:[%0->$$14, 20]], function-call: algebricks:le, Args:[%0->$$14, 30]], function-call: algebricks:ge, Args:[%0->$$6, 1]], function-call: algebricks:le, Args:[%0->$$6, 15]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$24, AIR||AIR REG]], function-call: algebricks:eq, Args:[%0->$$23, DELIVER IN PERSON]]])
-              -- STREAM_SELECT  |UNPARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (function-call: algebricks:eq, Args:[%0->$$11, %0->$$1])
-                  -- HYBRID_HASH_JOIN [$$11][$$1]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                      data-scan [$$11, $$14, $$15, $$16, $$23, $$24]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25] <- default.lineitem
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                      data-scan [$$1, $$4, $$6, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q1_pricing_summary_report.plan b/hivesterix/src/test/resources/optimizerts/results/q1_pricing_summary_report.plan
deleted file mode 100644
index 0e9c90f..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q1_pricing_summary_report.plan
+++ /dev/null
@@ -1,42 +0,0 @@
-write [%0->$$17, %0->$$18, %0->$$19, %0->$$20, %0->$$21, %0->$$22, %0->$$23, %0->$$24, %0->$$25, %0->$$27]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$27])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$27] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$26]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$17(ASC), $$18(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$17) (ASC, %0->$$18) 
-        -- STABLE_SORT [$$17(ASC), $$18(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$17 := %0->$$37; $$18 := %0->$$38]) decor ([]) {
-                      aggregate [$$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26] <- [function-call: hive:sum(FINAL), Args:[%0->$$29], function-call: hive:sum(FINAL), Args:[%0->$$30], function-call: hive:sum(FINAL), Args:[%0->$$31], function-call: hive:sum(FINAL), Args:[%0->$$32], function-call: hive:avg(FINAL), Args:[%0->$$33], function-call: hive:avg(FINAL), Args:[%0->$$34], function-call: hive:avg(FINAL), Args:[%0->$$35], function-call: hive:count(FINAL), Args:[%0->$$36]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$37, $$38]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$37, $$38]  |PARTITIONED|
-                group by ([$$37 := %0->$$9; $$38 := %0->$$10]) decor ([]) {
-                          aggregate [$$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5], function-call: hive:sum(PARTIAL1), Args:[%0->$$6], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPPlus, Args:[1, %0->$$8]]], function-call: hive:avg(PARTIAL1), Args:[%0->$$5], function-call: hive:avg(PARTIAL1), Args:[%0->$$6], function-call: hive:avg(PARTIAL1), Args:[%0->$$7], function-call: hive:count(PARTIAL1), Args:[1]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$9, $$10]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$9, $$10, $$5, $$6, $$7, $$8])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      select (function-call: algebricks:le, Args:[%0->$$11, 1998-09-02])
-                      -- STREAM_SELECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$5, $$6, $$7, $$8, $$9, $$10, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q20_potential_part_promotion.plan b/hivesterix/src/test/resources/optimizerts/results/q20_potential_part_promotion.plan
deleted file mode 100644
index eddfca5..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q20_potential_part_promotion.plan
+++ /dev/null
@@ -1,178 +0,0 @@
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$1])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$1) 
-        -- STABLE_SORT [$$1(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-            project ([$$1])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$2, forest%])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$1, $$2]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$17, %0->$$18, %0->$$20]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18, $$20])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$20] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[0.5, %0->$$19]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$17 := %0->$$23; $$18 := %0->$$24]) decor ([]) {
-                  aggregate [$$19] <- [function-call: hive:sum(FINAL), Args:[%0->$$22]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[$$23, $$24]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$23, $$24]  |PARTITIONED|
-            group by ([$$23 := %0->$$2; $$24 := %0->$$3]) decor ([]) {
-                      aggregate [$$22] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$2, $$3]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$2, $$3, $$5])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:and, Args:[function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01]])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan [$$2, $$3, $$5, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$6, %0->$$7, %0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$7, $$3])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$1, %0->$$5], function-call: algebricks:eq, Args:[%0->$$2, %0->$$6]])
-      -- HYBRID_HASH_JOIN [$$1, $$2][$$5, $$6]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1, $$2]  |PARTITIONED|
-          data-scan []<-[$$1, $$2, $$3] <- default.q20_tmp2
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$5, $$6]  |PARTITIONED|
-          project ([$$5, $$6, $$7])
-          -- STREAM_PROJECT  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (function-call: algebricks:eq, Args:[%0->$$4, %0->$$5])
-              -- HYBRID_HASH_JOIN [$$4][$$5]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                  data-scan []<-[$$4] <- default.q20_tmp1
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                  data-scan [$$5, $$6, $$7]<-[$$5, $$6, $$7, $$8, $$9] <- default.partsupp
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$1])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$1) 
-        -- STABLE_SORT [$$1(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-            project ([$$1])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:gt, Args:[%0->$$2, %0->$$3])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$1, $$2, $$3] <- default.q20_tmp3
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3, %0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$3(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$3) 
-    -- STABLE_SORT [$$3(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$3, $$4])
-        -- STREAM_PROJECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$2])
-            -- HYBRID_HASH_JOIN [$$1][$$2]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                data-scan []<-[$$1] <- default.q20_tmp4
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                project ([$$2, $$3, $$4])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:eq, Args:[%0->$$9, %0->$$5])
-                    -- HYBRID_HASH_JOIN [$$9][$$5]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                        project ([$$9])
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          select (function-call: algebricks:eq, Args:[%0->$$10, CANADA])
-                          -- STREAM_SELECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan [$$9, $$10]<-[$$9, $$10, $$11, $$12] <- default.nation
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                        data-scan [$$5, $$2, $$3, $$4]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.supplier
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q21_suppliers_who_kept_orders_waiting.plan b/hivesterix/src/test/resources/optimizerts/results/q21_suppliers_who_kept_orders_waiting.plan
deleted file mode 100644
index cc47cf3..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q21_suppliers_who_kept_orders_waiting.plan
+++ /dev/null
@@ -1,224 +0,0 @@
-write [%0->$$21, %0->$$24, %0->$$23]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$21, $$24, $$23])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$24] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$22]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$21 := %0->$$17]) decor ([]) {
-                  aggregate [$$22, $$23] <- [function-call: hive:count(COMPLETE), Args:[%0->$$18], function-call: hive:max(FINAL), Args:[%0->$$20]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- PRE_CLUSTERED_GROUP_BY[$$17]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$17(ASC)] HASH:[$$17]  |PARTITIONED|
-            group by ([$$17 := %0->$$1; $$18 := %0->$$3]) decor ([]) {
-                      aggregate [$$20] <- [function-call: hive:max(PARTIAL1), Args:[%0->$$3]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- PRE_CLUSTERED_GROUP_BY[$$1, $$3]  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-                order (ASC, %0->$$1) (ASC, %0->$$3) 
-                -- STABLE_SORT [$$1(ASC), $$3(ASC)]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$1, $$3]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$21, %0->$$24, %0->$$23]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$21, $$24, $$23])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$24] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$22]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$21 := %0->$$17]) decor ([]) {
-                  aggregate [$$22, $$23] <- [function-call: hive:count(COMPLETE), Args:[%0->$$18], function-call: hive:max(FINAL), Args:[%0->$$20]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- PRE_CLUSTERED_GROUP_BY[$$17]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$17(ASC)] HASH:[$$17]  |PARTITIONED|
-            group by ([$$17 := %0->$$1; $$18 := %0->$$3]) decor ([]) {
-                      aggregate [$$20] <- [function-call: hive:max(PARTIAL1), Args:[%0->$$3]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- PRE_CLUSTERED_GROUP_BY[$$1, $$3]  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-                order (ASC, %0->$$1) (ASC, %0->$$3) 
-                -- STABLE_SORT [$$1(ASC), $$3(ASC)]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$1, $$3])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      select (function-call: algebricks:gt, Args:[%0->$$13, %0->$$12])
-                      -- STREAM_SELECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$1, $$3, $$12, $$13]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$43, %0->$$45]
--- SINK_WRITE  |UNPARTITIONED|
-  project ([$$43, $$45])
-  -- STREAM_PROJECT  |UNPARTITIONED|
-    assign [$$45] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$44]]
-    -- ASSIGN  |UNPARTITIONED|
-      limit 100
-      -- STREAM_LIMIT  |UNPARTITIONED|
-        limit 100
-        -- STREAM_LIMIT  |UNPARTITIONED|
-          exchange 
-          -- SORT_MERGE_EXCHANGE [$$44(DESC), $$43(ASC) ]  |PARTITIONED|
-            limit 100
-            -- STREAM_LIMIT  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-                order (DESC, %0->$$44) (ASC, %0->$$43) 
-                -- STABLE_SORT [$$44(DESC), $$43(ASC)]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    group by ([$$43 := %0->$$48]) decor ([]) {
-                              aggregate [$$44] <- [function-call: hive:count(FINAL), Args:[%0->$$47]]
-                              -- AGGREGATE  |LOCAL|
-                                nested tuple source
-                                -- NESTED_TUPLE_SOURCE  |LOCAL|
-                           }
-                    -- EXTERNAL_GROUP_BY[$$48]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$48]  |PARTITIONED|
-                        group by ([$$48 := %0->$$37]) decor ([]) {
-                                  aggregate [$$47] <- [function-call: hive:count(PARTIAL1), Args:[1]]
-                                  -- AGGREGATE  |LOCAL|
-                                    nested tuple source
-                                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-                               }
-                        -- EXTERNAL_GROUP_BY[$$37]  |LOCAL|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$37])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:or, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull, Args:[%0->$$2], function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$2, 1], function-call: algebricks:eq, Args:[%0->$$18, %0->$$3]]])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left outer join (function-call: algebricks:eq, Args:[%0->$$4, %0->$$1])
-                                  -- HYBRID_HASH_JOIN [$$4][$$1]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                                      project ([$$37, $$4, $$18])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        select (function-call: algebricks:or, Args:[function-call: algebricks:gt, Args:[%0->$$5, 1], function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$5, 1], function-call: algebricks:neq, Args:[%0->$$18, %0->$$6]]])
-                                        -- STREAM_SELECT  |UNPARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            join (function-call: algebricks:eq, Args:[%0->$$16, %0->$$4])
-                                            -- HYBRID_HASH_JOIN [$$16][$$4]  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                project ([$$37, $$16, $$18])
-                                                -- STREAM_PROJECT  |PARTITIONED|
-                                                  exchange 
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    join (function-call: algebricks:eq, Args:[%0->$$16, %0->$$7])
-                                                    -- HYBRID_HASH_JOIN [$$16][$$7]  |PARTITIONED|
-                                                      exchange 
-                                                      -- HASH_PARTITION_EXCHANGE [$$16]  |PARTITIONED|
-                                                        project ([$$37, $$16, $$18])
-                                                        -- STREAM_PROJECT  |PARTITIONED|
-                                                          exchange 
-                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            join (function-call: algebricks:eq, Args:[%0->$$18, %0->$$36])
-                                                            -- HYBRID_HASH_JOIN [$$18][$$36]  |PARTITIONED|
-                                                              exchange 
-                                                              -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
-                                                                project ([$$16, $$18])
-                                                                -- STREAM_PROJECT  |PARTITIONED|
-                                                                  select (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$28, %0->$$27], function-call: algebricks:gt, Args:[%0->$$28, %0->$$27]])
-                                                                  -- STREAM_SELECT  |PARTITIONED|
-                                                                    exchange 
-                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      data-scan [$$16, $$18, $$27, $$28]<-[$$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31] <- default.lineitem
-                                                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                        exchange 
-                                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          empty-tuple-source
-                                                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                              exchange 
-                                                              -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                                                                project ([$$36, $$37])
-                                                                -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange 
-                                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    join (function-call: algebricks:eq, Args:[%0->$$39, %0->$$32])
-                                                                    -- HYBRID_HASH_JOIN [$$39][$$32]  |PARTITIONED|
-                                                                      exchange 
-                                                                      -- HASH_PARTITION_EXCHANGE [$$39]  |PARTITIONED|
-                                                                        data-scan [$$39, $$36, $$37]<-[$$36, $$37, $$38, $$39, $$40, $$41, $$42] <- default.supplier
-                                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange 
-                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source
-                                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                      exchange 
-                                                                      -- HASH_PARTITION_EXCHANGE [$$32]  |PARTITIONED|
-                                                                        project ([$$32])
-                                                                        -- STREAM_PROJECT  |PARTITIONED|
-                                                                          select (function-call: algebricks:eq, Args:[%0->$$33, SAUDI ARABIA])
-                                                                          -- STREAM_SELECT  |PARTITIONED|
-                                                                            exchange 
-                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              data-scan [$$32, $$33]<-[$$32, $$33, $$34, $$35] <- default.nation
-                                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                exchange 
-                                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  empty-tuple-source
-                                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                      exchange 
-                                                      -- HASH_PARTITION_EXCHANGE [$$7]  |PARTITIONED|
-                                                        project ([$$7])
-                                                        -- STREAM_PROJECT  |PARTITIONED|
-                                                          select (function-call: algebricks:eq, Args:[%0->$$9, F])
-                                                          -- STREAM_SELECT  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              data-scan [$$7, $$9]<-[$$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15] <- default.orders
-                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange 
-                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source
-                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              exchange 
-                                              -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                                                data-scan [$$4, $$5, $$6]<-[$$4, $$5, $$6] <- default.q21_tmp1
-                                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange 
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source
-                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                      data-scan [$$1, $$2, $$3]<-[$$1, $$2, $$3] <- default.q21_tmp2
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q22_global_sales_opportunity.plan b/hivesterix/src/test/resources/optimizerts/results/q22_global_sales_opportunity.plan
deleted file mode 100644
index 591576b..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q22_global_sales_opportunity.plan
+++ /dev/null
@@ -1,136 +0,0 @@
-write [%0->$$6, %0->$$1, %0->$$9]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$1, $$9])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$9] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2]]
-    -- ASSIGN  |PARTITIONED|
-      select (function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 13], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 31]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 23]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 29]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 30]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 18]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 17]])
-      -- STREAM_SELECT  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan []<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.customer
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$4] <- [function-call: hive:avg(FINAL), Args:[%0->$$6]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$6] <- [function-call: hive:avg(PARTIAL1), Args:[%0->$$1]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (function-call: algebricks:gt, Args:[%0->$$1, 0.0])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$1]<-[$$1, $$2, $$3] <- default.q22_customer_tmp
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$2])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$2) 
-        -- STABLE_SORT [$$2(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-            data-scan [$$2]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$6, %0->$$9, %0->$$8]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$9, $$8])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$9] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$7]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$6(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$6) 
-        -- STABLE_SORT [$$6(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$6 := %0->$$13]) decor ([]) {
-                      aggregate [$$7, $$8] <- [function-call: hive:count(FINAL), Args:[%0->$$11], function-call: hive:sum(FINAL), Args:[%0->$$12]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$13]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$13]  |PARTITIONED|
-                group by ([$$13 := %0->$$5]) decor ([]) {
-                          aggregate [$$11, $$12] <- [function-call: hive:count(PARTIAL1), Args:[1], function-call: hive:sum(PARTIAL1), Args:[%0->$$3]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$5]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$5, $$3])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$3, %0->$$1], true])
-                        -- NESTED_LOOP  |PARTITIONED|
-                          exchange 
-                          -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            project ([$$5, $$3])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull, Args:[%0->$$2])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left outer join (function-call: algebricks:eq, Args:[%0->$$4, %0->$$2])
-                                  -- HYBRID_HASH_JOIN [$$4][$$2]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                                      data-scan []<-[$$3, $$4, $$5] <- default.q22_customer_tmp
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                                      data-scan [$$2]<-[$$2] <- default.q22_orders_tmp
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan [$$1]<-[$$1] <- default.q22_customer_tmp1
-                            -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q2_minimum_cost_supplier.plan b/hivesterix/src/test/resources/optimizerts/results/q2_minimum_cost_supplier.plan
deleted file mode 100644
index 151f34d..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q2_minimum_cost_supplier.plan
+++ /dev/null
@@ -1,156 +0,0 @@
-write [%0->$$20, %0->$$16, %0->$$26, %0->$$1, %0->$$13, %0->$$3, %0->$$17, %0->$$19, %0->$$21]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$20, $$16, $$26, $$1, $$13, $$3, $$17, $$19, $$21])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$10])
-      -- HYBRID_HASH_JOIN [$$1][$$10]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          project ([$$1, $$3])
-          -- STREAM_PROJECT  |PARTITIONED|
-            select (function-call: algebricks:and, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$5, %BRASS], function-call: algebricks:eq, Args:[%0->$$6, 15], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$5, %BRASS]])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$1, $$3, $$5, $$6]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-          project ([$$10, $$16, $$17, $$19, $$20, $$21, $$26, $$13])
-          -- STREAM_PROJECT  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (function-call: algebricks:eq, Args:[%0->$$11, %0->$$15])
-              -- HYBRID_HASH_JOIN [$$11][$$15]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                  data-scan [$$11, $$10, $$13]<-[$$10, $$11, $$12, $$13, $$14] <- default.partsupp
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$15]  |PARTITIONED|
-                  project ([$$15, $$16, $$17, $$19, $$20, $$21, $$26])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (function-call: algebricks:eq, Args:[%0->$$18, %0->$$25])
-                      -- HYBRID_HASH_JOIN [$$18][$$25]  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
-                          data-scan []<-[$$15, $$16, $$17, $$18, $$19, $$20, $$21] <- default.supplier
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-                          project ([$$25, $$26])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$22, %0->$$27])
-                              -- HYBRID_HASH_JOIN [$$22][$$27]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-                                  project ([$$22])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:eq, Args:[%0->$$23, EUROPE])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$23, $$22]<-[$$22, $$23, $$24] <- default.region
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$27]  |PARTITIONED|
-                                  data-scan [$$27, $$25, $$26]<-[$$25, $$26, $$27, $$28] <- default.nation
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$10, %0->$$11]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$10, $$11])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$10 := %0->$$14]) decor ([]) {
-                aggregate [$$11] <- [function-call: hive:min(FINAL), Args:[%0->$$13]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- PRE_CLUSTERED_GROUP_BY[$$14]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$14(ASC)] HASH:[$$14]  |PARTITIONED|
-          group by ([$$14 := %0->$$4]) decor ([]) {
-                    aggregate [$$13] <- [function-call: hive:min(PARTIAL1), Args:[%0->$$5]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- PRE_CLUSTERED_GROUP_BY[$$4]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-              order (ASC, %0->$$4) 
-              -- STABLE_SORT [$$4(ASC)]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$4, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.q2_minimum_cost_supplier_tmp1
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3, %0->$$4, %0->$$5, %0->$$6, %0->$$8, %0->$$9, %0->$$10, %0->$$11]
--- SINK_WRITE  |UNPARTITIONED|
-  limit 100
-  -- STREAM_LIMIT  |UNPARTITIONED|
-    limit 100
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$3(DESC), $$5(ASC), $$4(ASC), $$6(ASC) ]  |PARTITIONED|
-        limit 100
-        -- STREAM_LIMIT  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-            order (DESC, %0->$$3) (ASC, %0->$$5) (ASC, %0->$$4) (ASC, %0->$$6) 
-            -- STABLE_SORT [$$3(DESC), $$5(ASC), $$4(ASC), $$6(ASC)]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$3, $$4, $$5, $$6, $$8, $$9, $$10, $$11])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$1, %0->$$6], function-call: algebricks:eq, Args:[%0->$$2, %0->$$7]])
-                    -- HYBRID_HASH_JOIN [$$1, $$2][$$6, $$7]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$1, $$2]  |PARTITIONED|
-                        data-scan []<-[$$1, $$2] <- default.q2_minimum_cost_supplier_tmp2
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$6, $$7]  |PARTITIONED|
-                        data-scan [$$6, $$7, $$3, $$4, $$5, $$8, $$9, $$10, $$11]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.q2_minimum_cost_supplier_tmp1
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q3_shipping_priority.plan b/hivesterix/src/test/resources/optimizerts/results/q3_shipping_priority.plan
deleted file mode 100644
index a1b8e42..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q3_shipping_priority.plan
+++ /dev/null
@@ -1,70 +0,0 @@
-write [%0->$$1, %0->$$34, %0->$$29, %0->$$32]
--- SINK_WRITE  |UNPARTITIONED|
-  limit 10
-  -- STREAM_LIMIT  |UNPARTITIONED|
-    limit 10
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$34(DESC) ]  |PARTITIONED|
-        limit 10
-        -- STREAM_LIMIT  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-            order (DESC, %0->$$34) 
-            -- STABLE_SORT [$$34(DESC)]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$1, $$34, $$29, $$32])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  assign [$$34] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]]
-                  -- ASSIGN  |PARTITIONED|
-                    project ([$$29, $$32, $$1, $$6, $$7])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$25])
-                        -- HYBRID_HASH_JOIN [$$1][$$25]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                            project ([$$1, $$6, $$7])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:lt, Args:[%0->$$4, 3])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan [$$1, $$4, $$6, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-                            project ([$$25, $$29, $$32])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (function-call: algebricks:eq, Args:[%0->$$26, %0->$$17])
-                                -- HYBRID_HASH_JOIN [$$26][$$17]  |PARTITIONED|
-                                  exchange 
-                                  -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                                    data-scan [$$26, $$25, $$29, $$32]<-[$$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33] <- default.orders
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange 
-                                  -- HASH_PARTITION_EXCHANGE [$$17]  |PARTITIONED|
-                                    project ([$$17])
-                                    -- STREAM_PROJECT  |PARTITIONED|
-                                      select (function-call: algebricks:eq, Args:[%0->$$23, BUILDING])
-                                      -- STREAM_SELECT  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan [$$17, $$23]<-[$$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24] <- default.customer
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q4_order_priority.plan b/hivesterix/src/test/resources/optimizerts/results/q4_order_priority.plan
deleted file mode 100644
index 435fd7c..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q4_order_priority.plan
+++ /dev/null
@@ -1,82 +0,0 @@
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$1])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$1) 
-        -- STABLE_SORT [$$1(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-            project ([$$1])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:lt, Args:[%0->$$12, %0->$$13])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$1, $$12, $$13]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$11, %0->$$13]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$11, $$13])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$13] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$12]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$11(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$11) 
-        -- STABLE_SORT [$$11(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$11 := %0->$$16]) decor ([]) {
-                      aggregate [$$12] <- [function-call: hive:count(FINAL), Args:[%0->$$15]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$16]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$16]  |PARTITIONED|
-                group by ([$$16 := %0->$$7]) decor ([]) {
-                          aggregate [$$15] <- [function-call: hive:count(PARTIAL1), Args:[1]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$7]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$7])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$2])
-                        -- HYBRID_HASH_JOIN [$$1][$$2]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                            data-scan []<-[$$1] <- default.q4_order_priority_tmp
-                            -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                            project ([$$2, $$7])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$6, 1993-10-01], function-call: algebricks:ge, Args:[%0->$$6, 1993-07-01], function-call: algebricks:lt, Args:[%0->$$6, 1993-10-01]])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan [$$2, $$6, $$7]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10] <- default.orders
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q5_local_supplier_volume.plan b/hivesterix/src/test/resources/optimizerts/results/q5_local_supplier_volume.plan
deleted file mode 100644
index 177d24c..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q5_local_supplier_volume.plan
+++ /dev/null
@@ -1,126 +0,0 @@
-write [%0->$$48, %0->$$49]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$48, $$49])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- SORT_MERGE_EXCHANGE [$$49(DESC) ]  |PARTITIONED|
-      order (DESC, %0->$$49) 
-      -- STABLE_SORT [$$49(DESC)]  |LOCAL|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$$48 := %0->$$52]) decor ([]) {
-                    aggregate [$$49] <- [function-call: hive:sum(FINAL), Args:[%0->$$51]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$52]  |PARTITIONED|
-            exchange 
-            -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-              group by ([$$52 := %0->$$42]) decor ([]) {
-                        aggregate [$$51] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$23, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$24]]]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$42]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$42, $$23, $$24])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$37, %0->$$4], function-call: algebricks:eq, Args:[%0->$$10, %0->$$1]])
-                      -- HYBRID_HASH_JOIN [$$37, $$10][$$4, $$1]  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$37, $$10]  |PARTITIONED|
-                          project ([$$10, $$42, $$23, $$24, $$37])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$18, %0->$$9])
-                              -- HYBRID_HASH_JOIN [$$18][$$9]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
-                                  project ([$$18, $$23, $$24, $$42, $$37])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$34, %0->$$20])
-                                      -- HYBRID_HASH_JOIN [$$34][$$20]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                                          project ([$$34, $$37, $$42])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (function-call: algebricks:eq, Args:[%0->$$41, %0->$$37])
-                                              -- HYBRID_HASH_JOIN [$$41][$$37]  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$41]  |PARTITIONED|
-                                                  project ([$$41, $$42])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      join (function-call: algebricks:eq, Args:[%0->$$45, %0->$$43])
-                                                      -- HYBRID_HASH_JOIN [$$45][$$43]  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$45]  |PARTITIONED|
-                                                          project ([$$45])
-                                                          -- STREAM_PROJECT  |PARTITIONED|
-                                                            select (function-call: algebricks:eq, Args:[%0->$$46, ASIA])
-                                                            -- STREAM_SELECT  |PARTITIONED|
-                                                              exchange 
-                                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan [$$46, $$45]<-[$$45, $$46, $$47] <- default.region
-                                                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange 
-                                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source
-                                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-                                                          data-scan [$$43, $$41, $$42]<-[$$41, $$42, $$43, $$44] <- default.nation
-                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source
-                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-                                                  data-scan [$$37, $$34]<-[$$34, $$35, $$36, $$37, $$38, $$39, $$40] <- default.supplier
-                                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source
-                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                                          data-scan [$$20, $$18, $$23, $$24]<-[$$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33] <- default.lineitem
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                                  project ([$$9, $$10])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$13, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$13, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$13, 1995-01-01]])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$9, $$10, $$13]<-[$$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17] <- default.orders
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$4, $$1]  |PARTITIONED|
-                          data-scan [$$4, $$1]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.customer
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q6_forecast_revenue_change.plan b/hivesterix/src/test/resources/optimizerts/results/q6_forecast_revenue_change.plan
deleted file mode 100644
index cd9ffcd..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q6_forecast_revenue_change.plan
+++ /dev/null
@@ -1,34 +0,0 @@
-write [%0->$$17]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$17] <- [function-call: hive:sum(FINAL), Args:[%0->$$19]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$19] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, %0->$$7]]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$6, $$7])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:and, Args:[function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$7, 0.05], function-call: algebricks:le, Args:[%0->$$7, 0.07], function-call: algebricks:lt, Args:[%0->$$5, 24], function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$7, 0.05], function-call: algebricks:le, Args:[%0->$$7, 0.07], function-call: algebricks:lt, Args:[%0->$$5, 24]])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$5, $$6, $$7, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q7_volume_shipping.plan b/hivesterix/src/test/resources/optimizerts/results/q7_volume_shipping.plan
deleted file mode 100644
index 39f8301..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q7_volume_shipping.plan
+++ /dev/null
@@ -1,192 +0,0 @@
-write [%0->$$17, %0->$$18, %0->$$19, %0->$$20]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    union ($$6, $$10, $$17) ($$2, $$14, $$18) ($$5, $$9, $$19) ($$1, $$13, $$20)
-    -- UNION_ALL  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        project ([$$6, $$2, $$5, $$1])
-        -- STREAM_PROJECT  |UNPARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (true)
-            -- NESTED_LOOP  |PARTITIONED|
-              exchange 
-              -- BROADCAST_EXCHANGE  |PARTITIONED|
-                select (function-call: algebricks:eq, Args:[%0->$$2, GERMANY])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$1, $$2]<-[$$1, $$2, $$3, $$4] <- default.nation
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$5, $$6])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:eq, Args:[%0->$$6, FRANCE])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$5, $$6])
-                    -- STREAM_PROJECT  |UNPARTITIONED|
-                      assign [$$5, $$6] <- [%0->$$9, %0->$$10]
-                      -- ASSIGN  |UNPARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          replicate 
-                          -- SPLIT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan [$$9, $$10]<-[$$9, $$10, $$11, $$12] <- default.nation
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        project ([$$10, $$14, $$9, $$13])
-        -- STREAM_PROJECT  |UNPARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (true)
-            -- NESTED_LOOP  |PARTITIONED|
-              exchange 
-              -- BROADCAST_EXCHANGE  |PARTITIONED|
-                select (function-call: algebricks:eq, Args:[%0->$$14, FRANCE])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$13, $$14]<-[$$13, $$14, $$15, $$16] <- default.nation
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$9, $$10])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:eq, Args:[%0->$$10, GERMANY])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate 
-                      -- SPLIT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$9, $$10]<-[$$9, $$10, $$11, $$12] <- default.nation
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$47, %0->$$48, %0->$$49, %0->$$50]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$47, $$48, $$49, $$50])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC), $$49(ASC) ]  |PARTITIONED|
-      order (ASC, %0->$$47) (ASC, %0->$$48) (ASC, %0->$$49) 
-      -- STABLE_SORT [$$47(ASC), $$48(ASC), $$49(ASC)]  |LOCAL|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$$47 := %0->$$53; $$48 := %0->$$54; $$49 := %0->$$55]) decor ([]) {
-                    aggregate [$$50] <- [function-call: hive:sum(FINAL), Args:[%0->$$52]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$53, $$54, $$55]  |PARTITIONED|
-            exchange 
-            -- HASH_PARTITION_EXCHANGE [$$53, $$54, $$55]  |PARTITIONED|
-              group by ([$$53 := %0->$$1; $$54 := %0->$$2; $$55 := %0->$$45]) decor ([]) {
-                        aggregate [$$52] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$46]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$1, $$2, $$45]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$1, $$2, $$45, $$46])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    assign [$$45, $$46] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFYear, Args:[%0->$$30], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$25, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$26]]]
-                    -- ASSIGN  |PARTITIONED|
-                      project ([$$1, $$2, $$30, $$25, $$26])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$15, %0->$$4], function-call: algebricks:eq, Args:[%0->$$8, %0->$$3]])
-                          -- HYBRID_HASH_JOIN [$$15, $$8][$$4, $$3]  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$15, $$8]  |PARTITIONED|
-                              project ([$$8, $$30, $$25, $$26, $$15])
-                              -- STREAM_PROJECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (function-call: algebricks:eq, Args:[%0->$$22, %0->$$5])
-                                  -- HYBRID_HASH_JOIN [$$22][$$5]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-                                      project ([$$15, $$30, $$25, $$26, $$22])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          join (function-call: algebricks:eq, Args:[%0->$$37, %0->$$12])
-                                          -- HYBRID_HASH_JOIN [$$37][$$12]  |PARTITIONED|
-                                            exchange 
-                                            -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-                                              project ([$$37, $$22, $$25, $$26, $$30])
-                                              -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  join (function-call: algebricks:eq, Args:[%0->$$20, %0->$$36])
-                                                  -- HYBRID_HASH_JOIN [$$20][$$36]  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                                                      select (function-call: algebricks:and, Args:[function-call: algebricks:le, Args:[%0->$$30, 1996-12-31], function-call: algebricks:ge, Args:[%0->$$30, 1995-01-01], function-call: algebricks:le, Args:[%0->$$30, 1996-12-31]])
-                                                      -- STREAM_SELECT  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan [$$20, $$22, $$25, $$26, $$30]<-[$$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35] <- default.lineitem
-                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source
-                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                                                      data-scan [$$36, $$37]<-[$$36, $$37, $$38, $$39, $$40, $$41, $$42, $$43, $$44] <- default.orders
-                                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source
-                                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange 
-                                            -- HASH_PARTITION_EXCHANGE [$$12]  |PARTITIONED|
-                                              data-scan [$$12, $$15]<-[$$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19] <- default.customer
-                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source
-                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                                      data-scan [$$5, $$8]<-[$$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.supplier
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$4, $$3]  |PARTITIONED|
-                              data-scan [$$4, $$3, $$1, $$2]<-[$$1, $$2, $$3, $$4] <- default.q7_volume_shipping_tmp
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q8_national_market_share.plan b/hivesterix/src/test/resources/optimizerts/results/q8_national_market_share.plan
deleted file mode 100644
index b807a24..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q8_national_market_share.plan
+++ /dev/null
@@ -1,190 +0,0 @@
-write [%0->$$63, %0->$$66]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$63(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$63) 
-    -- STABLE_SORT [$$63(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$63, $$66])
-        -- STREAM_PROJECT  |PARTITIONED|
-          assign [$$66] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPDivide, Args:[%0->$$64, %0->$$65]]
-          -- ASSIGN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              group by ([$$63 := %0->$$70]) decor ([]) {
-                        aggregate [$$64, $$65] <- [function-call: hive:sum(FINAL), Args:[%0->$$68], function-call: hive:sum(FINAL), Args:[%0->$$69]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$70]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$70]  |PARTITIONED|
-                  group by ([$$70 := %0->$$61]) decor ([]) {
-                            aggregate [$$68, $$69] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: algebricks:eq, Args:[%0->$$2, BRAZIL], %0->$$62, 0.0]], function-call: hive:sum(PARTIAL1), Args:[%0->$$62]]
-                            -- AGGREGATE  |LOCAL|
-                              nested tuple source
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         }
-                  -- EXTERNAL_GROUP_BY[$$61]  |LOCAL|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$61, $$62, $$2])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        assign [$$61, $$62] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFYear, Args:[%0->$$41], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$26, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$27]]]
-                        -- ASSIGN  |PARTITIONED|
-                          project ([$$2, $$41, $$27, $$26])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$8, %0->$$1])
-                              -- HYBRID_HASH_JOIN [$$8][$$1]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$8]  |PARTITIONED|
-                                  project ([$$8, $$41, $$27, $$26])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$23, %0->$$5])
-                                      -- HYBRID_HASH_JOIN [$$23][$$5]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$23]  |PARTITIONED|
-                                          project ([$$41, $$27, $$26, $$23])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (function-call: algebricks:eq, Args:[%0->$$22, %0->$$12])
-                                              -- HYBRID_HASH_JOIN [$$22][$$12]  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-                                                  project ([$$41, $$22, $$23, $$26, $$27])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      join (function-call: algebricks:eq, Args:[%0->$$21, %0->$$37])
-                                                      -- HYBRID_HASH_JOIN [$$21][$$37]  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-                                                          data-scan [$$21, $$22, $$23, $$26, $$27]<-[$$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36] <- default.lineitem
-                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source
-                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-                                                          project ([$$37, $$41])
-                                                          -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              join (function-call: algebricks:eq, Args:[%0->$$46, %0->$$38])
-                                                              -- HYBRID_HASH_JOIN [$$46][$$38]  |PARTITIONED|
-                                                                exchange 
-                                                                -- HASH_PARTITION_EXCHANGE [$$46]  |PARTITIONED|
-                                                                  project ([$$46])
-                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange 
-                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      join (function-call: algebricks:eq, Args:[%0->$$54, %0->$$49])
-                                                                      -- HYBRID_HASH_JOIN [$$54][$$49]  |PARTITIONED|
-                                                                        exchange 
-                                                                        -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
-                                                                          project ([$$54])
-                                                                          -- STREAM_PROJECT  |PARTITIONED|
-                                                                            exchange 
-                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              join (function-call: algebricks:eq, Args:[%0->$$58, %0->$$56])
-                                                                              -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                                                                                exchange 
-                                                                                -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                                                                                  project ([$$58])
-                                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                                    select (function-call: algebricks:eq, Args:[%0->$$59, AMERICA])
-                                                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                                                      exchange 
-                                                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        data-scan [$$59, $$58]<-[$$58, $$59, $$60] <- default.region
-                                                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                          exchange 
-                                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            empty-tuple-source
-                                                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                exchange 
-                                                                                -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                                                                  project ([$$56, $$54])
-                                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                                    exchange 
-                                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                      replicate 
-                                                                                      -- SPLIT  |PARTITIONED|
-                                                                                        exchange 
-                                                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                          data-scan []<-[$$54, $$55, $$56, $$57] <- default.nation
-                                                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                            exchange 
-                                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              empty-tuple-source
-                                                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                        exchange 
-                                                                        -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
-                                                                          data-scan [$$49, $$46]<-[$$46, $$47, $$48, $$49, $$50, $$51, $$52, $$53] <- default.customer
-                                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                            exchange 
-                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              empty-tuple-source
-                                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                exchange 
-                                                                -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                                                                  project ([$$38, $$37, $$41])
-                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$41, 1996-12-31], function-call: algebricks:ge, Args:[%0->$$41, 1995-01-01]])
-                                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                                      exchange 
-                                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        data-scan [$$38, $$37, $$41]<-[$$37, $$38, $$39, $$40, $$41, $$42, $$43, $$44, $$45] <- default.orders
-                                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange 
-                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source
-                                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$12]  |PARTITIONED|
-                                                  project ([$$12])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    select (function-call: algebricks:eq, Args:[%0->$$16, ECONOMY ANODIZED STEEL])
-                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                      exchange 
-                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan [$$16, $$12]<-[$$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20] <- default.part
-                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange 
-                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source
-                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                                          data-scan [$$5, $$8]<-[$$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.supplier
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                  project ([$$1, $$2])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    assign [$$1, $$2, $$3, $$4] <- [%0->$$54, %0->$$55, %0->$$56, %0->$$57]
-                                    -- ASSIGN  |UNPARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate 
-                                        -- SPLIT  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$54, $$55, $$56, $$57] <- default.nation
-                                            -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source
-                                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q9_product_type_profit.plan b/hivesterix/src/test/resources/optimizerts/results/q9_product_type_profit.plan
deleted file mode 100644
index f57f4a3..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q9_product_type_profit.plan
+++ /dev/null
@@ -1,124 +0,0 @@
-write [%0->$$53, %0->$$54, %0->$$55]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$53, $$54, $$55])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(DESC) ]  |PARTITIONED|
-      order (ASC, %0->$$53) (DESC, %0->$$54) 
-      -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |LOCAL|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$$53 := %0->$$58; $$54 := %0->$$59]) decor ([]) {
-                    aggregate [$$55] <- [function-call: hive:sum(FINAL), Args:[%0->$$57]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$58, $$59]  |PARTITIONED|
-            exchange 
-            -- HASH_PARTITION_EXCHANGE [$$58, $$59]  |PARTITIONED|
-              group by ([$$58 := %0->$$48; $$59 := %0->$$51]) decor ([]) {
-                        aggregate [$$57] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$52]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$48, $$51]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$48, $$51, $$52])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    assign [$$51, $$52] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFYear, Args:[%0->$$5], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$29, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$30]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$22, %0->$$28]]]
-                    -- ASSIGN  |PARTITIONED|
-                      project ([$$5, $$29, $$30, $$28, $$48, $$22])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (function-call: algebricks:eq, Args:[%0->$$24, %0->$$1])
-                          -- HYBRID_HASH_JOIN [$$24][$$1]  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$24]  |PARTITIONED|
-                              project ([$$29, $$30, $$28, $$24, $$48, $$22])
-                              -- STREAM_PROJECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (function-call: algebricks:eq, Args:[%0->$$25, %0->$$10])
-                                  -- HYBRID_HASH_JOIN [$$25][$$10]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-                                      project ([$$22, $$29, $$30, $$28, $$25, $$24, $$48])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$26, %0->$$20], function-call: algebricks:eq, Args:[%0->$$25, %0->$$19]])
-                                          -- HYBRID_HASH_JOIN [$$26, $$25][$$20, $$19]  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              project ([$$48, $$24, $$25, $$26, $$28, $$29, $$30])
-                                              -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  join (function-call: algebricks:eq, Args:[%0->$$26, %0->$$40])
-                                                  -- HYBRID_HASH_JOIN [$$26][$$40]  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                                                      data-scan [$$26, $$24, $$25, $$28, $$29, $$30]<-[$$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36, $$37, $$38, $$39] <- default.lineitem
-                                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source
-                                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$40]  |PARTITIONED|
-                                                      project ([$$40, $$48])
-                                                      -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          join (function-call: algebricks:eq, Args:[%0->$$43, %0->$$47])
-                                                          -- HYBRID_HASH_JOIN [$$43][$$47]  |PARTITIONED|
-                                                            exchange 
-                                                            -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-                                                              data-scan [$$43, $$40]<-[$$40, $$41, $$42, $$43, $$44, $$45, $$46] <- default.supplier
-                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange 
-                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source
-                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            exchange 
-                                                            -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
-                                                              data-scan [$$47, $$48]<-[$$47, $$48, $$49, $$50] <- default.nation
-                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange 
-                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source
-                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange 
-                                            -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                                              data-scan [$$20, $$19, $$22]<-[$$19, $$20, $$21, $$22, $$23] <- default.partsupp
-                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source
-                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                                      project ([$$10])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        select (function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$11, %green%])
-                                        -- STREAM_SELECT  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan [$$10, $$11]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18] <- default.part
-                                            -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source
-                                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                              data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u10_nestedloop_join.plan b/hivesterix/src/test/resources/optimizerts/results/u10_nestedloop_join.plan
deleted file mode 100644
index c86d57f..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u10_nestedloop_join.plan
+++ /dev/null
@@ -1,24 +0,0 @@
-write [%0->$$6, %0->$$2, %0->$$5, %0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$2, $$5, $$1])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$5, %0->$$1], true])
-      -- NESTED_LOOP  |PARTITIONED|
-        exchange 
-        -- BROADCAST_EXCHANGE  |PARTITIONED|
-          data-scan [$$1, $$2]<-[$$1, $$2, $$3, $$4] <- default.nation
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan [$$5, $$6]<-[$$5, $$6, $$7, $$8] <- default.nation
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u1_group_by.plan b/hivesterix/src/test/resources/optimizerts/results/u1_group_by.plan
deleted file mode 100644
index 188aa6d..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u1_group_by.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-write [%0->$$18, %0->$$19]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$18, $$19])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$23]) decor ([]) {
-                aggregate [$$18, $$19] <- [function-call: hive:sum(FINAL), Args:[%0->$$21], function-call: hive:sum(FINAL), Args:[%0->$$22]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$23]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$23]  |PARTITIONED|
-          group by ([$$23 := %0->$$9]) decor ([]) {
-                    aggregate [$$21, $$22] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFAbs, Args:[%0->$$5]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPPlus, Args:[1, %0->$$8]]]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$9]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$9, $$5, $$6, $$7, $$8])
-              -- STREAM_PROJECT  |PARTITIONED|
-                select (function-call: algebricks:le, Args:[%0->$$11, 1998-09-02])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$5, $$6, $$7, $$8, $$9, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u2_select-project.plan b/hivesterix/src/test/resources/optimizerts/results/u2_select-project.plan
deleted file mode 100644
index 4485b36..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u2_select-project.plan
+++ /dev/null
@@ -1,16 +0,0 @@
-write [%0->$$8, %0->$$3, %0->$$4, %0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$8, $$3, $$4, $$2])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$8] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[2, %0->$$1]]
-    -- ASSIGN  |PARTITIONED|
-      select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 20])
-      -- STREAM_SELECT  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan []<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u3_union.plan b/hivesterix/src/test/resources/optimizerts/results/u3_union.plan
deleted file mode 100644
index c4040f2..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u3_union.plan
+++ /dev/null
@@ -1,38 +0,0 @@
-write [%0->$$17, %0->$$18, %0->$$19, %0->$$20]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    union ($$8, $$16, $$17) ($$3, $$11, $$18) ($$4, $$12, $$19) ($$2, $$10, $$20)
-    -- UNION_ALL  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$8, $$3, $$4, $$2])
-        -- STREAM_PROJECT  |PARTITIONED|
-          assign [$$8] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[2, %0->$$1]]
-          -- ASSIGN  |PARTITIONED|
-            select (function-call: algebricks:gt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 50])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$16, $$11, $$12, $$10])
-        -- STREAM_PROJECT  |PARTITIONED|
-          assign [$$16] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[2, %0->$$9]]
-          -- ASSIGN  |PARTITIONED|
-            select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$9, 2], 20])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$9, $$10, $$11, $$12, $$13, $$14, $$15] <- default.supplier
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u4_join.plan b/hivesterix/src/test/resources/optimizerts/results/u4_join.plan
deleted file mode 100644
index 449a601..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u4_join.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-write [%0->$$1, %0->$$2, %0->$$3, %0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 20])
-  -- STREAM_SELECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      data-scan [$$1, $$2, $$3, $$4]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-      -- DATASOURCE_SCAN  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          empty-tuple-source
-          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$1, %0->$$9, %0->$$10, %0->$$11]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$1, $$9, $$10, $$11])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$5, %0->$$1])
-      -- HYBRID_HASH_JOIN [$$5][$$1]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-          data-scan [$$5, $$9, $$10, $$11]<-[$$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.supplier
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          data-scan [$$1]<-[$$1, $$2, $$3, $$4] <- default.result
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u5_lateral_view.plan b/hivesterix/src/test/resources/optimizerts/results/u5_lateral_view.plan
deleted file mode 100644
index 48e624e..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u5_lateral_view.plan
+++ /dev/null
@@ -1,14 +0,0 @@
-write [%0->$$2, %0->$$3, %0->$$8]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$2, $$3, $$8])
-  -- STREAM_PROJECT  |PARTITIONED|
-    unnest $$8 <- function-call: hive:explode, Args:[%0->$$1]
-    -- UNNEST  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        data-scan [$$1, $$2, $$3]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-        -- DATASOURCE_SCAN  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            empty-tuple-source
-            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u6_limit.plan b/hivesterix/src/test/resources/optimizerts/results/u6_limit.plan
deleted file mode 100644
index b5ed12f..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u6_limit.plan
+++ /dev/null
@@ -1,26 +0,0 @@
-write [%0->$$1, %0->$$4, %0->$$5, %0->$$7]
--- SINK_WRITE  |UNPARTITIONED|
-  limit 4
-  -- STREAM_LIMIT  |UNPARTITIONED|
-    limit 4
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$4(ASC) ]  |PARTITIONED|
-        limit 4
-        -- STREAM_LIMIT  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-            order (ASC, %0->$$4) 
-            -- STABLE_SORT [$$4(ASC)]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (function-call: algebricks:lt, Args:[%0->$$4, 10000])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$1, $$4, $$5, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u7_multi_join.plan b/hivesterix/src/test/resources/optimizerts/results/u7_multi_join.plan
deleted file mode 100644
index ab55181..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u7_multi_join.plan
+++ /dev/null
@@ -1,52 +0,0 @@
-write [%0->$$4, %0->$$25, %0->$$28, %0->$$29, %0->$$32]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$4, $$25, $$28, $$29, $$32])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$25])
-      -- HYBRID_HASH_JOIN [$$1][$$25]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          data-scan [$$1, $$4]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-          project ([$$32, $$25, $$29, $$28])
-          -- STREAM_PROJECT  |PARTITIONED|
-            project ([$$25, $$17, $$28, $$29, $$32])
-            -- STREAM_PROJECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (function-call: algebricks:eq, Args:[%0->$$26, %0->$$17])
-                -- HYBRID_HASH_JOIN [$$26][$$17]  |PARTITIONED|
-                  exchange 
-                  -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$28, 30000], function-call: algebricks:lt, Args:[%0->$$28, 30000]])
-                    -- STREAM_SELECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan [$$32, $$25, $$26, $$29, $$28]<-[$$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33] <- default.orders
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange 
-                  -- HASH_PARTITION_EXCHANGE [$$17]  |PARTITIONED|
-                    project ([$$17])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$17, 5], function-call: algebricks:lt, Args:[%0->$$17, 5]])
-                      -- STREAM_SELECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$17]<-[$$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24] <- default.customer
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u8_non_mapred.plan b/hivesterix/src/test/resources/optimizerts/results/u8_non_mapred.plan
deleted file mode 100644
index e69de29..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u8_non_mapred.plan
+++ /dev/null
diff --git a/hivesterix/src/test/resources/optimizerts/results/u9_order_by.plan b/hivesterix/src/test/resources/optimizerts/results/u9_order_by.plan
deleted file mode 100644
index 7370fcf..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u9_order_by.plan
+++ /dev/null
@@ -1,18 +0,0 @@
-write [%0->$$1, %0->$$2, %0->$$3, %0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$2(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$2) 
-    -- STABLE_SORT [$$2(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 20])
-        -- STREAM_SELECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan [$$1, $$2, $$3, $$4]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/conf/cluster b/hivesterix/src/test/resources/runtimefunctionts/conf/cluster
deleted file mode 100644
index ee81dc1..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/conf/cluster
+++ /dev/null
@@ -1,3 +0,0 @@
-2
-127.0.0.1 nc0
-127.0.0.1 nc1
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/customer.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/customer.tbl
deleted file mode 100644
index 5d39c80..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/customer.tbl
+++ /dev/null
@@ -1,150 +0,0 @@
-1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e|
-2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref|
-3|Customer#000000003|MG9kdTD2WBHm|1|11-719-748-3364|7498.12|AUTOMOBILE| deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov|
-4|Customer#000000004|XxVSJsLAGtn|4|14-128-190-5944|2866.83|MACHINERY| requests. final, regular ideas sleep final accou|
-5|Customer#000000005|KvpyuHCplrB84WgAiGV6sYpZq7Tj|3|13-750-942-6364|794.47|HOUSEHOLD|n accounts will have to unwind. foxes cajole accor|
-6|Customer#000000006|sKZz0CsnMD7mp4Xd0YrBvx,LREYKUWAh yVn|20|30-114-968-4951|7638.57|AUTOMOBILE|tions. even deposits boost according to the slyly bold packages. final accounts cajole requests. furious|
-7|Customer#000000007|TcGe5gaZNgVePxU5kRrvXBfkasDTea|18|28-190-982-9759|9561.95|AUTOMOBILE|ainst the ironic, express theodolites. express, even pinto beans among the exp|
-8|Customer#000000008|I0B10bB0AymmC, 0PrRYBCP1yGJ8xcBPmWhl5|17|27-147-574-9335|6819.74|BUILDING|among the slyly regular theodolites kindle blithely courts. carefully even theodolites haggle slyly along the ide|
-9|Customer#000000009|xKiAFTjUsCuxfeleNqefumTrjS|8|18-338-906-3675|8324.07|FURNITURE|r theodolites according to the requests wake thinly excuses: pending requests haggle furiousl|
-10|Customer#000000010|6LrEaV6KR6PLVcgl2ArL Q3rqzLzcT1 v2|5|15-741-346-9870|2753.54|HOUSEHOLD|es regular deposits haggle. fur|
-11|Customer#000000011|PkWS 3HlXqwTuzrKg633BEi|23|33-464-151-3439|-272.60|BUILDING|ckages. requests sleep slyly. quickly even pinto beans promise above the slyly regular pinto beans. |
-12|Customer#000000012|9PWKuhzT4Zr1Q|13|23-791-276-1263|3396.49|HOUSEHOLD| to the carefully final braids. blithely regular requests nag. ironic theodolites boost quickly along|
-13|Customer#000000013|nsXQu0oVjD7PM659uC3SRSp|3|13-761-547-5974|3857.34|BUILDING|ounts sleep carefully after the close frays. carefully bold notornis use ironic requests. blithely|
-14|Customer#000000014|KXkletMlL2JQEA |1|11-845-129-3851|5266.30|FURNITURE|, ironic packages across the unus|
-15|Customer#000000015|YtWggXoOLdwdo7b0y,BZaGUQMLJMX1Y,EC,6Dn|23|33-687-542-7601|2788.52|HOUSEHOLD| platelets. regular deposits detect asymptotes. blithely unusual packages nag slyly at the fluf|
-16|Customer#000000016|cYiaeMLZSMAOQ2 d0W,|10|20-781-609-3107|4681.03|FURNITURE|kly silent courts. thinly regular theodolites sleep fluffily after |
-17|Customer#000000017|izrh 6jdqtp2eqdtbkswDD8SG4SzXruMfIXyR7|2|12-970-682-3487|6.34|AUTOMOBILE|packages wake! blithely even pint|
-18|Customer#000000018|3txGO AiuFux3zT0Z9NYaFRnZt|6|16-155-215-1315|5494.43|BUILDING|s sleep. carefully even instructions nag furiously alongside of t|
-19|Customer#000000019|uc,3bHIx84H,wdrmLOjVsiqXCq2tr|18|28-396-526-5053|8914.71|HOUSEHOLD| nag. furiously careful packages are slyly at the accounts. furiously regular in|
-20|Customer#000000020|JrPk8Pqplj4Ne|22|32-957-234-8742|7603.40|FURNITURE|g alongside of the special excuses-- fluffily enticing packages wake |
-21|Customer#000000021|XYmVpr9yAHDEn|8|18-902-614-8344|1428.25|MACHINERY| quickly final accounts integrate blithely furiously u|
-22|Customer#000000022|QI6p41,FNs5k7RZoCCVPUTkUdYpB|3|13-806-545-9701|591.98|MACHINERY|s nod furiously above the furiously ironic ideas. |
-23|Customer#000000023|OdY W13N7Be3OC5MpgfmcYss0Wn6TKT|3|13-312-472-8245|3332.02|HOUSEHOLD|deposits. special deposits cajole slyly. fluffily special deposits about the furiously |
-24|Customer#000000024|HXAFgIAyjxtdqwimt13Y3OZO 4xeLe7U8PqG|13|23-127-851-8031|9255.67|MACHINERY|into beans. fluffily final ideas haggle fluffily|
-25|Customer#000000025|Hp8GyFQgGHFYSilH5tBfe|12|22-603-468-3533|7133.70|FURNITURE|y. accounts sleep ruthlessly according to the regular theodolites. unusual instructions sleep. ironic, final|
-26|Customer#000000026|8ljrc5ZeMl7UciP|22|32-363-455-4837|5182.05|AUTOMOBILE|c requests use furiously ironic requests. slyly ironic dependencies us|
-27|Customer#000000027|IS8GIyxpBrLpMT0u7|3|13-137-193-2709|5679.84|BUILDING| about the carefully ironic pinto beans. accoun|
-28|Customer#000000028|iVyg0daQ,Tha8x2WPWA9m2529m|8|18-774-241-1462|1007.18|FURNITURE| along the regular deposits. furiously final pac|
-29|Customer#000000029|sJ5adtfyAkCK63df2,vF25zyQMVYE34uh|0|10-773-203-7342|7618.27|FURNITURE|its after the carefully final platelets x-ray against |
-30|Customer#000000030|nJDsELGAavU63Jl0c5NKsKfL8rIJQQkQnYL2QJY|1|11-764-165-5076|9321.01|BUILDING|lithely final requests. furiously unusual account|
-31|Customer#000000031|LUACbO0viaAv6eXOAebryDB xjVst|23|33-197-837-7094|5236.89|HOUSEHOLD|s use among the blithely pending depo|
-32|Customer#000000032|jD2xZzi UmId,DCtNBLXKj9q0Tlp2iQ6ZcO3J|15|25-430-914-2194|3471.53|BUILDING|cial ideas. final, furious requests across the e|
-33|Customer#000000033|qFSlMuLucBmx9xnn5ib2csWUweg D|17|27-375-391-1280|-78.56|AUTOMOBILE|s. slyly regular accounts are furiously. carefully pending requests|
-34|Customer#000000034|Q6G9wZ6dnczmtOx509xgE,M2KV|15|25-344-968-5422|8589.70|HOUSEHOLD|nder against the even, pending accounts. even|
-35|Customer#000000035|TEjWGE4nBzJL2|17|27-566-888-7431|1228.24|HOUSEHOLD|requests. special, express requests nag slyly furiousl|
-36|Customer#000000036|3TvCzjuPzpJ0,DdJ8kW5U|21|31-704-669-5769|4987.27|BUILDING|haggle. enticing, quiet platelets grow quickly bold sheaves. carefully regular acc|
-37|Customer#000000037|7EV4Pwh,3SboctTWt|8|18-385-235-7162|-917.75|FURNITURE|ilent packages are carefully among the deposits. furiousl|
-38|Customer#000000038|a5Ee5e9568R8RLP 2ap7|12|22-306-880-7212|6345.11|HOUSEHOLD|lar excuses. closely even asymptotes cajole blithely excuses. carefully silent pinto beans sleep carefully fin|
-39|Customer#000000039|nnbRg,Pvy33dfkorYE FdeZ60|2|12-387-467-6509|6264.31|AUTOMOBILE|tions. slyly silent excuses slee|
-40|Customer#000000040|gOnGWAyhSV1ofv|3|13-652-915-8939|1335.30|BUILDING|rges impress after the slyly ironic courts. foxes are. blithely |
-41|Customer#000000041|IM9mzmyoxeBmvNw8lA7G3Ydska2nkZF|10|20-917-711-4011|270.95|HOUSEHOLD|ly regular accounts hang bold, silent packages. unusual foxes haggle slyly above the special, final depo|
-42|Customer#000000042|ziSrvyyBke|5|15-416-330-4175|8727.01|BUILDING|ssly according to the pinto beans: carefully special requests across the even, pending accounts wake special|
-43|Customer#000000043|ouSbjHk8lh5fKX3zGso3ZSIj9Aa3PoaFd|19|29-316-665-2897|9904.28|MACHINERY|ial requests: carefully pending foxes detect quickly. carefully final courts cajole quickly. carefully|
-44|Customer#000000044|Oi,dOSPwDu4jo4x,,P85E0dmhZGvNtBwi|16|26-190-260-5375|7315.94|AUTOMOBILE|r requests around the unusual, bold a|
-45|Customer#000000045|4v3OcpFgoOmMG,CbnF,4mdC|9|19-715-298-9917|9983.38|AUTOMOBILE|nto beans haggle slyly alongside of t|
-46|Customer#000000046|eaTXWWm10L9|6|16-357-681-2007|5744.59|AUTOMOBILE|ctions. accounts sleep furiously even requests. regular, regular accounts cajole blithely around the final pa|
-47|Customer#000000047|b0UgocSqEW5 gdVbhNT|2|12-427-271-9466|274.58|BUILDING|ions. express, ironic instructions sleep furiously ironic ideas. furi|
-48|Customer#000000048|0UU iPhBupFvemNB|0|10-508-348-5882|3792.50|BUILDING|re fluffily pending foxes. pending, bold platelets sleep slyly. even platelets cajo|
-49|Customer#000000049|cNgAeX7Fqrdf7HQN9EwjUa4nxT,68L FKAxzl|10|20-908-631-4424|4573.94|FURNITURE|nusual foxes! fluffily pending packages maintain to the regular |
-50|Customer#000000050|9SzDYlkzxByyJ1QeTI o|6|16-658-112-3221|4266.13|MACHINERY|ts. furiously ironic accounts cajole furiously slyly ironic dinos.|
-51|Customer#000000051|uR,wEaiTvo4|12|22-344-885-4251|855.87|FURNITURE|eposits. furiously regular requests integrate carefully packages. furious|
-52|Customer#000000052|7 QOqGqqSy9jfV51BC71jcHJSD0|11|21-186-284-5998|5630.28|HOUSEHOLD|ic platelets use evenly even accounts. stealthy theodolites cajole furiou|
-53|Customer#000000053|HnaxHzTfFTZs8MuCpJyTbZ47Cm4wFOOgib|15|25-168-852-5363|4113.64|HOUSEHOLD|ar accounts are. even foxes are blithely. fluffily pending deposits boost|
-54|Customer#000000054|,k4vf 5vECGWFy,hosTE,|4|14-776-370-4745|868.90|AUTOMOBILE|sual, silent accounts. furiously express accounts cajole special deposits. final, final accounts use furi|
-55|Customer#000000055|zIRBR4KNEl HzaiV3a i9n6elrxzDEh8r8pDom|10|20-180-440-8525|4572.11|MACHINERY|ully unusual packages wake bravely bold packages. unusual requests boost deposits! blithely ironic packages ab|
-56|Customer#000000056|BJYZYJQk4yD5B|10|20-895-685-6920|6530.86|FURNITURE|. notornis wake carefully. carefully fluffy requests are furiously even accounts. slyly expre|
-57|Customer#000000057|97XYbsuOPRXPWU|21|31-835-306-1650|4151.93|AUTOMOBILE|ove the carefully special packages. even, unusual deposits sleep slyly pend|
-58|Customer#000000058|g9ap7Dk1Sv9fcXEWjpMYpBZIRUohi T|13|23-244-493-2508|6478.46|HOUSEHOLD|ideas. ironic ideas affix furiously express, final instructions. regular excuses use quickly e|
-59|Customer#000000059|zLOCP0wh92OtBihgspOGl4|1|11-355-584-3112|3458.60|MACHINERY|ously final packages haggle blithely after the express deposits. furiou|
-60|Customer#000000060|FyodhjwMChsZmUz7Jz0H|12|22-480-575-5866|2741.87|MACHINERY|latelets. blithely unusual courts boost furiously about the packages. blithely final instruct|
-61|Customer#000000061|9kndve4EAJxhg3veF BfXr7AqOsT39o gtqjaYE|17|27-626-559-8599|1536.24|FURNITURE|egular packages shall have to impress along the |
-62|Customer#000000062|upJK2Dnw13,|7|17-361-978-7059|595.61|MACHINERY|kly special dolphins. pinto beans are slyly. quickly regular accounts are furiously a|
-63|Customer#000000063|IXRSpVWWZraKII|21|31-952-552-9584|9331.13|AUTOMOBILE|ithely even accounts detect slyly above the fluffily ir|
-64|Customer#000000064|MbCeGY20kaKK3oalJD,OT|3|13-558-731-7204|-646.64|BUILDING|structions after the quietly ironic theodolites cajole be|
-65|Customer#000000065|RGT yzQ0y4l0H90P783LG4U95bXQFDRXbWa1sl,X|23|33-733-623-5267|8795.16|AUTOMOBILE|y final foxes serve carefully. theodolites are carefully. pending i|
-66|Customer#000000066|XbsEqXH1ETbJYYtA1A|22|32-213-373-5094|242.77|HOUSEHOLD|le slyly accounts. carefully silent packages benea|
-67|Customer#000000067|rfG0cOgtr5W8 xILkwp9fpCS8|9|19-403-114-4356|8166.59|MACHINERY|indle furiously final, even theodo|
-68|Customer#000000068|o8AibcCRkXvQFh8hF,7o|12|22-918-832-2411|6853.37|HOUSEHOLD| pending pinto beans impress realms. final dependencies |
-69|Customer#000000069|Ltx17nO9Wwhtdbe9QZVxNgP98V7xW97uvSH1prEw|9|19-225-978-5670|1709.28|HOUSEHOLD|thely final ideas around the quickly final dependencies affix carefully quickly final theodolites. final accounts c|
-70|Customer#000000070|mFowIuhnHjp2GjCiYYavkW kUwOjIaTCQ|22|32-828-107-2832|4867.52|FURNITURE|fter the special asymptotes. ideas after the unusual frets cajole quickly regular pinto be|
-71|Customer#000000071|TlGalgdXWBmMV,6agLyWYDyIz9MKzcY8gl,w6t1B|7|17-710-812-5403|-611.19|HOUSEHOLD|g courts across the regular, final pinto beans are blithely pending ac|
-72|Customer#000000072|putjlmskxE,zs,HqeIA9Wqu7dhgH5BVCwDwHHcf|2|12-759-144-9689|-362.86|FURNITURE|ithely final foxes sleep always quickly bold accounts. final wat|
-73|Customer#000000073|8IhIxreu4Ug6tt5mog4|0|10-473-439-3214|4288.50|BUILDING|usual, unusual packages sleep busily along the furiou|
-74|Customer#000000074|IkJHCA3ZThF7qL7VKcrU nRLl,kylf |4|14-199-862-7209|2764.43|MACHINERY|onic accounts. blithely slow packages would haggle carefully. qui|
-75|Customer#000000075|Dh 6jZ,cwxWLKQfRKkiGrzv6pm|18|28-247-803-9025|6684.10|AUTOMOBILE| instructions cajole even, even deposits. finally bold deposits use above the even pains. slyl|
-76|Customer#000000076|m3sbCvjMOHyaOofH,e UkGPtqc4|0|10-349-718-3044|5745.33|FURNITURE|pecial deposits. ironic ideas boost blithely according to the closely ironic theodolites! furiously final deposits n|
-77|Customer#000000077|4tAE5KdMFGD4byHtXF92vx|17|27-269-357-4674|1738.87|BUILDING|uffily silent requests. carefully ironic asymptotes among the ironic hockey players are carefully bli|
-78|Customer#000000078|HBOta,ZNqpg3U2cSL0kbrftkPwzX|9|19-960-700-9191|7136.97|FURNITURE|ests. blithely bold pinto beans h|
-79|Customer#000000079|n5hH2ftkVRwW8idtD,BmM2|15|25-147-850-4166|5121.28|MACHINERY|es. packages haggle furiously. regular, special requests poach after the quickly express ideas. blithely pending re|
-80|Customer#000000080|K,vtXp8qYB |0|10-267-172-7101|7383.53|FURNITURE|tect among the dependencies. bold accounts engage closely even pinto beans. ca|
-81|Customer#000000081|SH6lPA7JiiNC6dNTrR|20|30-165-277-3269|2023.71|BUILDING|r packages. fluffily ironic requests cajole fluffily. ironically regular theodolit|
-82|Customer#000000082|zhG3EZbap4c992Gj3bK,3Ne,Xn|18|28-159-442-5305|9468.34|AUTOMOBILE|s wake. bravely regular accounts are furiously. regula|
-83|Customer#000000083|HnhTNB5xpnSF20JBH4Ycs6psVnkC3RDf|22|32-817-154-4122|6463.51|BUILDING|ccording to the quickly bold warhorses. final, regular foxes integrate carefully. bold packages nag blithely ev|
-84|Customer#000000084|lpXz6Fwr9945rnbtMc8PlueilS1WmASr CB|11|21-546-818-3802|5174.71|FURNITURE|ly blithe foxes. special asymptotes haggle blithely against the furiously regular depo|
-85|Customer#000000085|siRerlDwiolhYR 8FgksoezycLj|5|15-745-585-8219|3386.64|FURNITURE|ronic ideas use above the slowly pendin|
-86|Customer#000000086|US6EGGHXbTTXPL9SBsxQJsuvy|0|10-677-951-2353|3306.32|HOUSEHOLD|quests. pending dugouts are carefully aroun|
-87|Customer#000000087|hgGhHVSWQl 6jZ6Ev|23|33-869-884-7053|6327.54|FURNITURE|hely ironic requests integrate according to the ironic accounts. slyly regular pla|
-88|Customer#000000088|wtkjBN9eyrFuENSMmMFlJ3e7jE5KXcg|16|26-516-273-2566|8031.44|AUTOMOBILE|s are quickly above the quickly ironic instructions; even requests about the carefully final deposi|
-89|Customer#000000089|dtR, y9JQWUO6FoJExyp8whOU|14|24-394-451-5404|1530.76|FURNITURE|counts are slyly beyond the slyly final accounts. quickly final ideas wake. r|
-90|Customer#000000090|QxCzH7VxxYUWwfL7|16|26-603-491-1238|7354.23|BUILDING|sly across the furiously even |
-91|Customer#000000091|S8OMYFrpHwoNHaGBeuS6E 6zhHGZiprw1b7 q|8|18-239-400-3677|4643.14|AUTOMOBILE|onic accounts. fluffily silent pinto beans boost blithely according to the fluffily exp|
-92|Customer#000000092|obP PULk2LH LqNF,K9hcbNqnLAkJVsl5xqSrY,|2|12-446-416-8471|1182.91|MACHINERY|. pinto beans hang slyly final deposits. ac|
-93|Customer#000000093|EHXBr2QGdh|7|17-359-388-5266|2182.52|MACHINERY|press deposits. carefully regular platelets r|
-94|Customer#000000094|IfVNIN9KtkScJ9dUjK3Pg5gY1aFeaXewwf|9|19-953-499-8833|5500.11|HOUSEHOLD|latelets across the bold, final requests sleep according to the fluffily bold accounts. unusual deposits amon|
-95|Customer#000000095|EU0xvmWvOmUUn5J,2z85DQyG7QCJ9Xq7|15|25-923-255-2929|5327.38|MACHINERY|ithely. ruthlessly final requests wake slyly alongside of the furiously silent pinto beans. even the|
-96|Customer#000000096|vWLOrmXhRR|8|18-422-845-1202|6323.92|AUTOMOBILE|press requests believe furiously. carefully final instructions snooze carefully. |
-97|Customer#000000097|OApyejbhJG,0Iw3j rd1M|17|27-588-919-5638|2164.48|AUTOMOBILE|haggle slyly. bold, special ideas are blithely above the thinly bold theo|
-98|Customer#000000098|7yiheXNSpuEAwbswDW|12|22-885-845-6889|-551.37|BUILDING|ages. furiously pending accounts are quickly carefully final foxes: busily pe|
-99|Customer#000000099|szsrOiPtCHVS97Lt|15|25-515-237-9232|4088.65|HOUSEHOLD|cajole slyly about the regular theodolites! furiously bold requests nag along the pending, regular packages. somas|
-100|Customer#000000100|fptUABXcmkC5Wx|20|30-749-445-4907|9889.89|FURNITURE|was furiously fluffily quiet deposits. silent, pending requests boost against |
-101|Customer#000000101|sMmL2rNeHDltovSm Y|2|12-514-298-3699|7470.96|MACHINERY| sleep. pending packages detect slyly ironic pack|
-102|Customer#000000102|UAtflJ06 fn9zBfKjInkQZlWtqaA|19|29-324-978-8538|8462.17|BUILDING|ously regular dependencies nag among the furiously express dinos. blithely final|
-103|Customer#000000103|8KIsQX4LJ7QMsj6DrtFtXu0nUEdV,8a|9|19-216-107-2107|2757.45|BUILDING|furiously pending notornis boost slyly around the blithely ironic ideas? final, even instructions cajole fl|
-104|Customer#000000104|9mcCK L7rt0SwiYtrbO88DiZS7U d7M|10|20-966-284-8065|-588.38|FURNITURE|rate carefully slyly special pla|
-105|Customer#000000105|4iSJe4L SPjg7kJj98Yz3z0B|10|20-793-553-6417|9091.82|MACHINERY|l pains cajole even accounts. quietly final instructi|
-106|Customer#000000106|xGCOEAUjUNG|1|11-751-989-4627|3288.42|MACHINERY|lose slyly. ironic accounts along the evenly regular theodolites wake about the special, final gifts. |
-107|Customer#000000107|Zwg64UZ,q7GRqo3zm7P1tZIRshBDz|15|25-336-529-9919|2514.15|AUTOMOBILE|counts cajole slyly. regular requests wake. furiously regular deposits about the blithely final fo|
-108|Customer#000000108|GPoeEvpKo1|5|15-908-619-7526|2259.38|BUILDING|refully ironic deposits sleep. regular, unusual requests wake slyly|
-109|Customer#000000109|OOOkYBgCMzgMQXUmkocoLb56rfrdWp2NE2c|16|26-992-422-8153|-716.10|BUILDING|es. fluffily final dependencies sleep along the blithely even pinto beans. final deposits haggle furiously furiou|
-110|Customer#000000110|mymPfgphaYXNYtk|10|20-893-536-2069|7462.99|AUTOMOBILE|nto beans cajole around the even, final deposits. quickly bold packages according to the furiously regular dept|
-111|Customer#000000111|CBSbPyOWRorloj2TBvrK9qp9tHBs|22|32-582-283-7528|6505.26|MACHINERY|ly unusual instructions detect fluffily special deposits-- theodolites nag carefully during the ironic dependencies|
-112|Customer#000000112|RcfgG3bO7QeCnfjqJT1|19|29-233-262-8382|2953.35|FURNITURE|rmanently unusual multipliers. blithely ruthless deposits are furiously along the|
-113|Customer#000000113|eaOl5UBXIvdY57rglaIzqvfPD,MYfK|12|22-302-930-4756|2912.00|BUILDING|usly regular theodolites boost furiously doggedly pending instructio|
-114|Customer#000000114|xAt 5f5AlFIU|14|24-805-212-7646|1027.46|FURNITURE|der the carefully express theodolites are after the packages. packages are. bli|
-115|Customer#000000115|0WFt1IXENmUT2BgbsB0ShVKJZt0HCBCbFl0aHc|8|18-971-699-1843|7508.92|HOUSEHOLD|sits haggle above the carefully ironic theodolite|
-116|Customer#000000116|yCuVxIgsZ3,qyK2rloThy3u|16|26-632-309-5792|8403.99|BUILDING|as. quickly final sauternes haggle slyly carefully even packages. brave, ironic pinto beans are above the furious|
-117|Customer#000000117|uNhM,PzsRA3S,5Y Ge5Npuhi|24|34-403-631-3505|3950.83|FURNITURE|affix. instructions are furiously sl|
-118|Customer#000000118|OVnFuHygK9wx3xpg8|18|28-639-943-7051|3582.37|AUTOMOBILE|uick packages alongside of the furiously final deposits haggle above the fluffily even foxes. blithely dogged dep|
-119|Customer#000000119|M1ETOIecuvH8DtM0Y0nryXfW|7|17-697-919-8406|3930.35|FURNITURE|express ideas. blithely ironic foxes thrash. special acco|
-120|Customer#000000120|zBNna00AEInqyO1|12|22-291-534-1571|363.75|MACHINERY| quickly. slyly ironic requests cajole blithely furiously final dependen|
-121|Customer#000000121|tv nCR2YKupGN73mQudO|17|27-411-990-2959|6428.32|BUILDING|uriously stealthy ideas. carefully final courts use carefully|
-122|Customer#000000122|yp5slqoNd26lAENZW3a67wSfXA6hTF|3|13-702-694-4520|7865.46|HOUSEHOLD| the special packages hinder blithely around the permanent requests. bold depos|
-123|Customer#000000123|YsOnaaER8MkvK5cpf4VSlq|5|15-817-151-1168|5897.83|BUILDING|ependencies. regular, ironic requests are fluffily regu|
-124|Customer#000000124|aTbyVAW5tCd,v09O|18|28-183-750-7809|1842.49|AUTOMOBILE|le fluffily even dependencies. quietly s|
-125|Customer#000000125|,wSZXdVR xxIIfm9s8ITyLl3kgjT6UC07GY0Y|19|29-261-996-3120|-234.12|FURNITURE|x-ray finally after the packages? regular requests c|
-126|Customer#000000126|ha4EHmbx3kg DYCsP6DFeUOmavtQlHhcfaqr|22|32-755-914-7592|1001.39|HOUSEHOLD|s about the even instructions boost carefully furiously ironic pearls. ruthless, |
-127|Customer#000000127|Xyge4DX2rXKxXyye1Z47LeLVEYMLf4Bfcj|21|31-101-672-2951|9280.71|MACHINERY|ic, unusual theodolites nod silently after the final, ironic instructions: pending r|
-128|Customer#000000128|AmKUMlJf2NRHcKGmKjLS|4|14-280-874-8044|-986.96|HOUSEHOLD|ing packages integrate across the slyly unusual dugouts. blithely silent ideas sublate carefully. blithely expr|
-129|Customer#000000129|q7m7rbMM0BpaCdmxloCgBDRCleXsXkdD8kf|7|17-415-148-7416|9127.27|HOUSEHOLD| unusual deposits boost carefully furiously silent ideas. pending accounts cajole slyly across|
-130|Customer#000000130|RKPx2OfZy0Vn 8wGWZ7F2EAvmMORl1k8iH|9|19-190-993-9281|5073.58|HOUSEHOLD|ix slowly. express packages along the furiously ironic requests integrate daringly deposits. fur|
-131|Customer#000000131|jyN6lAjb1FtH10rMC,XzlWyCBrg75|11|21-840-210-3572|8595.53|HOUSEHOLD|jole special packages. furiously final dependencies about the furiously speci|
-132|Customer#000000132|QM5YabAsTLp9|4|14-692-150-9717|162.57|HOUSEHOLD|uickly carefully special theodolites. carefully regular requests against the blithely unusual instructions |
-133|Customer#000000133|IMCuXdpIvdkYO92kgDGuyHgojcUs88p|17|27-408-997-8430|2314.67|AUTOMOBILE|t packages. express pinto beans are blithely along the unusual, even theodolites. silent packages use fu|
-134|Customer#000000134|sUiZ78QCkTQPICKpA9OBzkUp2FM|11|21-200-159-5932|4608.90|BUILDING|yly fluffy foxes boost final ideas. b|
-135|Customer#000000135|oZK,oC0 fdEpqUML|19|29-399-293-6241|8732.91|FURNITURE| the slyly final accounts. deposits cajole carefully. carefully sly packag|
-136|Customer#000000136|QoLsJ0v5C1IQbh,DS1|7|17-501-210-4726|-842.39|FURNITURE|ackages sleep ironic, final courts. even requests above the blithely bold requests g|
-137|Customer#000000137|cdW91p92rlAEHgJafqYyxf1Q|16|26-777-409-5654|7838.30|HOUSEHOLD|carefully regular theodolites use. silent dolphins cajo|
-138|Customer#000000138|5uyLAeY7HIGZqtu66Yn08f|5|15-394-860-4589|430.59|MACHINERY|ts doze on the busy ideas. regular|
-139|Customer#000000139|3ElvBwudHKL02732YexGVFVt |9|19-140-352-1403|7897.78|MACHINERY|nstructions. quickly ironic ideas are carefully. bold, |
-140|Customer#000000140|XRqEPiKgcETII,iOLDZp5jA|4|14-273-885-6505|9963.15|MACHINERY|ies detect slyly ironic accounts. slyly ironic theodolites hag|
-141|Customer#000000141|5IW,WROVnikc3l7DwiUDGQNGsLBGOL6Dc0|1|11-936-295-6204|6706.14|FURNITURE|packages nag furiously. carefully unusual accounts snooze according to the fluffily regular pinto beans. slyly spec|
-142|Customer#000000142|AnJ5lxtLjioClr2khl9pb8NLxG2,|9|19-407-425-2584|2209.81|AUTOMOBILE|. even, express theodolites upo|
-143|Customer#000000143|681r22uL452zqk 8By7I9o9enQfx0|16|26-314-406-7725|2186.50|MACHINERY|across the blithely unusual requests haggle theodo|
-144|Customer#000000144|VxYZ3ebhgbltnetaGjNC8qCccjYU05 fePLOno8y|1|11-717-379-4478|6417.31|MACHINERY|ges. slyly regular accounts are slyly. bold, idle reque|
-145|Customer#000000145|kQjHmt2kcec cy3hfMh969u|13|23-562-444-8454|9748.93|HOUSEHOLD|ests? express, express instructions use. blithely fina|
-146|Customer#000000146|GdxkdXG9u7iyI1,,y5tq4ZyrcEy|3|13-835-723-3223|3328.68|FURNITURE|ffily regular dinos are slyly unusual requests. slyly specia|
-147|Customer#000000147|6VvIwbVdmcsMzuu,C84GtBWPaipGfi7DV|18|28-803-187-4335|8071.40|AUTOMOBILE|ress packages above the blithely regular packages sleep fluffily blithely ironic accounts. |
-148|Customer#000000148|BhSPlEWGvIJyT9swk vCWE|11|21-562-498-6636|2135.60|HOUSEHOLD|ing to the carefully ironic requests. carefully regular dependencies about the theodolites wake furious|
-149|Customer#000000149|3byTHCp2mNLPigUrrq|19|29-797-439-6760|8959.65|AUTOMOBILE|al instructions haggle against the slyly bold w|
-150|Customer#000000150|zeoGShTjCwGPplOWFkLURrh41O0AZ8dwNEEN4 |18|28-328-564-7630|3849.48|MACHINERY|ole blithely among the furiously pending packages. furiously bold ideas wake fluffily ironic idea|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src.tbl
deleted file mode 100644
index 0168ae9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src.tbl
+++ /dev/null
@@ -1,1030 +0,0 @@
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-3
-3
-3
-4
-4
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src_small.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src_small.tbl
deleted file mode 100644
index d8263ee..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src_small.tbl
+++ /dev/null
@@ -1 +0,0 @@
-2
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/lineitem.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/lineitem.tbl
deleted file mode 100644
index 58d47c6..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/lineitem.tbl
+++ /dev/null
@@ -1,6005 +0,0 @@
-1|156|4|1|17|17954.55|0.04|0.02|N|O|1996-03-13|1996-02-12|1996-03-22|DELIVER IN PERSON|TRUCK|egular courts above the|
-1|68|9|2|36|34850.16|0.09|0.06|N|O|1996-04-12|1996-02-28|1996-04-20|TAKE BACK RETURN|MAIL|ly final dependencies: slyly bold |
-1|64|5|3|8|7712.48|0.10|0.02|N|O|1996-01-29|1996-03-05|1996-01-31|TAKE BACK RETURN|REG AIR|riously. regular, express dep|
-1|3|6|4|28|25284.00|0.09|0.06|N|O|1996-04-21|1996-03-30|1996-05-16|NONE|AIR|lites. fluffily even de|
-1|25|8|5|24|22200.48|0.10|0.04|N|O|1996-03-30|1996-03-14|1996-04-01|NONE|FOB| pending foxes. slyly re|
-1|16|3|6|32|29312.32|0.07|0.02|N|O|1996-01-30|1996-02-07|1996-02-03|DELIVER IN PERSON|MAIL|arefully slyly ex|
-2|107|2|1|38|38269.80|0.00|0.05|N|O|1997-01-28|1997-01-14|1997-02-02|TAKE BACK RETURN|RAIL|ven requests. deposits breach a|
-3|5|2|1|45|40725.00|0.06|0.00|R|F|1994-02-02|1994-01-04|1994-02-23|NONE|AIR|ongside of the furiously brave acco|
-3|20|10|2|49|45080.98|0.10|0.00|R|F|1993-11-09|1993-12-20|1993-11-24|TAKE BACK RETURN|RAIL| unusual accounts. eve|
-3|129|8|3|27|27786.24|0.06|0.07|A|F|1994-01-16|1993-11-22|1994-01-23|DELIVER IN PERSON|SHIP|nal foxes wake. |
-3|30|5|4|2|1860.06|0.01|0.06|A|F|1993-12-04|1994-01-07|1994-01-01|NONE|TRUCK|y. fluffily pending d|
-3|184|5|5|28|30357.04|0.04|0.00|R|F|1993-12-14|1994-01-10|1994-01-01|TAKE BACK RETURN|FOB|ages nag slyly pending|
-3|63|8|6|26|25039.56|0.10|0.02|A|F|1993-10-29|1993-12-18|1993-11-04|TAKE BACK RETURN|RAIL|ges sleep after the caref|
-4|89|10|1|30|29672.40|0.03|0.08|N|O|1996-01-10|1995-12-14|1996-01-18|DELIVER IN PERSON|REG AIR|- quickly regular packages sleep. idly|
-5|109|10|1|15|15136.50|0.02|0.04|R|F|1994-10-31|1994-08-31|1994-11-20|NONE|AIR|ts wake furiously |
-5|124|5|2|26|26627.12|0.07|0.08|R|F|1994-10-16|1994-09-25|1994-10-19|NONE|FOB|sts use slyly quickly special instruc|
-5|38|4|3|50|46901.50|0.08|0.03|A|F|1994-08-08|1994-10-13|1994-08-26|DELIVER IN PERSON|AIR|eodolites. fluffily unusual|
-6|140|6|1|37|38485.18|0.08|0.03|A|F|1992-04-27|1992-05-15|1992-05-02|TAKE BACK RETURN|TRUCK|p furiously special foxes|
-7|183|4|1|12|12998.16|0.07|0.03|N|O|1996-05-07|1996-03-13|1996-06-03|TAKE BACK RETURN|FOB|ss pinto beans wake against th|
-7|146|3|2|9|9415.26|0.08|0.08|N|O|1996-02-01|1996-03-02|1996-02-19|TAKE BACK RETURN|SHIP|es. instructions|
-7|95|8|3|46|45774.14|0.10|0.07|N|O|1996-01-15|1996-03-27|1996-02-03|COLLECT COD|MAIL| unusual reques|
-7|164|5|4|28|29796.48|0.03|0.04|N|O|1996-03-21|1996-04-08|1996-04-20|NONE|FOB|. slyly special requests haggl|
-7|152|4|5|38|39981.70|0.08|0.01|N|O|1996-02-11|1996-02-24|1996-02-18|DELIVER IN PERSON|TRUCK|ns haggle carefully ironic deposits. bl|
-7|80|10|6|35|34302.80|0.06|0.03|N|O|1996-01-16|1996-02-23|1996-01-22|TAKE BACK RETURN|FOB|jole. excuses wake carefully alongside of |
-7|158|3|7|5|5290.75|0.04|0.02|N|O|1996-02-10|1996-03-26|1996-02-13|NONE|FOB|ithely regula|
-32|83|4|1|28|27526.24|0.05|0.08|N|O|1995-10-23|1995-08-27|1995-10-26|TAKE BACK RETURN|TRUCK|sleep quickly. req|
-32|198|10|2|32|35142.08|0.02|0.00|N|O|1995-08-14|1995-10-07|1995-08-27|COLLECT COD|AIR|lithely regular deposits. fluffily |
-32|45|2|3|2|1890.08|0.09|0.02|N|O|1995-08-07|1995-10-07|1995-08-23|DELIVER IN PERSON|AIR| express accounts wake according to the|
-32|3|8|4|4|3612.00|0.09|0.03|N|O|1995-08-04|1995-10-01|1995-09-03|NONE|REG AIR|e slyly final pac|
-32|86|7|5|44|43387.52|0.05|0.06|N|O|1995-08-28|1995-08-20|1995-09-14|DELIVER IN PERSON|AIR|symptotes nag according to the ironic depo|
-32|12|6|6|6|5472.06|0.04|0.03|N|O|1995-07-21|1995-09-23|1995-07-25|COLLECT COD|RAIL| gifts cajole carefully.|
-33|62|7|1|31|29823.86|0.09|0.04|A|F|1993-10-29|1993-12-19|1993-11-08|COLLECT COD|TRUCK|ng to the furiously ironic package|
-33|61|8|2|32|30753.92|0.02|0.05|A|F|1993-12-09|1994-01-04|1993-12-28|COLLECT COD|MAIL|gular theodolites|
-33|138|4|3|5|5190.65|0.05|0.03|A|F|1993-12-09|1993-12-25|1993-12-23|TAKE BACK RETURN|AIR|. stealthily bold exc|
-33|34|5|4|41|38295.23|0.09|0.00|R|F|1993-11-09|1994-01-24|1993-11-11|TAKE BACK RETURN|MAIL|unusual packages doubt caref|
-34|89|10|1|13|12858.04|0.00|0.07|N|O|1998-10-23|1998-09-14|1998-11-06|NONE|REG AIR|nic accounts. deposits are alon|
-34|90|1|2|22|21781.98|0.08|0.06|N|O|1998-10-09|1998-10-16|1998-10-12|NONE|FOB|thely slyly p|
-34|170|7|3|6|6421.02|0.02|0.06|N|O|1998-10-30|1998-09-20|1998-11-05|NONE|FOB|ar foxes sleep |
-35|1|4|1|24|21624.00|0.02|0.00|N|O|1996-02-21|1996-01-03|1996-03-18|TAKE BACK RETURN|FOB|, regular tithe|
-35|162|1|2|34|36113.44|0.06|0.08|N|O|1996-01-22|1996-01-06|1996-01-27|DELIVER IN PERSON|RAIL|s are carefully against the f|
-35|121|4|3|7|7147.84|0.06|0.04|N|O|1996-01-19|1995-12-22|1996-01-29|NONE|MAIL| the carefully regular |
-35|86|7|4|25|24652.00|0.06|0.05|N|O|1995-11-26|1995-12-25|1995-12-21|DELIVER IN PERSON|SHIP| quickly unti|
-35|120|7|5|34|34684.08|0.08|0.06|N|O|1995-11-08|1996-01-15|1995-11-26|COLLECT COD|MAIL|. silent, unusual deposits boost|
-35|31|7|6|28|26068.84|0.03|0.02|N|O|1996-02-01|1995-12-24|1996-02-28|COLLECT COD|RAIL|ly alongside of |
-36|120|1|1|42|42845.04|0.09|0.00|N|O|1996-02-03|1996-01-21|1996-02-23|COLLECT COD|SHIP| careful courts. special |
-37|23|8|1|40|36920.80|0.09|0.03|A|F|1992-07-21|1992-08-01|1992-08-15|NONE|REG AIR|luffily regular requests. slyly final acco|
-37|127|6|2|39|40057.68|0.05|0.02|A|F|1992-07-02|1992-08-18|1992-07-28|TAKE BACK RETURN|RAIL|the final requests. ca|
-37|13|7|3|43|39259.43|0.05|0.08|A|F|1992-07-10|1992-07-06|1992-08-02|DELIVER IN PERSON|TRUCK|iously ste|
-38|176|5|1|44|47351.48|0.04|0.02|N|O|1996-09-29|1996-11-17|1996-09-30|COLLECT COD|MAIL|s. blithely unusual theodolites am|
-39|3|10|1|44|39732.00|0.09|0.06|N|O|1996-11-14|1996-12-15|1996-12-12|COLLECT COD|RAIL|eodolites. careful|
-39|187|8|2|26|28266.68|0.08|0.04|N|O|1996-11-04|1996-10-20|1996-11-20|NONE|FOB|ckages across the slyly silent|
-39|68|3|3|46|44530.76|0.06|0.08|N|O|1996-09-26|1996-12-19|1996-10-26|DELIVER IN PERSON|AIR|he carefully e|
-39|21|6|4|32|29472.64|0.07|0.05|N|O|1996-10-02|1996-12-19|1996-10-14|COLLECT COD|MAIL|heodolites sleep silently pending foxes. ac|
-39|55|10|5|43|41067.15|0.01|0.01|N|O|1996-10-17|1996-11-14|1996-10-26|COLLECT COD|MAIL|yly regular i|
-39|95|7|6|40|39803.60|0.06|0.05|N|O|1996-12-08|1996-10-22|1997-01-01|COLLECT COD|AIR|quickly ironic fox|
-64|86|7|1|21|20707.68|0.05|0.02|R|F|1994-09-30|1994-09-18|1994-10-26|DELIVER IN PERSON|REG AIR|ch slyly final, thin platelets.|
-65|60|5|1|26|24961.56|0.03|0.03|A|F|1995-04-20|1995-04-25|1995-05-13|NONE|TRUCK|pending deposits nag even packages. ca|
-65|74|3|2|22|21429.54|0.00|0.05|N|O|1995-07-17|1995-06-04|1995-07-19|COLLECT COD|FOB| ideas. special, r|
-65|2|5|3|21|18942.00|0.09|0.07|N|O|1995-07-06|1995-05-14|1995-07-31|DELIVER IN PERSON|RAIL|bove the even packages. accounts nag carefu|
-66|116|10|1|31|31499.41|0.00|0.08|R|F|1994-02-19|1994-03-11|1994-02-20|TAKE BACK RETURN|RAIL|ut the unusual accounts sleep at the bo|
-66|174|5|2|41|44040.97|0.04|0.07|A|F|1994-02-21|1994-03-01|1994-03-18|COLLECT COD|AIR| regular de|
-67|22|5|1|4|3688.08|0.09|0.04|N|O|1997-04-17|1997-01-31|1997-04-20|NONE|SHIP| cajole thinly expres|
-67|21|10|2|12|11052.24|0.09|0.05|N|O|1997-01-27|1997-02-21|1997-02-22|NONE|REG AIR| even packages cajole|
-67|174|4|3|5|5370.85|0.03|0.07|N|O|1997-02-20|1997-02-12|1997-02-21|DELIVER IN PERSON|TRUCK|y unusual packages thrash pinto |
-67|88|9|4|44|43475.52|0.08|0.06|N|O|1997-03-18|1997-01-29|1997-04-13|DELIVER IN PERSON|RAIL|se quickly above the even, express reques|
-67|41|10|5|23|21643.92|0.05|0.07|N|O|1997-04-19|1997-02-14|1997-05-06|DELIVER IN PERSON|REG AIR|ly regular deposit|
-67|179|9|6|29|31295.93|0.02|0.05|N|O|1997-01-25|1997-01-27|1997-01-27|DELIVER IN PERSON|FOB|ultipliers |
-68|8|1|1|3|2724.00|0.05|0.02|N|O|1998-07-04|1998-06-05|1998-07-21|NONE|RAIL|fully special instructions cajole. furious|
-68|176|4|2|46|49503.82|0.02|0.05|N|O|1998-06-26|1998-06-07|1998-07-05|NONE|MAIL| requests are unusual, regular pinto |
-68|35|1|3|46|43011.38|0.04|0.05|N|O|1998-08-13|1998-07-08|1998-08-29|NONE|RAIL|egular dependencies affix ironically along |
-68|95|9|4|20|19901.80|0.07|0.01|N|O|1998-06-27|1998-05-23|1998-07-02|NONE|REG AIR| excuses integrate fluffily |
-68|83|4|5|27|26543.16|0.03|0.06|N|O|1998-06-19|1998-06-25|1998-06-29|DELIVER IN PERSON|SHIP|ccounts. deposits use. furiously|
-68|103|6|6|30|30093.00|0.05|0.06|N|O|1998-08-11|1998-07-11|1998-08-14|NONE|RAIL|oxes are slyly blithely fin|
-68|140|6|7|41|42645.74|0.09|0.08|N|O|1998-06-24|1998-06-27|1998-07-06|NONE|SHIP|eposits nag special ideas. furiousl|
-69|116|10|1|48|48773.28|0.01|0.07|A|F|1994-08-17|1994-08-11|1994-09-08|NONE|TRUCK|regular epitaphs. carefully even ideas hag|
-69|105|10|2|32|32163.20|0.08|0.06|A|F|1994-08-24|1994-08-17|1994-08-31|NONE|REG AIR|s sleep carefully bold, |
-69|138|4|3|17|17648.21|0.09|0.00|A|F|1994-07-02|1994-07-07|1994-07-03|TAKE BACK RETURN|AIR|final, pending instr|
-69|38|9|4|3|2814.09|0.09|0.04|R|F|1994-06-06|1994-07-27|1994-06-15|NONE|MAIL| blithely final d|
-69|93|6|5|42|41709.78|0.07|0.04|R|F|1994-07-31|1994-07-26|1994-08-28|DELIVER IN PERSON|REG AIR|tect regular, speci|
-69|19|3|6|23|21137.23|0.05|0.00|A|F|1994-10-03|1994-08-06|1994-10-24|NONE|SHIP|nding accounts ca|
-70|65|2|1|8|7720.48|0.03|0.08|R|F|1994-01-12|1994-02-27|1994-01-14|TAKE BACK RETURN|FOB|ggle. carefully pending dependenc|
-70|197|10|2|13|14263.47|0.06|0.06|A|F|1994-03-03|1994-02-13|1994-03-26|COLLECT COD|AIR|lyly special packag|
-70|180|8|3|1|1080.18|0.03|0.05|R|F|1994-01-26|1994-03-05|1994-01-28|TAKE BACK RETURN|RAIL|quickly. fluffily unusual theodolites c|
-70|46|9|4|11|10406.44|0.01|0.05|A|F|1994-03-17|1994-03-17|1994-03-27|NONE|MAIL|alongside of the deposits. fur|
-70|38|9|5|37|34707.11|0.09|0.04|R|F|1994-02-13|1994-03-16|1994-02-21|COLLECT COD|MAIL|n accounts are. q|
-70|56|8|6|19|18164.95|0.06|0.03|A|F|1994-01-26|1994-02-17|1994-02-06|TAKE BACK RETURN|SHIP| packages wake pending accounts.|
-71|62|3|1|25|24051.50|0.09|0.07|N|O|1998-04-10|1998-04-22|1998-04-11|COLLECT COD|FOB|ckly. slyly|
-71|66|1|2|3|2898.18|0.09|0.07|N|O|1998-05-23|1998-04-03|1998-06-02|COLLECT COD|SHIP|y. pinto beans haggle after the|
-71|35|1|3|45|42076.35|0.00|0.07|N|O|1998-02-23|1998-03-20|1998-03-24|DELIVER IN PERSON|SHIP| ironic packages believe blithely a|
-71|97|9|4|33|32903.97|0.00|0.01|N|O|1998-04-12|1998-03-20|1998-04-15|NONE|FOB| serve quickly fluffily bold deposi|
-71|104|7|5|39|39159.90|0.08|0.06|N|O|1998-01-29|1998-04-07|1998-02-18|DELIVER IN PERSON|RAIL|l accounts sleep across the pack|
-71|196|9|6|34|37270.46|0.04|0.01|N|O|1998-03-05|1998-04-22|1998-03-30|DELIVER IN PERSON|TRUCK|s cajole. |
-96|124|7|1|23|23554.76|0.10|0.06|A|F|1994-07-19|1994-06-29|1994-07-25|DELIVER IN PERSON|TRUCK|ep-- carefully reg|
-96|136|7|2|30|31083.90|0.01|0.06|R|F|1994-06-03|1994-05-29|1994-06-22|DELIVER IN PERSON|TRUCK|e quickly even ideas. furiou|
-97|120|4|1|13|13261.56|0.00|0.02|R|F|1993-04-01|1993-04-04|1993-04-08|NONE|TRUCK|ayers cajole against the furiously|
-97|50|7|2|37|35151.85|0.02|0.06|A|F|1993-04-13|1993-03-30|1993-04-14|DELIVER IN PERSON|SHIP|ic requests boost carefully quic|
-97|78|6|3|19|18583.33|0.06|0.08|R|F|1993-05-14|1993-03-05|1993-05-25|TAKE BACK RETURN|RAIL|gifts. furiously ironic packages cajole. |
-98|41|2|1|28|26349.12|0.06|0.07|A|F|1994-12-24|1994-10-25|1995-01-16|COLLECT COD|REG AIR| pending, regular accounts s|
-98|110|7|2|1|1010.11|0.00|0.00|A|F|1994-12-01|1994-12-12|1994-12-15|DELIVER IN PERSON|TRUCK|. unusual instructions against|
-98|45|6|3|14|13230.56|0.05|0.02|A|F|1994-12-30|1994-11-22|1995-01-27|COLLECT COD|AIR| cajole furiously. blithely ironic ideas |
-98|168|9|4|10|10681.60|0.03|0.03|A|F|1994-10-23|1994-11-08|1994-11-09|COLLECT COD|RAIL| carefully. quickly ironic ideas|
-99|88|9|1|10|9880.80|0.02|0.01|A|F|1994-05-18|1994-06-03|1994-05-23|COLLECT COD|RAIL|kages. requ|
-99|124|5|2|5|5120.60|0.02|0.07|R|F|1994-05-06|1994-05-28|1994-05-20|TAKE BACK RETURN|RAIL|ests cajole fluffily waters. blithe|
-99|135|1|3|42|43475.46|0.02|0.02|A|F|1994-04-19|1994-05-18|1994-04-20|NONE|RAIL|kages are fluffily furiously ir|
-99|109|2|4|36|36327.60|0.09|0.02|A|F|1994-07-04|1994-04-17|1994-07-30|DELIVER IN PERSON|AIR|slyly. slyly e|
-100|63|4|1|28|26965.68|0.04|0.05|N|O|1998-05-08|1998-05-13|1998-06-07|COLLECT COD|TRUCK|sts haggle. slowl|
-100|116|10|2|22|22354.42|0.00|0.07|N|O|1998-06-24|1998-04-12|1998-06-29|DELIVER IN PERSON|SHIP|nto beans alongside of the fi|
-100|47|4|3|46|43563.84|0.03|0.04|N|O|1998-05-02|1998-04-10|1998-05-22|TAKE BACK RETURN|SHIP|ular accounts. even|
-100|39|10|4|14|13146.42|0.06|0.03|N|O|1998-05-22|1998-05-01|1998-06-03|COLLECT COD|MAIL|y. furiously ironic ideas gr|
-100|54|6|5|37|35299.85|0.05|0.00|N|O|1998-03-06|1998-04-16|1998-03-31|TAKE BACK RETURN|TRUCK|nd the quickly s|
-101|119|9|1|49|49936.39|0.10|0.00|N|O|1996-06-21|1996-05-27|1996-06-29|DELIVER IN PERSON|REG AIR|ts-- final packages sleep furiousl|
-101|164|9|2|36|38309.76|0.00|0.01|N|O|1996-05-19|1996-05-01|1996-06-04|DELIVER IN PERSON|AIR|tes. blithely pending dolphins x-ray f|
-101|139|5|3|12|12469.56|0.06|0.02|N|O|1996-03-29|1996-04-20|1996-04-12|COLLECT COD|MAIL|. quickly regular|
-102|89|10|1|37|36595.96|0.06|0.00|N|O|1997-07-24|1997-08-02|1997-08-07|TAKE BACK RETURN|SHIP|ully across the ideas. final deposit|
-102|170|5|2|34|36385.78|0.03|0.08|N|O|1997-08-09|1997-07-28|1997-08-26|TAKE BACK RETURN|SHIP|eposits cajole across|
-102|183|4|3|25|27079.50|0.01|0.01|N|O|1997-07-31|1997-07-24|1997-08-17|NONE|RAIL|bits. ironic accoun|
-102|62|7|4|15|14430.90|0.07|0.07|N|O|1997-06-02|1997-07-13|1997-06-04|DELIVER IN PERSON|SHIP|final packages. carefully even excu|
-103|195|9|1|6|6571.14|0.03|0.05|N|O|1996-10-11|1996-07-25|1996-10-28|NONE|FOB|cajole. carefully ex|
-103|11|5|2|37|33707.37|0.02|0.07|N|O|1996-09-17|1996-07-27|1996-09-20|TAKE BACK RETURN|MAIL|ies. quickly ironic requests use blithely|
-103|29|10|3|23|21367.46|0.01|0.04|N|O|1996-09-11|1996-09-18|1996-09-26|NONE|FOB|ironic accou|
-103|30|9|4|32|29760.96|0.01|0.07|N|O|1996-07-30|1996-08-06|1996-08-04|NONE|RAIL|kages doze. special, regular deposit|
-128|107|10|1|38|38269.80|0.06|0.01|A|F|1992-09-01|1992-08-27|1992-10-01|TAKE BACK RETURN|FOB| cajole careful|
-129|3|6|1|46|41538.00|0.08|0.02|R|F|1993-02-15|1993-01-24|1993-03-05|COLLECT COD|TRUCK|uietly bold theodolites. fluffil|
-129|186|7|2|36|39102.48|0.01|0.02|A|F|1992-11-25|1992-12-25|1992-12-09|TAKE BACK RETURN|REG AIR|packages are care|
-129|40|6|3|33|31021.32|0.04|0.06|A|F|1993-01-08|1993-02-14|1993-01-29|COLLECT COD|SHIP|sts nag bravely. fluffily|
-129|136|7|4|34|35228.42|0.00|0.01|R|F|1993-01-29|1993-02-14|1993-02-10|COLLECT COD|MAIL|quests. express ideas|
-129|32|8|5|24|22368.72|0.06|0.00|A|F|1992-12-07|1993-01-02|1992-12-11|TAKE BACK RETURN|FOB|uests. foxes cajole slyly after the ca|
-129|78|6|6|22|21517.54|0.06|0.01|R|F|1993-02-15|1993-01-31|1993-02-24|COLLECT COD|SHIP|e. fluffily regular |
-129|169|6|7|1|1069.16|0.05|0.04|R|F|1993-01-26|1993-01-08|1993-02-24|DELIVER IN PERSON|FOB|e carefully blithely bold dolp|
-130|129|10|1|14|14407.68|0.08|0.05|A|F|1992-08-15|1992-07-25|1992-09-13|COLLECT COD|RAIL| requests. final instruction|
-130|2|5|2|48|43296.00|0.03|0.02|R|F|1992-07-01|1992-07-12|1992-07-24|NONE|AIR|lithely alongside of the regu|
-130|12|3|3|18|16416.18|0.04|0.08|A|F|1992-07-04|1992-06-14|1992-07-29|DELIVER IN PERSON|MAIL| slyly ironic decoys abou|
-130|116|6|4|13|13209.43|0.09|0.02|R|F|1992-06-26|1992-07-29|1992-07-05|NONE|FOB| pending dolphins sleep furious|
-130|70|7|5|31|30072.17|0.06|0.05|R|F|1992-09-01|1992-07-18|1992-09-02|TAKE BACK RETURN|RAIL|thily about the ruth|
-131|168|7|1|45|48067.20|0.10|0.02|R|F|1994-09-14|1994-09-02|1994-10-04|NONE|FOB|ironic, bold accounts. careful|
-131|45|8|2|50|47252.00|0.02|0.04|A|F|1994-09-17|1994-08-10|1994-09-21|NONE|SHIP|ending requests. final, ironic pearls slee|
-131|190|1|3|4|4360.76|0.04|0.03|A|F|1994-09-20|1994-08-30|1994-09-23|COLLECT COD|REG AIR| are carefully slyly i|
-132|141|8|1|18|18740.52|0.00|0.08|R|F|1993-07-10|1993-08-05|1993-07-13|NONE|TRUCK|ges. platelets wake furio|
-132|120|1|2|43|43865.16|0.01|0.08|R|F|1993-09-01|1993-08-16|1993-09-22|NONE|TRUCK|y pending theodolites|
-132|115|6|3|32|32483.52|0.04|0.04|A|F|1993-07-12|1993-08-05|1993-08-05|COLLECT COD|TRUCK|d instructions hagg|
-132|29|2|4|23|21367.46|0.10|0.00|A|F|1993-06-16|1993-08-27|1993-06-23|DELIVER IN PERSON|AIR|refully blithely bold acco|
-133|104|7|1|27|27110.70|0.00|0.02|N|O|1997-12-21|1998-02-23|1997-12-27|TAKE BACK RETURN|MAIL|yly even gifts after the sl|
-133|177|5|2|12|12926.04|0.02|0.06|N|O|1997-12-02|1998-01-15|1997-12-29|DELIVER IN PERSON|REG AIR|ts cajole fluffily quickly i|
-133|118|8|3|29|29525.19|0.09|0.08|N|O|1998-02-28|1998-01-30|1998-03-09|DELIVER IN PERSON|RAIL| the carefully regular theodoli|
-133|90|1|4|11|10890.99|0.06|0.01|N|O|1998-03-21|1998-01-15|1998-04-04|DELIVER IN PERSON|REG AIR|e quickly across the dolphins|
-134|1|2|1|21|18921.00|0.00|0.03|A|F|1992-07-17|1992-07-08|1992-07-26|COLLECT COD|SHIP|s. quickly regular|
-134|165|2|2|35|37280.60|0.06|0.07|A|F|1992-08-23|1992-06-01|1992-08-24|NONE|MAIL|ajole furiously. instructio|
-134|189|10|3|26|28318.68|0.09|0.06|A|F|1992-06-20|1992-07-12|1992-07-16|NONE|RAIL| among the pending depos|
-134|145|6|4|47|49121.58|0.05|0.00|A|F|1992-08-16|1992-07-06|1992-08-28|NONE|REG AIR|s! carefully unusual requests boost careful|
-134|36|7|5|12|11232.36|0.05|0.02|A|F|1992-07-03|1992-06-01|1992-07-11|COLLECT COD|TRUCK|nts are quic|
-134|134|10|6|12|12409.56|0.00|0.00|A|F|1992-08-08|1992-07-07|1992-08-20|TAKE BACK RETURN|FOB|lyly regular pac|
-135|109|10|1|47|47427.70|0.06|0.08|N|O|1996-02-18|1996-01-01|1996-02-25|COLLECT COD|RAIL|ctions wake slyly abo|
-135|199|3|2|21|23082.99|0.00|0.07|N|O|1996-02-11|1996-01-12|1996-02-13|DELIVER IN PERSON|SHIP| deposits believe. furiously regular p|
-135|158|10|3|33|34918.95|0.02|0.00|N|O|1996-01-03|1995-11-21|1996-02-01|TAKE BACK RETURN|MAIL|ptotes boost slowly care|
-135|68|7|4|34|32914.04|0.02|0.03|N|O|1996-01-12|1996-01-19|1996-02-05|NONE|TRUCK|counts doze against the blithely ironi|
-135|137|8|5|20|20742.60|0.01|0.04|N|O|1996-01-25|1995-11-20|1996-02-09|NONE|MAIL|theodolites. quickly p|
-135|115|5|6|13|13196.43|0.04|0.02|N|O|1995-11-12|1995-12-22|1995-11-17|NONE|FOB|nal ideas. final instr|
-160|15|2|1|36|32940.36|0.07|0.01|N|O|1997-03-11|1997-03-11|1997-03-20|COLLECT COD|MAIL|old, ironic deposits are quickly abov|
-160|87|8|2|22|21715.76|0.00|0.04|N|O|1997-02-18|1997-03-05|1997-03-05|COLLECT COD|RAIL|ncies about the request|
-160|21|10|3|34|31314.68|0.01|0.05|N|O|1997-01-31|1997-03-13|1997-02-14|NONE|FOB|st sleep even gifts. dependencies along|
-161|103|10|1|19|19058.90|0.01|0.01|A|F|1994-12-13|1994-11-19|1994-12-26|DELIVER IN PERSON|TRUCK|, regular sheaves sleep along|
-162|190|1|1|2|2180.38|0.02|0.01|N|O|1995-09-02|1995-06-17|1995-09-08|COLLECT COD|FOB|es! final somas integrate|
-163|168|3|1|43|45930.88|0.01|0.00|N|O|1997-09-19|1997-11-19|1997-10-03|COLLECT COD|REG AIR|al, bold dependencies wake. iron|
-163|121|2|2|13|13274.56|0.01|0.04|N|O|1997-11-11|1997-10-18|1997-12-07|DELIVER IN PERSON|TRUCK|inal requests. even pinto beans hag|
-163|37|3|3|27|25299.81|0.04|0.08|N|O|1997-12-26|1997-11-28|1998-01-05|COLLECT COD|REG AIR|ously express dependen|
-163|193|5|4|5|5465.95|0.02|0.00|N|O|1997-11-17|1997-10-09|1997-12-05|DELIVER IN PERSON|TRUCK| must belie|
-163|127|2|5|12|12325.44|0.10|0.00|N|O|1997-12-18|1997-10-26|1997-12-22|COLLECT COD|TRUCK|ly blithe accounts cajole |
-163|191|4|6|20|21823.80|0.00|0.07|N|O|1997-09-27|1997-11-15|1997-10-07|TAKE BACK RETURN|FOB|tructions integrate b|
-164|92|4|1|26|25794.34|0.09|0.04|A|F|1993-01-04|1992-11-21|1993-01-07|NONE|RAIL|s. blithely special courts are blithel|
-164|19|6|2|24|22056.24|0.05|0.05|R|F|1992-12-22|1992-11-27|1993-01-06|NONE|AIR|side of the slyly unusual theodolites. f|
-164|126|9|3|38|38992.56|0.03|0.06|R|F|1992-12-04|1992-11-23|1993-01-02|TAKE BACK RETURN|AIR|counts cajole fluffily regular packages. b|
-164|18|2|4|32|29376.32|0.05|0.01|R|F|1992-12-21|1992-12-23|1992-12-28|COLLECT COD|RAIL|ts wake again|
-164|148|1|5|43|45070.02|0.06|0.01|R|F|1992-11-26|1993-01-03|1992-12-08|COLLECT COD|RAIL|y carefully regular dep|
-164|109|10|6|27|27245.70|0.10|0.04|R|F|1992-12-23|1993-01-16|1993-01-10|DELIVER IN PERSON|AIR|ayers wake carefully a|
-164|4|7|7|23|20792.00|0.09|0.04|A|F|1992-11-03|1992-12-02|1992-11-12|NONE|REG AIR|ress packages haggle ideas. blithely spec|
-165|34|5|1|3|2802.09|0.01|0.08|R|F|1993-03-29|1993-03-06|1993-04-12|DELIVER IN PERSON|REG AIR|riously requests. depos|
-165|162|7|2|43|45672.88|0.08|0.05|R|F|1993-02-27|1993-04-19|1993-03-03|DELIVER IN PERSON|TRUCK|jole slyly according |
-165|59|1|3|15|14385.75|0.00|0.05|R|F|1993-04-10|1993-03-29|1993-05-01|COLLECT COD|SHIP| bold packages mainta|
-165|140|1|4|49|50966.86|0.07|0.06|A|F|1993-02-20|1993-04-02|1993-03-10|COLLECT COD|REG AIR|uses sleep slyly ruthlessly regular a|
-165|156|4|5|27|28516.05|0.01|0.04|R|F|1993-04-27|1993-03-04|1993-05-13|NONE|MAIL|around the ironic, even orb|
-166|65|2|1|37|35707.22|0.09|0.03|N|O|1995-11-16|1995-10-17|1995-12-13|NONE|MAIL|lar frays wake blithely a|
-166|167|8|2|13|13873.08|0.09|0.05|N|O|1995-11-09|1995-11-18|1995-11-14|COLLECT COD|SHIP|fully above the blithely fina|
-166|100|2|3|41|41004.10|0.07|0.03|N|O|1995-11-13|1995-11-07|1995-12-08|COLLECT COD|FOB|hily along the blithely pending fo|
-166|46|3|4|8|7568.32|0.05|0.02|N|O|1995-12-30|1995-11-29|1996-01-29|DELIVER IN PERSON|RAIL|e carefully bold |
-167|102|3|1|28|28058.80|0.06|0.01|R|F|1993-02-19|1993-02-16|1993-03-03|DELIVER IN PERSON|TRUCK|sly during the u|
-167|172|2|2|27|28948.59|0.09|0.00|R|F|1993-05-01|1993-03-31|1993-05-31|TAKE BACK RETURN|FOB|eans affix furiously-- packages|
-192|98|1|1|23|22956.07|0.00|0.00|N|O|1998-02-05|1998-02-06|1998-03-07|TAKE BACK RETURN|AIR|ly pending theodolites haggle quickly fluf|
-192|162|7|2|20|21243.20|0.07|0.01|N|O|1998-03-13|1998-02-02|1998-03-31|TAKE BACK RETURN|REG AIR|tes. carefu|
-192|111|8|3|15|15166.65|0.09|0.01|N|O|1998-01-30|1998-02-10|1998-02-23|TAKE BACK RETURN|TRUCK|he ironic requests haggle about|
-192|197|1|4|2|2194.38|0.06|0.02|N|O|1998-03-06|1998-02-03|1998-03-24|COLLECT COD|SHIP|s. dependencies nag furiously alongside|
-192|83|4|5|25|24577.00|0.02|0.03|N|O|1998-02-15|1998-01-11|1998-03-17|COLLECT COD|TRUCK|. carefully regular|
-192|142|9|6|45|46896.30|0.00|0.05|N|O|1998-03-11|1998-01-09|1998-04-03|NONE|MAIL|equests. ideas sleep idea|
-193|93|5|1|9|8937.81|0.06|0.06|A|F|1993-09-17|1993-10-08|1993-09-30|COLLECT COD|TRUCK|against the fluffily regular d|
-193|154|6|2|15|15812.25|0.02|0.07|R|F|1993-11-22|1993-10-09|1993-12-05|TAKE BACK RETURN|SHIP|ffily. regular packages d|
-193|94|6|3|23|22864.07|0.06|0.05|A|F|1993-08-21|1993-10-11|1993-09-02|DELIVER IN PERSON|TRUCK|ly even accounts wake blithely bold|
-194|3|6|1|17|15351.00|0.05|0.04|R|F|1992-05-24|1992-05-22|1992-05-30|COLLECT COD|AIR| regular deposi|
-194|184|5|2|1|1084.18|0.04|0.06|R|F|1992-04-30|1992-05-18|1992-05-23|NONE|REG AIR| regular theodolites. regular, iron|
-194|66|1|3|13|12558.78|0.08|0.08|A|F|1992-05-07|1992-06-18|1992-05-10|NONE|AIR|about the blit|
-194|146|7|4|36|37661.04|0.00|0.05|R|F|1992-05-21|1992-05-18|1992-05-27|TAKE BACK RETURN|RAIL|pecial packages wake after the slyly r|
-194|57|2|5|8|7656.40|0.04|0.00|R|F|1992-07-06|1992-06-25|1992-07-11|COLLECT COD|FOB|uriously unusual excuses|
-194|149|6|6|16|16786.24|0.06|0.03|A|F|1992-05-14|1992-06-14|1992-05-21|TAKE BACK RETURN|TRUCK|y regular requests. furious|
-194|168|7|7|21|22431.36|0.02|0.01|R|F|1992-05-06|1992-05-20|1992-05-07|COLLECT COD|REG AIR|accounts detect quickly dogged |
-195|85|6|1|6|5910.48|0.04|0.02|A|F|1994-01-09|1994-03-27|1994-01-28|COLLECT COD|REG AIR|y, even deposits haggle carefully. bli|
-195|94|8|2|41|40757.69|0.05|0.07|A|F|1994-02-24|1994-02-11|1994-03-20|NONE|TRUCK|rts detect in place of t|
-195|86|7|3|34|33526.72|0.08|0.08|R|F|1994-01-31|1994-02-11|1994-02-12|NONE|TRUCK| cajole furiously bold i|
-195|86|7|4|41|40429.28|0.06|0.04|R|F|1994-03-14|1994-03-13|1994-04-09|COLLECT COD|RAIL|ggle fluffily foxes. fluffily ironic ex|
-196|136|7|1|19|19686.47|0.03|0.02|R|F|1993-04-17|1993-05-27|1993-04-30|NONE|SHIP|sts maintain foxes. furiously regular p|
-196|10|3|2|15|13650.15|0.03|0.04|A|F|1993-07-05|1993-05-08|1993-07-06|TAKE BACK RETURN|SHIP|s accounts. furio|
-197|99|1|1|39|38964.51|0.02|0.04|N|O|1995-07-21|1995-07-01|1995-08-14|TAKE BACK RETURN|AIR|press accounts. daringly sp|
-197|178|8|2|8|8625.36|0.09|0.02|A|F|1995-04-17|1995-07-01|1995-04-27|DELIVER IN PERSON|SHIP|y blithely even deposits. blithely fina|
-197|156|4|3|17|17954.55|0.06|0.02|N|O|1995-08-02|1995-06-23|1995-08-03|COLLECT COD|REG AIR|ts. careful|
-197|18|5|4|25|22950.25|0.04|0.01|N|F|1995-06-13|1995-05-23|1995-06-24|TAKE BACK RETURN|FOB|s-- quickly final accounts|
-197|42|9|5|14|13188.56|0.09|0.01|R|F|1995-05-08|1995-05-24|1995-05-12|TAKE BACK RETURN|RAIL|use slyly slyly silent depo|
-197|106|1|6|1|1006.10|0.07|0.05|N|O|1995-07-15|1995-06-21|1995-08-11|COLLECT COD|RAIL| even, thin dependencies sno|
-198|57|8|1|33|31582.65|0.07|0.02|N|O|1998-01-05|1998-03-20|1998-01-10|TAKE BACK RETURN|TRUCK|carefully caref|
-198|16|10|2|20|18320.20|0.03|0.00|N|O|1998-01-15|1998-03-31|1998-01-25|DELIVER IN PERSON|FOB|carefully final escapades a|
-198|149|2|3|15|15737.10|0.04|0.02|N|O|1998-04-12|1998-02-26|1998-04-15|COLLECT COD|MAIL|es. quickly pending deposits s|
-198|11|5|4|35|31885.35|0.08|0.02|N|O|1998-02-27|1998-03-23|1998-03-14|TAKE BACK RETURN|RAIL|ests nod quickly furiously sly pinto be|
-198|102|3|5|33|33069.30|0.02|0.01|N|O|1998-03-22|1998-03-12|1998-04-14|DELIVER IN PERSON|SHIP|ending foxes acr|
-199|133|9|1|50|51656.50|0.02|0.00|N|O|1996-06-12|1996-06-03|1996-07-04|DELIVER IN PERSON|MAIL|essly regular ideas boost sly|
-199|134|5|2|30|31023.90|0.08|0.05|N|O|1996-03-27|1996-05-29|1996-04-14|NONE|TRUCK|ilent packages doze quickly. thinly |
-224|151|2|1|16|16818.40|0.04|0.00|A|F|1994-08-01|1994-07-30|1994-08-27|DELIVER IN PERSON|MAIL|y unusual foxes |
-224|109|2|2|34|34309.40|0.04|0.08|R|F|1994-07-13|1994-08-25|1994-07-31|COLLECT COD|TRUCK| carefully. final platelets |
-224|190|1|3|41|44697.79|0.07|0.04|A|F|1994-09-01|1994-09-15|1994-09-02|TAKE BACK RETURN|SHIP|after the furiou|
-224|167|4|4|12|12805.92|0.08|0.06|R|F|1994-10-12|1994-08-29|1994-10-20|DELIVER IN PERSON|MAIL|uriously regular packages. slyly fina|
-224|94|7|5|45|44734.05|0.07|0.07|R|F|1994-08-14|1994-09-02|1994-08-27|COLLECT COD|AIR|leep furiously regular requests. furiousl|
-224|51|3|6|4|3804.20|0.02|0.00|R|F|1994-09-08|1994-08-24|1994-10-04|DELIVER IN PERSON|FOB|tructions |
-225|172|3|1|4|4288.68|0.09|0.07|N|O|1995-08-05|1995-08-19|1995-09-03|TAKE BACK RETURN|SHIP|ng the ironic packages. asymptotes among |
-225|131|7|2|3|3093.39|0.00|0.08|N|O|1995-07-25|1995-07-08|1995-08-17|DELIVER IN PERSON|REG AIR| fluffily about the carefully bold a|
-225|199|2|3|45|49463.55|0.06|0.01|N|O|1995-08-17|1995-08-20|1995-08-30|TAKE BACK RETURN|FOB|the slyly even platelets use aro|
-225|147|4|4|24|25131.36|0.00|0.06|N|O|1995-09-23|1995-08-05|1995-10-16|COLLECT COD|MAIL|ironic accounts are final account|
-225|8|5|5|31|28148.00|0.04|0.06|N|O|1995-06-21|1995-07-24|1995-07-04|TAKE BACK RETURN|FOB|special platelets. quickly r|
-225|132|8|6|12|12385.56|0.00|0.00|A|F|1995-06-04|1995-07-15|1995-06-08|COLLECT COD|MAIL| unusual requests. bus|
-225|142|1|7|44|45854.16|0.10|0.06|N|O|1995-09-22|1995-08-16|1995-10-22|NONE|REG AIR|leep slyly |
-226|97|9|1|4|3988.36|0.00|0.00|R|F|1993-03-31|1993-04-30|1993-04-10|NONE|TRUCK|c foxes integrate carefully against th|
-226|138|4|2|46|47753.98|0.06|0.01|A|F|1993-07-06|1993-04-24|1993-07-13|COLLECT COD|FOB|s. carefully bold accounts cajol|
-226|38|4|3|35|32831.05|0.09|0.03|A|F|1993-03-31|1993-05-18|1993-04-01|NONE|RAIL|osits cajole. final, even foxes a|
-226|41|10|4|45|42346.80|0.10|0.02|R|F|1993-04-17|1993-05-27|1993-05-11|DELIVER IN PERSON|AIR| carefully pending pi|
-226|118|8|5|2|2036.22|0.07|0.02|R|F|1993-03-26|1993-04-13|1993-04-20|TAKE BACK RETURN|SHIP|al platelets. express somas |
-226|83|4|6|48|47187.84|0.02|0.00|A|F|1993-06-11|1993-05-15|1993-06-19|NONE|REG AIR|efully silent packages. final deposit|
-226|118|8|7|14|14253.54|0.09|0.00|R|F|1993-05-20|1993-06-05|1993-05-27|COLLECT COD|MAIL|ep carefully regular accounts. ironic|
-227|166|1|1|19|20257.04|0.05|0.06|N|O|1995-12-10|1996-01-30|1995-12-26|NONE|RAIL|s cajole furiously a|
-227|175|3|2|24|25804.08|0.07|0.07|N|O|1996-02-03|1995-12-24|1996-02-12|COLLECT COD|SHIP|uses across the blithe dependencies cajol|
-228|5|8|1|3|2715.00|0.10|0.08|A|F|1993-05-20|1993-04-08|1993-05-26|DELIVER IN PERSON|SHIP|ckages. sly|
-229|84|5|1|20|19681.60|0.02|0.03|R|F|1994-01-11|1994-01-31|1994-01-26|DELIVER IN PERSON|REG AIR|le. instructions use across the quickly fin|
-229|129|10|2|29|29844.48|0.07|0.00|A|F|1994-03-15|1994-03-02|1994-03-26|COLLECT COD|SHIP|s, final request|
-229|79|10|3|28|27413.96|0.02|0.02|R|F|1994-02-10|1994-02-02|1994-03-10|DELIVER IN PERSON|FOB| final, regular requests. platel|
-229|177|6|4|3|3231.51|0.02|0.08|R|F|1994-03-22|1994-03-24|1994-04-04|DELIVER IN PERSON|REG AIR|posits. furiously regular theodol|
-229|156|1|5|33|34852.95|0.03|0.06|R|F|1994-03-25|1994-02-11|1994-04-13|NONE|FOB| deposits; bold, ruthless theodolites|
-229|106|9|6|29|29176.90|0.04|0.00|R|F|1994-01-14|1994-02-16|1994-01-22|NONE|FOB|uriously pending |
-230|186|7|1|46|49964.28|0.09|0.00|R|F|1994-02-03|1994-01-15|1994-02-23|TAKE BACK RETURN|SHIP|old packages ha|
-230|195|7|2|6|6571.14|0.03|0.08|A|F|1994-01-26|1994-01-25|1994-02-13|NONE|REG AIR| sleep furiously about the p|
-230|8|5|3|1|908.00|0.07|0.06|R|F|1994-01-22|1994-01-03|1994-02-05|TAKE BACK RETURN|RAIL|blithely unusual dolphins. bold, ex|
-230|10|3|4|44|40040.44|0.08|0.06|R|F|1994-02-09|1994-01-18|1994-03-11|NONE|MAIL|deposits integrate slyly sile|
-230|19|9|5|8|7352.08|0.09|0.06|R|F|1993-11-03|1994-01-20|1993-11-11|TAKE BACK RETURN|TRUCK|g the instructions. fluffil|
-230|34|10|6|8|7472.24|0.00|0.05|R|F|1993-11-21|1994-01-05|1993-12-19|TAKE BACK RETURN|FOB|nal ideas. silent, reg|
-231|159|10|1|16|16946.40|0.04|0.08|R|F|1994-11-20|1994-10-29|1994-12-17|TAKE BACK RETURN|AIR|e furiously ironic pinto beans.|
-231|84|5|2|46|45267.68|0.04|0.05|R|F|1994-12-13|1994-12-02|1994-12-14|DELIVER IN PERSON|SHIP|affix blithely. bold requests among the f|
-231|199|1|3|50|54959.50|0.09|0.01|A|F|1994-12-11|1994-12-14|1994-12-13|NONE|RAIL|onic packages haggle fluffily a|
-231|57|8|4|31|29668.55|0.08|0.02|A|F|1994-11-05|1994-12-27|1994-11-30|TAKE BACK RETURN|SHIP|iously special decoys wake q|
-256|89|10|1|22|21759.76|0.09|0.02|R|F|1994-01-12|1993-12-28|1994-01-26|COLLECT COD|FOB|ke quickly ironic, ironic deposits. reg|
-256|119|6|2|40|40764.40|0.10|0.01|A|F|1993-11-30|1993-12-13|1993-12-02|NONE|FOB|nal theodolites. deposits cajole s|
-256|130|9|3|45|46355.85|0.02|0.08|R|F|1994-01-14|1994-01-17|1994-02-10|COLLECT COD|SHIP| grouches. ideas wake quickly ar|
-257|147|8|1|7|7329.98|0.05|0.02|N|O|1998-06-18|1998-05-15|1998-06-27|COLLECT COD|FOB|ackages sleep bold realms. f|
-258|107|4|1|8|8056.80|0.00|0.07|R|F|1994-01-20|1994-03-21|1994-02-09|NONE|REG AIR|ully about the fluffily silent dependencies|
-258|197|1|2|40|43887.60|0.10|0.01|A|F|1994-03-13|1994-02-23|1994-04-05|DELIVER IN PERSON|FOB|silent frets nod daringly busy, bold|
-258|162|3|3|45|47797.20|0.07|0.07|R|F|1994-03-04|1994-02-13|1994-03-30|DELIVER IN PERSON|TRUCK|regular excuses-- fluffily ruthl|
-258|133|9|4|31|32027.03|0.02|0.05|A|F|1994-04-20|1994-03-20|1994-04-28|COLLECT COD|REG AIR| slyly blithely special mul|
-258|36|2|5|25|23400.75|0.08|0.02|A|F|1994-04-13|1994-02-26|1994-04-29|TAKE BACK RETURN|TRUCK|leep pending packages.|
-258|147|4|6|36|37697.04|0.09|0.04|A|F|1994-01-11|1994-03-04|1994-01-18|DELIVER IN PERSON|AIR|nic asymptotes. slyly silent r|
-259|99|10|1|14|13987.26|0.00|0.08|A|F|1993-12-17|1993-12-09|1993-12-31|COLLECT COD|SHIP|ons against the express acco|
-259|162|1|2|14|14870.24|0.03|0.05|R|F|1993-11-10|1993-11-20|1993-11-17|DELIVER IN PERSON|FOB|ully even, regul|
-259|24|5|3|42|38808.84|0.09|0.00|R|F|1993-10-20|1993-11-18|1993-11-12|NONE|TRUCK|the slyly ironic pinto beans. fi|
-259|196|10|4|3|3288.57|0.08|0.06|R|F|1993-10-04|1993-11-07|1993-10-14|TAKE BACK RETURN|SHIP|ng slyly at the accounts.|
-259|193|6|5|6|6559.14|0.00|0.05|R|F|1993-12-05|1993-12-22|1993-12-21|COLLECT COD|TRUCK| requests sleep|
-260|156|7|1|50|52807.50|0.07|0.08|N|O|1997-03-24|1997-02-09|1997-04-20|TAKE BACK RETURN|REG AIR|c deposits |
-260|183|4|2|26|28162.68|0.02|0.07|N|O|1996-12-12|1997-02-06|1996-12-15|NONE|TRUCK|ld theodolites boost fl|
-260|42|1|3|27|25435.08|0.05|0.08|N|O|1997-03-23|1997-02-15|1997-04-22|TAKE BACK RETURN|RAIL|ions according to the|
-260|6|1|4|29|26274.00|0.10|0.06|N|O|1997-03-15|1997-01-14|1997-04-13|NONE|MAIL|fluffily even asymptotes. express wa|
-260|96|9|5|44|43827.96|0.01|0.05|N|O|1997-03-26|1997-02-03|1997-04-19|DELIVER IN PERSON|MAIL|above the blithely ironic instr|
-261|2|7|1|34|30668.00|0.05|0.08|R|F|1993-08-18|1993-09-24|1993-08-20|COLLECT COD|REG AIR|c packages. asymptotes da|
-261|66|7|2|20|19321.20|0.00|0.06|R|F|1993-10-21|1993-08-02|1993-11-04|DELIVER IN PERSON|RAIL|ites hinder |
-261|174|3|3|28|30076.76|0.08|0.03|R|F|1993-07-24|1993-08-20|1993-08-05|COLLECT COD|AIR|ironic packages nag slyly. carefully fin|
-261|119|3|4|49|49936.39|0.04|0.05|R|F|1993-09-12|1993-08-31|1993-10-07|COLLECT COD|SHIP|ions. bold accounts |
-261|61|6|5|49|47091.94|0.01|0.08|A|F|1993-09-29|1993-09-08|1993-10-01|COLLECT COD|SHIP| pinto beans haggle slyly furiously pending|
-261|97|9|6|20|19941.80|0.06|0.06|A|F|1993-10-15|1993-09-05|1993-11-07|NONE|AIR|ing to the special, ironic deposi|
-262|192|3|1|39|42595.41|0.01|0.05|N|O|1996-01-15|1996-02-18|1996-01-28|COLLECT COD|RAIL|usual, regular requests|
-262|61|6|2|33|31714.98|0.09|0.03|N|O|1996-03-10|1996-01-31|1996-03-27|TAKE BACK RETURN|AIR|atelets sleep furiously. requests cajole. b|
-262|59|1|3|35|33566.75|0.05|0.08|N|O|1996-03-12|1996-02-14|1996-04-11|COLLECT COD|MAIL|lites cajole along the pending packag|
-263|24|9|1|22|20328.44|0.06|0.08|R|F|1994-08-24|1994-06-20|1994-09-09|NONE|FOB|efully express fo|
-263|85|6|2|9|8865.72|0.08|0.00|A|F|1994-07-21|1994-07-16|1994-08-08|TAKE BACK RETURN|TRUCK|lms wake bl|
-263|143|2|3|50|52157.00|0.06|0.04|R|F|1994-08-18|1994-07-31|1994-08-22|NONE|TRUCK|re the packages. special|
-288|51|3|1|31|29482.55|0.00|0.03|N|O|1997-03-17|1997-04-28|1997-04-06|TAKE BACK RETURN|AIR|instructions wa|
-288|117|1|2|49|49838.39|0.08|0.05|N|O|1997-04-19|1997-05-19|1997-05-18|TAKE BACK RETURN|TRUCK|ic excuses sleep always spe|
-288|99|10|3|36|35967.24|0.02|0.02|N|O|1997-02-22|1997-05-07|1997-03-07|TAKE BACK RETURN|TRUCK|yly pending excu|
-288|79|10|4|19|18602.33|0.07|0.07|N|O|1997-03-14|1997-04-04|1997-03-26|NONE|MAIL|deposits. blithely quick courts ar|
-288|162|9|5|31|32926.96|0.10|0.04|N|O|1997-05-29|1997-04-24|1997-06-20|TAKE BACK RETURN|RAIL|ns. fluffily|
-289|174|2|1|25|26854.25|0.07|0.05|N|O|1997-03-18|1997-05-05|1997-04-15|DELIVER IN PERSON|FOB|out the quickly bold theodol|
-289|112|2|2|6|6072.66|0.06|0.05|N|O|1997-02-18|1997-05-08|1997-03-19|DELIVER IN PERSON|SHIP|d packages use fluffily furiously|
-289|17|4|3|44|40348.44|0.10|0.08|N|O|1997-06-05|1997-04-20|1997-07-02|COLLECT COD|MAIL|ly ironic foxes. asymptotes |
-289|40|6|4|48|45121.92|0.01|0.08|N|O|1997-03-14|1997-03-30|1997-03-24|DELIVER IN PERSON|RAIL|sits cajole. bold pinto beans x-ray fl|
-289|47|4|5|13|12311.52|0.10|0.03|N|O|1997-06-08|1997-04-06|1997-06-18|TAKE BACK RETURN|REG AIR|ts. quickly bold deposits alongside|
-290|6|1|1|35|31710.00|0.01|0.02|R|F|1994-04-01|1994-02-05|1994-04-27|NONE|MAIL|ove the final foxes detect slyly fluffily|
-290|129|4|2|2|2058.24|0.05|0.04|A|F|1994-01-30|1994-02-13|1994-02-21|TAKE BACK RETURN|TRUCK|. permanently furious reques|
-290|2|5|3|5|4510.00|0.03|0.05|A|F|1994-01-19|1994-02-24|1994-01-27|NONE|MAIL|ans integrate. requests sleep. fur|
-290|124|9|4|23|23554.76|0.05|0.08|R|F|1994-03-14|1994-02-21|1994-04-09|NONE|AIR|refully unusual packages. |
-291|123|6|1|21|21485.52|0.05|0.07|A|F|1994-05-26|1994-05-10|1994-06-23|COLLECT COD|TRUCK|y quickly regular theodolites. final t|
-291|138|9|2|19|19724.47|0.08|0.02|R|F|1994-06-14|1994-04-25|1994-06-19|NONE|REG AIR|e. ruthlessly final accounts after the|
-291|61|8|3|30|28831.80|0.10|0.02|R|F|1994-03-22|1994-04-30|1994-03-24|DELIVER IN PERSON|FOB| fluffily regular deposits. quickl|
-292|154|5|1|8|8433.20|0.10|0.03|R|F|1992-02-18|1992-03-30|1992-03-18|DELIVER IN PERSON|RAIL|sily bold deposits alongside of the ex|
-292|100|1|2|24|24002.40|0.08|0.04|R|F|1992-03-24|1992-03-06|1992-04-20|COLLECT COD|TRUCK| bold, pending theodolites u|
-293|9|6|1|14|12726.00|0.02|0.05|R|F|1992-10-19|1992-12-23|1992-11-10|DELIVER IN PERSON|SHIP|es. packages above the|
-293|187|8|2|11|11958.98|0.10|0.04|R|F|1992-12-24|1992-12-01|1993-01-12|COLLECT COD|MAIL| affix carefully quickly special idea|
-293|118|8|3|13|13235.43|0.04|0.02|A|F|1992-12-17|1992-12-26|1992-12-22|COLLECT COD|RAIL| wake after the quickly even deposits. bli|
-294|60|2|1|31|29761.86|0.00|0.01|R|F|1993-08-06|1993-08-19|1993-08-13|TAKE BACK RETURN|AIR|le fluffily along the quick|
-295|198|10|1|29|31847.51|0.02|0.07|A|F|1994-11-09|1994-12-08|1994-12-07|COLLECT COD|MAIL|inst the carefully ironic pinto beans. blit|
-295|92|6|2|26|25794.34|0.04|0.03|R|F|1994-12-13|1994-11-30|1995-01-06|DELIVER IN PERSON|AIR|ts above the slyly regular requests x-ray q|
-295|16|10|3|8|7328.08|0.10|0.07|R|F|1995-01-13|1994-11-17|1995-01-25|NONE|TRUCK| final instructions h|
-295|61|10|4|26|24987.56|0.10|0.04|A|F|1995-01-12|1994-11-22|1995-01-22|DELIVER IN PERSON|MAIL| carefully iron|
-320|5|2|1|30|27150.00|0.05|0.01|N|O|1997-12-04|1998-01-21|1997-12-13|NONE|RAIL| ironic, final accounts wake quick de|
-320|193|5|2|13|14211.47|0.03|0.00|N|O|1997-12-16|1997-12-26|1997-12-17|TAKE BACK RETURN|AIR|he furiously regular pinto beans. car|
-321|1|8|1|21|18921.00|0.01|0.08|A|F|1993-07-18|1993-04-24|1993-08-13|TAKE BACK RETURN|REG AIR|hockey players sleep slyly sl|
-321|141|4|2|41|42686.74|0.08|0.07|R|F|1993-06-21|1993-06-07|1993-07-09|NONE|REG AIR|special packages shall have to doze blit|
-322|153|8|1|12|12637.80|0.08|0.07|A|F|1992-06-29|1992-05-30|1992-07-11|NONE|AIR|ular theodolites promise qu|
-322|44|5|2|48|45313.92|0.02|0.07|A|F|1992-06-11|1992-06-16|1992-06-26|COLLECT COD|RAIL|dolites detect qu|
-322|13|3|3|20|18260.20|0.04|0.01|R|F|1992-04-26|1992-05-04|1992-05-22|DELIVER IN PERSON|MAIL|ckly toward |
-322|184|5|4|10|10841.80|0.06|0.03|R|F|1992-04-12|1992-05-13|1992-04-14|DELIVER IN PERSON|AIR| deposits grow slyly according to th|
-322|12|2|5|35|31920.35|0.07|0.06|A|F|1992-07-17|1992-05-03|1992-08-14|TAKE BACK RETURN|RAIL|egular accounts cajole carefully. even d|
-322|34|5|6|3|2802.09|0.08|0.05|A|F|1992-07-03|1992-05-10|1992-07-28|NONE|AIR|ending, ironic deposits along the blith|
-322|38|4|7|5|4690.15|0.01|0.02|A|F|1992-04-15|1992-05-12|1992-04-26|COLLECT COD|REG AIR| special grouches sleep quickly instructio|
-323|164|9|1|50|53208.00|0.05|0.04|A|F|1994-04-20|1994-04-25|1994-05-12|DELIVER IN PERSON|REG AIR|cial requests |
-323|96|8|2|18|17929.62|0.06|0.07|R|F|1994-04-13|1994-06-02|1994-05-10|DELIVER IN PERSON|TRUCK|posits cajole furiously pinto beans. |
-323|143|4|3|9|9388.26|0.07|0.04|A|F|1994-06-26|1994-06-10|1994-07-13|COLLECT COD|TRUCK|nic accounts. regular, regular pack|
-324|200|3|1|26|28605.20|0.07|0.01|R|F|1992-04-19|1992-05-28|1992-05-12|DELIVER IN PERSON|RAIL|ross the slyly regular s|
-325|159|1|1|34|36011.10|0.09|0.04|A|F|1993-10-28|1993-12-13|1993-11-17|TAKE BACK RETURN|MAIL|ly bold deposits. always iron|
-325|186|7|2|5|5430.90|0.07|0.08|A|F|1994-01-02|1994-01-05|1994-01-04|TAKE BACK RETURN|MAIL| theodolites. |
-325|19|3|3|35|32165.35|0.07|0.07|A|F|1993-12-06|1994-01-03|1993-12-26|DELIVER IN PERSON|REG AIR|packages wa|
-326|180|9|1|41|44287.38|0.06|0.03|N|O|1995-08-30|1995-07-09|1995-09-12|DELIVER IN PERSON|TRUCK|ily quickly bold ideas.|
-326|20|4|2|38|34960.76|0.02|0.08|N|O|1995-09-12|1995-08-23|1995-09-14|COLLECT COD|RAIL|es sleep slyly. carefully regular inst|
-326|184|5|3|25|27104.50|0.03|0.04|N|O|1995-08-03|1995-07-27|1995-08-16|NONE|AIR|ily furiously unusual accounts. |
-326|85|6|4|5|4925.40|0.03|0.08|N|O|1995-07-29|1995-07-13|1995-08-12|NONE|REG AIR|deas sleep according to the sometimes spe|
-326|35|6|5|31|28985.93|0.04|0.08|N|O|1995-09-27|1995-07-06|1995-10-22|NONE|TRUCK|cies sleep quick|
-326|157|9|6|41|43343.15|0.02|0.00|N|O|1995-07-05|1995-07-23|1995-07-20|TAKE BACK RETURN|REG AIR|to beans wake before the furiously re|
-326|43|10|7|47|44322.88|0.04|0.04|N|O|1995-09-16|1995-07-04|1995-10-04|NONE|REG AIR| special accounts sleep |
-327|144|3|1|16|16706.24|0.03|0.01|N|O|1995-07-05|1995-06-07|1995-07-09|TAKE BACK RETURN|TRUCK|cial ideas sleep af|
-327|42|9|2|9|8478.36|0.09|0.05|A|F|1995-05-24|1995-07-11|1995-06-05|NONE|AIR| asymptotes are fu|
-352|64|5|1|17|16389.02|0.07|0.05|R|F|1994-06-02|1994-05-31|1994-06-29|NONE|FOB|pending deposits sleep furiously |
-353|120|7|1|41|41824.92|0.00|0.06|A|F|1994-03-25|1994-03-31|1994-03-30|DELIVER IN PERSON|AIR|refully final theodoli|
-353|148|9|2|29|30396.06|0.09|0.00|A|F|1994-01-11|1994-03-19|1994-02-09|COLLECT COD|FOB|ctions impr|
-353|135|1|3|12|12421.56|0.06|0.01|R|F|1994-01-02|1994-03-26|1994-01-19|DELIVER IN PERSON|RAIL|g deposits cajole |
-353|78|7|4|46|44991.22|0.00|0.04|A|F|1994-04-14|1994-01-31|1994-05-05|DELIVER IN PERSON|FOB| ironic dolphins |
-353|117|4|5|9|9153.99|0.02|0.02|A|F|1994-03-15|1994-03-20|1994-03-18|TAKE BACK RETURN|RAIL|ual accounts! carefu|
-353|103|4|6|39|39120.90|0.02|0.05|A|F|1994-01-15|1994-03-30|1994-02-01|NONE|MAIL|losely quickly even accounts. c|
-354|50|7|1|14|13300.70|0.08|0.04|N|O|1996-04-12|1996-06-03|1996-05-08|NONE|SHIP|quickly regular grouches will eat. careful|
-354|194|8|2|24|26260.56|0.01|0.01|N|O|1996-05-08|1996-05-17|1996-06-07|DELIVER IN PERSON|AIR|y silent requests. regular, even accounts|
-354|59|10|3|50|47952.50|0.08|0.05|N|O|1996-03-21|1996-05-20|1996-04-04|COLLECT COD|TRUCK|to beans s|
-354|107|4|4|7|7049.70|0.06|0.01|N|O|1996-05-07|1996-04-18|1996-05-24|NONE|MAIL|ously idly ironic accounts-- quickl|
-354|31|2|5|18|16758.54|0.04|0.08|N|O|1996-03-31|1996-05-13|1996-04-27|DELIVER IN PERSON|RAIL| about the carefully unusual |
-354|62|1|6|36|34634.16|0.03|0.02|N|O|1996-03-19|1996-05-29|1996-03-30|NONE|AIR|onic requests thrash bold g|
-354|5|10|7|14|12670.00|0.01|0.07|N|O|1996-07-06|1996-06-08|1996-07-10|TAKE BACK RETURN|MAIL|t thinly above the ironic, |
-355|114|1|1|31|31437.41|0.09|0.07|A|F|1994-07-13|1994-08-18|1994-07-18|DELIVER IN PERSON|FOB|y unusual, ironic|
-355|97|1|2|41|40880.69|0.05|0.00|A|F|1994-08-15|1994-07-19|1994-09-06|DELIVER IN PERSON|TRUCK| deposits. carefully r|
-356|46|7|1|4|3784.16|0.10|0.01|A|F|1994-07-28|1994-08-01|1994-08-04|DELIVER IN PERSON|REG AIR| the dependencies nod unusual, final ac|
-356|108|3|2|48|48388.80|0.02|0.03|R|F|1994-08-12|1994-07-31|1994-08-26|NONE|FOB|unusual packages. furiously |
-356|119|3|3|35|35668.85|0.08|0.07|R|F|1994-10-14|1994-07-31|1994-10-23|COLLECT COD|TRUCK|s. unusual, final|
-356|56|1|4|41|39198.05|0.07|0.05|A|F|1994-09-28|1994-09-20|1994-10-07|COLLECT COD|SHIP| according to the express foxes will|
-356|125|8|5|37|37929.44|0.05|0.03|A|F|1994-07-15|1994-08-24|1994-08-09|DELIVER IN PERSON|FOB|ndencies are since the packag|
-357|114|5|1|26|26366.86|0.06|0.03|N|O|1996-12-28|1996-11-26|1997-01-13|NONE|FOB| carefully pending accounts use a|
-357|186|7|2|36|39102.48|0.07|0.06|N|O|1996-12-28|1996-11-13|1997-01-24|DELIVER IN PERSON|AIR|d the carefully even requests. |
-357|165|2|3|32|34085.12|0.05|0.07|N|O|1997-01-28|1996-12-29|1997-02-14|NONE|MAIL|y above the carefully final accounts|
-358|191|3|1|41|44738.79|0.06|0.01|A|F|1993-11-18|1993-11-14|1993-11-28|NONE|TRUCK|ely frets. furious deposits sleep |
-358|190|1|2|32|34886.08|0.05|0.08|A|F|1993-10-18|1993-12-12|1993-10-31|NONE|TRUCK|y final foxes sleep blithely sl|
-358|169|6|3|40|42766.40|0.09|0.01|A|F|1993-12-05|1993-11-04|1994-01-01|COLLECT COD|MAIL|ng the ironic theo|
-358|97|10|4|15|14956.35|0.08|0.08|A|F|1993-10-04|1993-12-17|1993-10-23|TAKE BACK RETURN|MAIL|out the blithely ironic deposits slee|
-358|29|2|5|18|16722.36|0.01|0.02|R|F|1993-10-07|1993-11-01|1993-10-26|COLLECT COD|SHIP|olphins haggle ironic accounts. f|
-358|162|3|6|32|33989.12|0.03|0.05|R|F|1993-12-21|1993-11-06|1994-01-17|DELIVER IN PERSON|RAIL|lyly express deposits |
-358|83|4|7|45|44238.60|0.05|0.02|A|F|1993-12-08|1993-10-29|1993-12-30|NONE|REG AIR|to beans. regular, unusual deposits sl|
-359|166|7|1|30|31984.80|0.00|0.08|A|F|1995-01-06|1995-02-20|1995-01-20|TAKE BACK RETURN|AIR|uses detect spec|
-359|12|9|2|18|16416.18|0.00|0.03|A|F|1995-01-27|1995-03-18|1995-01-31|DELIVER IN PERSON|RAIL|unusual warthogs. ironically sp|
-359|132|8|3|17|17546.21|0.07|0.06|A|F|1995-01-31|1995-03-18|1995-02-10|COLLECT COD|SHIP|sts according to the blithely|
-359|90|1|4|38|37623.42|0.10|0.08|R|F|1995-03-30|1995-01-20|1995-04-25|DELIVER IN PERSON|RAIL|g furiously. regular, sile|
-359|168|5|5|11|11749.76|0.01|0.03|A|F|1995-02-15|1995-01-27|1995-02-18|NONE|FOB|rets wake blithely. slyly final dep|
-359|183|4|6|23|24913.14|0.04|0.07|R|F|1995-01-31|1995-03-11|1995-02-16|DELIVER IN PERSON|REG AIR|ic courts snooze quickly furiously final fo|
-384|179|8|1|38|41008.46|0.07|0.01|R|F|1992-06-02|1992-04-18|1992-06-10|DELIVER IN PERSON|TRUCK|totes cajole blithely against the even|
-384|64|3|2|49|47238.94|0.09|0.07|A|F|1992-04-01|1992-04-25|1992-04-18|COLLECT COD|AIR|refully carefully ironic instructions. bl|
-384|182|3|3|11|11903.98|0.02|0.08|A|F|1992-04-02|1992-04-21|1992-04-15|COLLECT COD|MAIL|ash carefully|
-384|93|6|4|11|10923.99|0.00|0.06|R|F|1992-06-24|1992-05-29|1992-07-22|COLLECT COD|TRUCK|nic excuses are furiously above the blith|
-384|132|8|5|14|14449.82|0.08|0.06|R|F|1992-06-14|1992-05-29|1992-07-05|DELIVER IN PERSON|TRUCK|ckages are slyly after the slyly specia|
-385|167|6|1|7|7470.12|0.05|0.06|N|O|1996-05-23|1996-05-09|1996-06-06|DELIVER IN PERSON|REG AIR| special asymptote|
-385|54|9|2|46|43886.30|0.08|0.07|N|O|1996-03-29|1996-05-17|1996-04-18|NONE|REG AIR|lthily ironic f|
-386|153|5|1|39|41072.85|0.10|0.07|A|F|1995-05-10|1995-02-28|1995-05-25|NONE|SHIP|hely. carefully regular accounts hag|
-386|69|4|2|16|15504.96|0.06|0.01|A|F|1995-04-12|1995-04-18|1995-05-11|DELIVER IN PERSON|MAIL|lithely fluffi|
-386|131|2|3|37|38151.81|0.09|0.04|A|F|1995-05-23|1995-03-01|1995-05-25|TAKE BACK RETURN|MAIL|ending pearls breach fluffily. slyly pen|
-387|137|8|1|1|1037.13|0.08|0.03|N|O|1997-05-06|1997-04-23|1997-05-10|NONE|SHIP| pinto beans wake furiously carefu|
-387|153|4|2|42|44232.30|0.07|0.05|N|O|1997-05-25|1997-02-25|1997-05-29|DELIVER IN PERSON|RAIL|lithely final theodolites.|
-387|97|10|3|40|39883.60|0.09|0.02|N|O|1997-03-08|1997-04-18|1997-03-31|COLLECT COD|TRUCK| quickly ironic platelets are slyly. fluff|
-387|56|7|4|19|18164.95|0.08|0.00|N|O|1997-03-14|1997-04-21|1997-04-04|NONE|REG AIR|gular dependencies|
-387|149|6|5|32|33572.48|0.08|0.06|N|O|1997-05-02|1997-04-11|1997-05-11|DELIVER IN PERSON|TRUCK|gle. silent, fur|
-388|33|9|1|42|39187.26|0.05|0.06|R|F|1993-02-21|1993-02-26|1993-03-15|COLLECT COD|FOB|accounts sleep furiously|
-388|128|9|2|46|47293.52|0.07|0.01|A|F|1993-03-22|1993-01-26|1993-03-24|COLLECT COD|FOB|to beans nag about the careful reque|
-388|65|2|3|40|38602.40|0.06|0.01|A|F|1992-12-24|1993-01-28|1993-01-19|TAKE BACK RETURN|REG AIR|quests against the carefully unusual epi|
-389|190|1|1|2|2180.38|0.09|0.00|R|F|1994-04-13|1994-04-10|1994-04-25|TAKE BACK RETURN|RAIL|fts. courts eat blithely even dependenc|
-390|107|10|1|10|10071.00|0.02|0.05|N|O|1998-05-26|1998-07-06|1998-06-23|TAKE BACK RETURN|SHIP| requests. final accounts x-ray beside the|
-390|124|7|2|17|17410.04|0.09|0.06|N|O|1998-06-07|1998-06-14|1998-07-07|COLLECT COD|SHIP|ending, pending pinto beans wake slyl|
-390|184|5|3|46|49872.28|0.07|0.04|N|O|1998-06-06|1998-05-20|1998-06-14|DELIVER IN PERSON|SHIP|cial excuses. bold, pending packages|
-390|142|3|4|42|43769.88|0.01|0.05|N|O|1998-06-06|1998-06-22|1998-07-05|COLLECT COD|SHIP|counts nag across the sly, sil|
-390|128|3|5|13|13365.56|0.02|0.06|N|O|1998-07-08|1998-05-10|1998-07-18|DELIVER IN PERSON|SHIP|sleep carefully idle packages. blithely |
-390|125|4|6|11|11276.32|0.09|0.06|N|O|1998-05-05|1998-05-15|1998-06-01|DELIVER IN PERSON|SHIP|according to the foxes are furiously |
-390|85|6|7|24|23641.92|0.05|0.02|N|O|1998-04-18|1998-05-19|1998-04-28|TAKE BACK RETURN|AIR|y. enticingly final depos|
-391|122|1|1|14|14309.68|0.09|0.02|R|F|1995-02-11|1995-02-03|1995-02-13|TAKE BACK RETURN|TRUCK| escapades sleep furiously about |
-416|94|6|1|25|24852.25|0.00|0.05|A|F|1993-10-11|1993-11-26|1993-10-21|DELIVER IN PERSON|TRUCK|y final theodolites about|
-416|111|1|2|22|22244.42|0.10|0.00|R|F|1993-12-27|1993-12-17|1994-01-09|COLLECT COD|RAIL|rint blithely above the pending sentim|
-416|175|5|3|25|26879.25|0.07|0.01|R|F|1993-10-16|1993-12-03|1993-10-29|NONE|AIR|ses boost after the bold requests.|
-417|40|1|1|39|36661.56|0.01|0.02|A|F|1994-05-31|1994-05-02|1994-06-06|NONE|SHIP|y regular requests wake along |
-417|70|7|2|18|17461.26|0.00|0.01|R|F|1994-03-29|1994-04-10|1994-04-26|TAKE BACK RETURN|FOB|- final requests sle|
-417|45|2|3|41|38746.64|0.10|0.01|R|F|1994-04-11|1994-03-08|1994-05-06|COLLECT COD|RAIL|tes. regular requests across the |
-417|132|3|4|2|2064.26|0.01|0.03|R|F|1994-02-13|1994-04-19|1994-03-15|DELIVER IN PERSON|SHIP|uriously bol|
-418|19|3|1|31|28489.31|0.00|0.03|N|F|1995-06-05|1995-06-18|1995-06-26|COLLECT COD|FOB|final theodolites. fluffil|
-418|2|5|2|1|902.00|0.04|0.07|N|O|1995-06-23|1995-06-16|1995-07-23|DELIVER IN PERSON|AIR|regular, silent pinto|
-418|35|1|3|3|2805.09|0.04|0.06|N|O|1995-06-29|1995-07-12|1995-07-01|COLLECT COD|AIR|ly furiously regular w|
-419|153|8|1|33|34753.95|0.05|0.02|N|O|1996-11-06|1996-12-25|1996-11-20|TAKE BACK RETURN|TRUCK|y above the bli|
-419|65|2|2|32|30881.92|0.01|0.06|N|O|1996-12-04|1996-12-04|1996-12-24|COLLECT COD|SHIP|blithely regular requests. special pinto|
-419|71|1|3|15|14566.05|0.07|0.04|N|O|1996-12-17|1996-11-28|1996-12-19|TAKE BACK RETURN|REG AIR| sleep final, regular theodolites. fluffi|
-419|9|6|4|15|13635.00|0.01|0.02|N|O|1997-01-09|1996-12-22|1997-01-25|COLLECT COD|FOB|of the careful, thin theodolites. quickly s|
-419|149|2|5|17|17835.38|0.01|0.00|N|O|1997-01-13|1996-12-20|1997-02-01|COLLECT COD|REG AIR|lar dependencies: carefully regu|
-420|101|6|1|5|5005.50|0.04|0.03|N|O|1995-11-04|1996-01-02|1995-11-30|NONE|REG AIR|cajole blit|
-420|162|7|2|22|23367.52|0.05|0.04|N|O|1996-01-25|1995-12-16|1996-02-03|TAKE BACK RETURN|AIR|ly against the blithely re|
-420|48|1|3|45|42661.80|0.09|0.08|N|O|1996-01-14|1996-01-01|1996-01-26|COLLECT COD|FOB| final accounts. furiously express forges|
-420|75|6|4|12|11700.84|0.08|0.08|N|O|1996-02-05|1996-01-03|1996-02-12|TAKE BACK RETURN|REG AIR|c instructions are |
-420|73|2|5|37|36003.59|0.02|0.00|N|O|1995-11-16|1995-12-13|1995-11-19|DELIVER IN PERSON|SHIP|rbits. bold requests along the quickl|
-420|124|7|6|40|40964.80|0.01|0.05|N|O|1995-11-26|1995-12-26|1995-12-20|TAKE BACK RETURN|FOB| after the special|
-420|16|7|7|39|35724.39|0.00|0.08|N|O|1995-12-09|1995-12-16|1995-12-31|DELIVER IN PERSON|REG AIR|s. ironic waters about the car|
-421|134|5|1|1|1034.13|0.02|0.07|R|F|1992-05-29|1992-04-27|1992-06-09|NONE|TRUCK|oldly busy deposit|
-422|152|10|1|25|26303.75|0.10|0.07|N|O|1997-07-01|1997-08-17|1997-07-09|DELIVER IN PERSON|SHIP|carefully bold theodolit|
-422|171|1|2|10|10711.70|0.02|0.03|N|O|1997-06-15|1997-08-04|1997-07-08|TAKE BACK RETURN|AIR|he furiously ironic theodolite|
-422|176|4|3|46|49503.82|0.09|0.00|N|O|1997-06-21|1997-07-14|1997-06-27|DELIVER IN PERSON|RAIL| ideas. qu|
-422|162|7|4|25|26554.00|0.10|0.04|N|O|1997-08-24|1997-07-09|1997-09-22|NONE|FOB|ep along the furiousl|
-423|132|3|1|27|27867.51|0.06|0.03|N|O|1996-08-20|1996-08-01|1996-08-23|TAKE BACK RETURN|SHIP|ccounts. blithely regular pack|
-448|126|7|1|4|4104.48|0.00|0.04|N|O|1995-11-25|1995-10-20|1995-11-26|TAKE BACK RETURN|MAIL|nts thrash quickly among the b|
-448|173|1|2|46|49365.82|0.05|0.00|N|O|1995-08-31|1995-09-30|1995-09-09|COLLECT COD|SHIP| to the fluffily ironic packages.|
-448|27|6|3|35|32445.70|0.10|0.08|N|O|1995-09-27|1995-11-19|1995-10-20|COLLECT COD|REG AIR|ses nag quickly quickly ir|
-448|170|1|4|8|8561.36|0.10|0.00|N|O|1995-11-02|1995-10-16|1995-11-15|COLLECT COD|TRUCK|ounts wake blithely. furiously pending|
-448|138|9|5|23|23876.99|0.02|0.05|N|O|1995-09-26|1995-11-02|1995-10-17|NONE|SHIP|ious, final gifts|
-449|152|7|1|12|12625.80|0.02|0.08|N|O|1995-11-06|1995-08-25|1995-11-18|TAKE BACK RETURN|SHIP|ly. blithely ironic |
-449|109|6|2|4|4036.40|0.10|0.06|N|O|1995-10-27|1995-09-14|1995-11-21|DELIVER IN PERSON|FOB|are fluffily. requests are furiously|
-449|10|1|3|3|2730.03|0.07|0.08|N|O|1995-07-28|1995-09-11|1995-08-01|NONE|RAIL| bold deposits. express theodolites haggle|
-449|158|3|4|22|23279.30|0.07|0.00|N|O|1995-08-17|1995-09-04|1995-09-10|COLLECT COD|FOB|furiously final theodolites eat careful|
-450|162|7|1|42|44610.72|0.03|0.00|N|F|1995-06-07|1995-05-29|1995-06-23|TAKE BACK RETURN|SHIP|y asymptotes. regular depen|
-450|107|8|2|5|5035.50|0.03|0.02|A|F|1995-04-02|1995-05-06|1995-04-13|TAKE BACK RETURN|TRUCK|the pinto bea|
-450|143|6|3|32|33380.48|0.06|0.03|N|O|1995-07-02|1995-04-25|1995-07-30|TAKE BACK RETURN|SHIP| accounts nod fluffily even, pending|
-450|57|9|4|40|38282.00|0.05|0.03|R|F|1995-03-20|1995-05-25|1995-04-14|NONE|RAIL|ve. asymptote|
-450|79|10|5|2|1958.14|0.09|0.00|A|F|1995-03-11|1995-05-21|1995-03-16|COLLECT COD|AIR|y even pinto beans; qui|
-450|153|1|6|33|34753.95|0.08|0.05|R|F|1995-05-18|1995-05-22|1995-05-23|TAKE BACK RETURN|REG AIR|ily carefully final depo|
-451|130|9|1|36|37084.68|0.02|0.06|N|O|1998-06-18|1998-08-14|1998-06-20|TAKE BACK RETURN|AIR|rges can haggle carefully ironic, dogged |
-451|33|4|2|42|39187.26|0.05|0.01|N|O|1998-08-01|1998-08-05|1998-08-30|DELIVER IN PERSON|TRUCK|express excuses. blithely ironic pin|
-451|87|8|3|1|987.08|0.07|0.05|N|O|1998-07-13|1998-07-03|1998-08-04|DELIVER IN PERSON|AIR| carefully ironic packages solve furiously |
-451|77|5|4|28|27357.96|0.04|0.05|N|O|1998-06-16|1998-07-09|1998-06-17|DELIVER IN PERSON|SHIP| theodolites. even cou|
-452|115|6|1|2|2030.22|0.04|0.03|N|O|1997-12-26|1998-01-03|1998-01-12|COLLECT COD|FOB|y express instru|
-453|198|1|1|45|49418.55|0.01|0.00|N|O|1997-06-30|1997-08-20|1997-07-19|COLLECT COD|REG AIR|ifts wake carefully.|
-453|176|4|2|38|40894.46|0.08|0.04|N|O|1997-06-30|1997-07-08|1997-07-16|DELIVER IN PERSON|REG AIR| furiously f|
-453|14|1|3|38|34732.38|0.10|0.01|N|O|1997-08-10|1997-07-24|1997-09-07|NONE|SHIP|sts cajole. furiously un|
-453|96|7|4|45|44824.05|0.10|0.01|N|O|1997-09-18|1997-06-29|1997-10-14|TAKE BACK RETURN|AIR|ironic foxes. slyly pending depos|
-453|26|1|5|32|29632.64|0.04|0.01|N|O|1997-07-15|1997-06-27|1997-07-18|NONE|REG AIR|s. fluffily bold packages cajole. unu|
-453|95|7|6|28|27862.52|0.07|0.07|N|O|1997-08-16|1997-08-12|1997-08-27|NONE|MAIL|final dependencies. slyly special pl|
-454|118|8|1|24|24434.64|0.06|0.01|N|O|1996-04-26|1996-03-23|1996-05-20|NONE|TRUCK|le. deposits after the ideas nag unusual pa|
-455|157|9|1|42|44400.30|0.10|0.02|N|O|1997-01-26|1997-01-10|1997-02-22|DELIVER IN PERSON|REG AIR|around the quickly blit|
-455|28|9|2|44|40832.88|0.05|0.08|N|O|1997-01-17|1997-02-22|1997-02-12|TAKE BACK RETURN|TRUCK| accounts sleep slyly ironic asymptote|
-455|49|2|3|45|42706.80|0.04|0.06|N|O|1996-12-20|1997-01-31|1997-01-07|TAKE BACK RETURN|SHIP|thrash ironically regular packages. qui|
-455|171|9|4|11|11782.87|0.01|0.02|N|O|1997-03-15|1997-02-14|1997-03-26|DELIVER IN PERSON|MAIL|g deposits against the slyly idle foxes u|
-480|53|4|1|22|20967.10|0.04|0.02|A|F|1993-06-16|1993-07-28|1993-07-09|NONE|MAIL|into beans cajole furiously. accounts s|
-481|19|9|1|17|15623.17|0.07|0.05|A|F|1992-10-21|1992-12-09|1992-11-19|DELIVER IN PERSON|MAIL|. quickly final accounts among the |
-481|21|2|2|19|17499.38|0.08|0.01|R|F|1993-01-09|1992-11-27|1993-01-14|TAKE BACK RETURN|AIR|p blithely after t|
-481|186|7|3|42|45619.56|0.08|0.08|A|F|1992-11-27|1992-11-11|1992-12-08|COLLECT COD|RAIL|mptotes are furiously among the iron|
-481|82|3|4|11|10802.88|0.05|0.06|A|F|1993-01-12|1992-11-17|1993-02-05|NONE|FOB|eful attai|
-481|112|9|5|31|31375.41|0.05|0.01|A|F|1993-01-15|1992-12-31|1993-01-21|DELIVER IN PERSON|AIR|usly final packages believe. quick|
-482|138|9|1|32|33220.16|0.00|0.02|N|O|1996-05-22|1996-05-14|1996-05-29|NONE|SHIP|usual deposits affix against |
-482|122|5|2|1|1022.12|0.05|0.08|N|O|1996-05-29|1996-05-20|1996-05-31|COLLECT COD|AIR|es. quickly ironic escapades sleep furious|
-482|62|9|3|31|29823.86|0.04|0.03|N|O|1996-06-01|1996-05-06|1996-06-17|NONE|MAIL| blithe pin|
-482|196|7|4|8|8769.52|0.02|0.05|N|O|1996-04-19|1996-05-05|1996-04-21|NONE|TRUCK|tructions near the final, regular ideas de|
-482|39|10|5|46|43195.38|0.01|0.06|N|O|1996-07-19|1996-06-05|1996-08-10|NONE|MAIL|furiously thin realms. final, fina|
-482|79|10|6|19|18602.33|0.04|0.00|N|O|1996-03-27|1996-04-25|1996-04-15|NONE|FOB|ts hinder carefully silent requests|
-483|33|9|1|8|7464.24|0.00|0.08|N|O|1995-08-22|1995-08-23|1995-09-18|COLLECT COD|RAIL|osits. carefully fin|
-483|80|1|2|23|22541.84|0.04|0.06|N|O|1995-07-20|1995-08-11|1995-08-04|DELIVER IN PERSON|MAIL|requests was quickly against th|
-483|88|9|3|9|8892.72|0.04|0.03|N|O|1995-09-10|1995-09-02|1995-09-13|NONE|AIR| carefully express ins|
-484|31|2|1|49|45620.47|0.10|0.02|N|O|1997-03-06|1997-02-28|1997-03-23|COLLECT COD|TRUCK|ven accounts|
-484|32|8|2|45|41941.35|0.06|0.07|N|O|1997-04-09|1997-03-20|1997-04-19|DELIVER IN PERSON|TRUCK|usly final excuses boost slyly blithe|
-484|184|5|3|50|54209.00|0.06|0.05|N|O|1997-01-24|1997-03-27|1997-02-22|DELIVER IN PERSON|MAIL|uctions wake. final, silent requests haggle|
-484|165|6|4|22|23433.52|0.07|0.03|N|O|1997-04-29|1997-03-26|1997-05-17|TAKE BACK RETURN|SHIP|es are pending instructions. furiously unu|
-484|77|6|5|48|46899.36|0.00|0.05|N|O|1997-03-05|1997-02-08|1997-03-22|TAKE BACK RETURN|MAIL|l, bold packages? even mult|
-484|97|9|6|10|9970.90|0.01|0.08|N|O|1997-04-06|1997-02-14|1997-04-16|COLLECT COD|FOB|x fluffily carefully regular|
-485|150|1|1|50|52507.50|0.01|0.00|N|O|1997-03-28|1997-05-26|1997-04-18|TAKE BACK RETURN|MAIL|iously quick excuses. carefully final f|
-485|28|7|2|40|37120.80|0.08|0.01|N|O|1997-04-29|1997-05-08|1997-04-30|TAKE BACK RETURN|TRUCK|al escapades|
-485|137|3|3|22|22816.86|0.00|0.05|N|O|1997-04-06|1997-04-27|1997-05-01|DELIVER IN PERSON|TRUCK|refully final notornis haggle according |
-486|76|7|1|36|35138.52|0.00|0.01|N|O|1996-06-25|1996-05-06|1996-07-07|COLLECT COD|AIR|deposits around the quickly regular packa|
-486|68|9|2|40|38722.40|0.03|0.08|N|O|1996-05-21|1996-06-06|1996-06-07|COLLECT COD|SHIP|ts nag quickly among the slyl|
-486|136|2|3|26|26939.38|0.04|0.03|N|O|1996-03-16|1996-05-25|1996-03-31|NONE|RAIL|forges along the |
-486|72|1|4|38|36938.66|0.08|0.05|N|O|1996-05-07|1996-04-26|1996-05-26|TAKE BACK RETURN|TRUCK| blithely final pinto |
-486|29|2|5|3|2787.06|0.07|0.05|N|O|1996-07-07|1996-04-20|1996-07-23|DELIVER IN PERSON|RAIL|ccounts ha|
-486|47|4|6|46|43563.84|0.00|0.03|N|O|1996-04-18|1996-05-02|1996-04-20|COLLECT COD|AIR|theodolites eat carefully furious|
-487|92|3|1|47|46628.23|0.06|0.06|R|F|1992-09-30|1992-10-08|1992-10-24|NONE|TRUCK|tions. blithely reg|
-487|83|4|2|2|1966.16|0.02|0.06|R|F|1992-10-19|1992-11-04|1992-11-11|COLLECT COD|TRUCK|oss the unusual pinto beans. reg|
-512|189|10|1|19|20694.42|0.08|0.05|N|O|1995-07-12|1995-07-11|1995-08-04|COLLECT COD|MAIL| sleep. requests alongside of the fluff|
-512|23|2|2|37|34151.74|0.01|0.04|N|O|1995-06-20|1995-07-05|1995-07-16|NONE|RAIL|nic depths cajole? blithely b|
-512|180|1|3|40|43207.20|0.05|0.02|N|O|1995-07-06|1995-07-08|1995-07-08|COLLECT COD|TRUCK|quests are da|
-512|83|4|4|10|9830.80|0.09|0.02|N|O|1995-09-16|1995-07-29|1995-10-07|NONE|AIR|xes. pinto beans cajole carefully; |
-512|65|6|5|6|5790.36|0.03|0.05|R|F|1995-06-10|1995-06-21|1995-06-16|DELIVER IN PERSON|FOB|en ideas haggle |
-512|33|9|6|12|11196.36|0.04|0.00|R|F|1995-05-21|1995-08-03|1995-06-09|COLLECT COD|FOB|old furiously express deposits. specia|
-512|51|9|7|2|1902.10|0.09|0.08|N|O|1995-06-19|1995-08-13|1995-06-24|NONE|TRUCK|e slyly silent accounts serve with|
-513|62|7|1|20|19241.20|0.09|0.07|N|O|1995-07-12|1995-05-31|1995-07-31|NONE|AIR|efully ironic ideas doze slyl|
-513|122|5|2|44|44973.28|0.01|0.01|N|O|1995-07-14|1995-07-14|1995-08-12|NONE|MAIL|kages sleep boldly ironic theodolites. acco|
-514|79|9|1|21|20560.47|0.06|0.02|N|O|1996-06-09|1996-05-15|1996-07-07|DELIVER IN PERSON|RAIL|s sleep quickly blithely|
-514|118|2|2|34|34615.74|0.08|0.02|N|O|1996-04-14|1996-06-03|1996-04-23|COLLECT COD|REG AIR|ily even patterns. bold, silent instruc|
-514|13|7|3|6|5478.06|0.06|0.01|N|O|1996-05-30|1996-06-04|1996-06-28|COLLECT COD|SHIP|as haggle blithely; quickly s|
-514|116|7|4|43|43692.73|0.00|0.08|N|O|1996-06-07|1996-05-14|1996-07-01|TAKE BACK RETURN|FOB|thely regular |
-515|105|8|1|10|10051.00|0.03|0.02|A|F|1993-10-04|1993-11-03|1993-10-08|NONE|FOB|ar deposits th|
-515|148|1|2|38|39829.32|0.10|0.07|A|F|1993-09-19|1993-11-12|1993-10-03|DELIVER IN PERSON|SHIP|ays. furiously express requests haggle furi|
-515|183|4|3|11|11914.98|0.00|0.02|R|F|1993-09-04|1993-10-02|1993-09-05|DELIVER IN PERSON|FOB|ly pending accounts haggle blithel|
-515|109|10|4|34|34309.40|0.09|0.03|R|F|1993-10-03|1993-10-26|1993-10-15|DELIVER IN PERSON|REG AIR|ic dependencie|
-515|131|7|5|32|32996.16|0.01|0.07|R|F|1993-10-10|1993-10-08|1993-11-02|TAKE BACK RETURN|FOB|r sauternes boost. final theodolites wake a|
-515|109|4|6|25|25227.50|0.04|0.08|R|F|1993-11-14|1993-11-07|1993-12-03|DELIVER IN PERSON|MAIL|e packages engag|
-516|25|4|1|11|10175.22|0.01|0.06|N|O|1998-05-02|1998-05-23|1998-05-12|DELIVER IN PERSON|FOB|ongside of the blithely final reque|
-517|45|6|1|28|26461.12|0.03|0.02|N|O|1997-04-30|1997-05-18|1997-05-17|COLLECT COD|MAIL| requests. special, fi|
-517|156|4|2|15|15842.25|0.02|0.00|N|O|1997-04-09|1997-06-26|1997-05-01|NONE|TRUCK| slyly. express requests ar|
-517|41|8|3|9|8469.36|0.04|0.00|N|O|1997-05-03|1997-06-16|1997-05-24|COLLECT COD|SHIP| slyly stealthily express instructions. |
-517|133|4|4|11|11364.43|0.06|0.02|N|O|1997-06-20|1997-06-01|1997-06-27|NONE|REG AIR|ly throughout the fu|
-517|24|3|5|23|21252.46|0.00|0.01|N|O|1997-04-19|1997-05-07|1997-05-12|COLLECT COD|RAIL| kindle. furiously bold requests mus|
-518|165|6|1|30|31954.80|0.07|0.05|N|O|1998-02-18|1998-03-27|1998-03-16|COLLECT COD|TRUCK|slyly by the packages. carefull|
-518|84|5|2|23|22633.84|0.05|0.07|N|O|1998-02-20|1998-05-05|1998-03-11|COLLECT COD|TRUCK| special requests. fluffily ironic re|
-518|134|5|3|12|12409.56|0.01|0.06|N|O|1998-03-08|1998-03-31|1998-04-06|NONE|AIR| packages thrash slyly|
-518|122|3|4|46|47017.52|0.07|0.02|N|O|1998-04-07|1998-04-17|1998-04-29|NONE|MAIL|. blithely even ideas cajole furiously. b|
-518|71|2|5|16|15537.12|0.01|0.01|N|O|1998-03-15|1998-03-24|1998-04-08|NONE|MAIL|use quickly expre|
-518|197|10|6|39|42790.41|0.09|0.08|N|O|1998-02-26|1998-03-17|1998-03-21|DELIVER IN PERSON|FOB| the bold, special deposits are carefully |
-518|186|7|7|48|52136.64|0.03|0.07|N|O|1998-03-06|1998-04-22|1998-03-14|NONE|FOB| slyly final platelets; quickly even deposi|
-519|159|4|1|1|1059.15|0.07|0.07|N|O|1997-12-01|1998-01-26|1997-12-23|COLLECT COD|REG AIR|bold requests believe furiou|
-519|3|4|2|38|34314.00|0.05|0.08|N|O|1998-02-19|1997-12-15|1998-03-19|DELIVER IN PERSON|FOB|gular excuses detect quickly furiously |
-519|106|1|3|19|19115.90|0.00|0.02|N|O|1998-01-09|1998-01-03|1998-02-06|COLLECT COD|AIR|asymptotes. p|
-519|47|6|4|27|25570.08|0.08|0.06|N|O|1997-11-20|1997-12-06|1997-12-16|DELIVER IN PERSON|REG AIR|le. even, final dependencies|
-519|10|5|5|13|11830.13|0.06|0.08|N|O|1998-02-06|1997-12-02|1998-03-03|TAKE BACK RETURN|TRUCK|c accounts wake along the ironic so|
-519|151|6|6|3|3153.45|0.04|0.00|N|O|1998-02-01|1998-01-25|1998-02-27|TAKE BACK RETURN|FOB|erve blithely blithely ironic asymp|
-544|139|10|1|47|48839.11|0.08|0.06|R|F|1993-03-14|1993-03-27|1993-03-27|COLLECT COD|SHIP|ecial pains. deposits grow foxes. |
-545|170|1|1|4|4280.68|0.02|0.00|N|O|1996-02-23|1995-12-16|1996-03-21|DELIVER IN PERSON|FOB|, ironic grouches cajole over|
-545|171|10|2|18|19281.06|0.00|0.00|N|O|1996-02-21|1996-01-17|1996-02-26|NONE|RAIL|al, final packages affix. even a|
-546|85|6|1|16|15761.28|0.08|0.02|N|O|1997-02-04|1996-12-30|1997-02-25|DELIVER IN PERSON|TRUCK|de of the orbits. sometimes regula|
-547|71|10|1|44|42727.08|0.08|0.08|N|O|1996-10-18|1996-08-17|1996-10-27|TAKE BACK RETURN|FOB|thely express dependencies. qu|
-547|137|8|2|48|49782.24|0.01|0.04|N|O|1996-10-21|1996-08-04|1996-11-20|COLLECT COD|SHIP|thely specia|
-547|182|3|3|3|3246.54|0.05|0.02|N|O|1996-09-04|1996-08-01|1996-09-21|COLLECT COD|SHIP|pinto beans. ironi|
-548|197|8|1|2|2194.38|0.06|0.05|A|F|1994-11-26|1994-11-06|1994-12-06|COLLECT COD|MAIL|ests haggle quickly eve|
-548|5|6|2|6|5430.00|0.00|0.08|A|F|1995-01-18|1994-12-08|1995-02-10|NONE|TRUCK|sits wake furiously regular|
-548|1|8|3|21|18921.00|0.03|0.08|A|F|1995-01-13|1994-12-18|1995-01-25|NONE|AIR|ideas. special accounts above the furiou|
-548|57|9|4|21|20098.05|0.08|0.03|A|F|1994-10-27|1994-12-04|1994-11-21|DELIVER IN PERSON|AIR| engage quickly. regular theo|
-548|93|7|5|19|18868.71|0.00|0.02|A|F|1994-09-24|1994-11-24|1994-10-01|DELIVER IN PERSON|MAIL|courts boost care|
-548|153|8|6|32|33700.80|0.06|0.04|A|F|1994-12-16|1994-11-20|1994-12-29|NONE|REG AIR|c instruction|
-549|196|9|1|18|19731.42|0.07|0.04|R|F|1992-10-19|1992-08-12|1992-11-13|COLLECT COD|REG AIR|furiously according to the ironic, regular |
-549|189|10|2|38|41388.84|0.07|0.05|A|F|1992-08-17|1992-08-28|1992-09-05|COLLECT COD|RAIL|the regular, furious excuses. carefu|
-549|66|7|3|36|34778.16|0.08|0.04|R|F|1992-09-11|1992-10-11|1992-09-12|DELIVER IN PERSON|AIR|ts against the ironic, even theodolites eng|
-549|21|4|4|18|16578.36|0.09|0.01|A|F|1992-07-31|1992-09-11|1992-08-08|NONE|RAIL|ely regular accounts above the |
-549|24|7|5|38|35112.76|0.06|0.02|R|F|1992-08-23|1992-08-12|1992-08-25|COLLECT COD|REG AIR|eposits. carefully regular depos|
-550|191|3|1|31|33826.89|0.04|0.02|N|O|1995-10-24|1995-09-27|1995-11-04|COLLECT COD|AIR|thely silent packages. unusual|
-551|24|9|1|8|7392.16|0.08|0.02|N|O|1995-07-29|1995-07-18|1995-08-02|NONE|REG AIR| wake quickly slyly pending platel|
-551|159|4|2|20|21183.00|0.00|0.07|N|O|1995-09-18|1995-08-25|1995-10-11|COLLECT COD|TRUCK|r ideas. final, even ideas hinder alongside|
-551|162|9|3|16|16994.56|0.07|0.06|N|O|1995-07-29|1995-08-19|1995-08-10|COLLECT COD|MAIL|y along the carefully ex|
-576|87|8|1|2|1974.16|0.07|0.01|N|O|1997-05-15|1997-06-30|1997-05-28|NONE|RAIL|ccounts along the ac|
-576|34|5|2|6|5604.18|0.06|0.05|N|O|1997-05-15|1997-07-26|1997-06-03|DELIVER IN PERSON|TRUCK|al deposits. slyly even sauternes a|
-576|37|3|3|6|5622.18|0.08|0.07|N|O|1997-08-28|1997-06-16|1997-09-25|DELIVER IN PERSON|FOB|ts. ironic multipliers |
-576|138|9|4|5|5190.65|0.03|0.07|N|O|1997-06-11|1997-06-17|1997-07-05|NONE|REG AIR|l foxes boost slyly. accounts af|
-577|26|5|1|25|23150.50|0.06|0.01|A|F|1995-04-09|1995-02-20|1995-05-09|TAKE BACK RETURN|AIR|ve slyly of the frets. careful|
-577|64|1|2|14|13496.84|0.08|0.03|R|F|1995-03-19|1995-02-25|1995-04-09|DELIVER IN PERSON|RAIL|l accounts wake deposits. ironic packa|
-578|156|7|1|40|42246.00|0.02|0.08|N|O|1997-02-10|1997-03-18|1997-02-11|NONE|SHIP|usly even platel|
-578|188|9|2|23|25028.14|0.05|0.08|N|O|1997-03-06|1997-03-03|1997-03-20|TAKE BACK RETURN|FOB|nstructions. ironic deposits|
-579|151|6|1|9|9460.35|0.00|0.05|N|O|1998-06-20|1998-04-28|1998-07-19|DELIVER IN PERSON|RAIL|e ironic, express deposits are furiously|
-579|33|4|2|39|36388.17|0.02|0.01|N|O|1998-06-21|1998-06-03|1998-06-26|COLLECT COD|REG AIR|ncies. furiously final r|
-579|60|5|3|6|5760.36|0.03|0.00|N|O|1998-04-24|1998-05-03|1998-05-08|TAKE BACK RETURN|TRUCK|ickly final requests-- bold accou|
-579|7|10|4|41|37187.00|0.04|0.05|N|O|1998-05-28|1998-05-01|1998-06-04|COLLECT COD|REG AIR|bold, express requests sublate slyly. blith|
-579|13|7|5|28|25564.28|0.00|0.03|N|O|1998-07-10|1998-05-24|1998-07-19|NONE|RAIL|ic ideas until th|
-579|167|6|6|5|5335.80|0.05|0.08|N|O|1998-05-02|1998-04-25|1998-05-05|COLLECT COD|REG AIR|refully silent ideas cajole furious|
-580|85|6|1|33|32507.64|0.03|0.05|N|O|1997-10-11|1997-09-19|1997-10-16|TAKE BACK RETURN|FOB|y express theodolites cajole carefully |
-580|174|5|2|31|33299.27|0.04|0.08|N|O|1997-10-04|1997-09-08|1997-10-15|COLLECT COD|FOB|ose alongside of the sl|
-580|185|6|3|19|20618.42|0.04|0.04|N|O|1997-07-23|1997-09-21|1997-08-15|NONE|FOB|mong the special packag|
-581|64|1|1|41|39526.46|0.09|0.07|N|O|1997-05-26|1997-04-06|1997-06-10|TAKE BACK RETURN|MAIL|nts. quickly|
-581|93|5|2|14|13903.26|0.06|0.08|N|O|1997-05-17|1997-04-14|1997-06-08|NONE|MAIL|. deposits s|
-581|101|6|3|49|49053.90|0.10|0.02|N|O|1997-02-27|1997-04-24|1997-03-10|TAKE BACK RETURN|MAIL|. slyly regular pinto beans acr|
-581|75|4|4|30|29252.10|0.10|0.08|N|O|1997-06-19|1997-05-21|1997-06-22|TAKE BACK RETURN|TRUCK| regular ideas grow furio|
-582|57|9|1|7|6699.35|0.07|0.00|N|O|1997-11-16|1997-11-29|1997-12-10|TAKE BACK RETURN|FOB|ithely unusual t|
-582|51|2|2|49|46601.45|0.05|0.03|N|O|1997-12-17|1998-01-12|1997-12-31|COLLECT COD|REG AIR|nts according to the furiously regular pin|
-582|141|4|3|42|43727.88|0.07|0.00|N|O|1997-11-15|1997-12-21|1997-12-03|COLLECT COD|SHIP|iously beside the silent de|
-582|168|9|4|36|38453.76|0.06|0.01|N|O|1997-12-09|1997-11-27|1997-12-26|TAKE BACK RETURN|SHIP|lar requests. quickly |
-583|145|6|1|1|1045.14|0.07|0.07|N|O|1997-06-17|1997-04-29|1997-06-28|NONE|TRUCK| regular, regular ideas. even, bra|
-583|120|4|2|47|47945.64|0.10|0.06|N|O|1997-07-14|1997-05-12|1997-08-11|DELIVER IN PERSON|AIR|nts are fluffily. furiously even re|
-583|130|5|3|34|35024.42|0.01|0.02|N|O|1997-05-11|1997-04-24|1997-06-03|DELIVER IN PERSON|MAIL|express req|
-583|142|1|4|33|34390.62|0.10|0.01|N|O|1997-05-28|1997-04-25|1997-06-24|NONE|AIR|kages cajole slyly across the|
-583|189|10|5|13|14159.34|0.04|0.06|N|O|1997-06-23|1997-05-29|1997-07-08|COLLECT COD|TRUCK|y sly theodolites. ironi|
-608|154|6|1|19|20028.85|0.08|0.06|N|O|1996-04-19|1996-05-02|1996-05-03|DELIVER IN PERSON|RAIL|ideas. the|
-608|198|1|2|40|43927.60|0.03|0.01|N|O|1996-05-21|1996-04-11|1996-06-02|NONE|AIR| alongside of the regular tithes. sly|
-609|66|5|1|21|20287.26|0.01|0.05|R|F|1994-08-24|1994-08-23|1994-08-27|DELIVER IN PERSON|FOB|de of the special warthogs. excu|
-610|111|8|1|49|49544.39|0.10|0.07|N|O|1995-08-29|1995-10-26|1995-09-12|TAKE BACK RETURN|SHIP|ular instruc|
-610|68|3|2|11|10648.66|0.07|0.08|N|O|1995-10-31|1995-10-25|1995-11-18|NONE|MAIL|blithely final |
-610|118|9|3|26|26470.86|0.09|0.04|N|O|1995-11-22|1995-09-09|1995-12-04|TAKE BACK RETURN|AIR|cross the furiously even theodolites sl|
-610|186|7|4|17|18465.06|0.03|0.03|N|O|1995-11-01|1995-10-30|1995-11-04|COLLECT COD|FOB|p quickly instead of the slyly pending foxe|
-610|146|7|5|39|40799.46|0.08|0.05|N|O|1995-10-30|1995-10-21|1995-11-11|TAKE BACK RETURN|REG AIR|counts. ironic warhorses are |
-610|95|7|6|5|4975.45|0.00|0.07|N|O|1995-08-11|1995-10-22|1995-08-26|TAKE BACK RETURN|FOB|n pinto beans. iro|
-610|190|1|7|27|29435.13|0.06|0.03|N|O|1995-09-02|1995-09-19|1995-09-15|NONE|REG AIR| ironic pinto beans haggle. blithe|
-611|17|7|1|39|35763.39|0.05|0.06|R|F|1993-05-06|1993-04-09|1993-05-22|TAKE BACK RETURN|SHIP|nto beans |
-611|81|2|2|1|981.08|0.08|0.07|R|F|1993-05-17|1993-02-26|1993-06-15|DELIVER IN PERSON|MAIL|ts. pending platelets aff|
-611|120|4|3|39|39784.68|0.09|0.02|A|F|1993-03-10|1993-03-10|1993-03-17|TAKE BACK RETURN|TRUCK|the evenly bold requests. furious|
-612|185|6|1|5|5425.90|0.07|0.00|R|F|1992-11-08|1992-11-20|1992-12-03|TAKE BACK RETURN|RAIL|structions. q|
-612|195|7|2|28|30665.32|0.07|0.06|R|F|1993-01-02|1992-12-11|1993-01-30|DELIVER IN PERSON|TRUCK|regular instructions affix bl|
-612|67|4|3|49|47385.94|0.00|0.08|A|F|1993-01-08|1992-11-25|1993-01-17|TAKE BACK RETURN|REG AIR|theodolite|
-612|39|5|4|28|26292.84|0.05|0.00|A|F|1992-11-12|1992-12-05|1992-12-02|TAKE BACK RETURN|REG AIR|lyly regular asym|
-612|88|9|5|1|988.08|0.08|0.04|R|F|1992-12-18|1992-12-13|1992-12-20|TAKE BACK RETURN|FOB| requests.|
-612|189|10|6|33|35942.94|0.10|0.03|R|F|1992-11-30|1992-12-01|1992-12-12|COLLECT COD|MAIL|bove the blithely even ideas. careful|
-613|91|5|1|17|16848.53|0.06|0.06|N|O|1995-09-23|1995-08-04|1995-10-15|NONE|SHIP|ar dependencie|
-613|79|7|2|6|5874.42|0.05|0.05|N|O|1995-08-05|1995-08-09|1995-08-08|TAKE BACK RETURN|MAIL|y ironic deposits eat |
-613|186|7|3|3|3258.54|0.03|0.01|N|O|1995-09-27|1995-09-11|1995-10-05|NONE|TRUCK|ccounts cajole. |
-613|159|10|4|7|7414.05|0.02|0.04|N|O|1995-09-07|1995-08-02|1995-09-16|DELIVER IN PERSON|MAIL|ously blithely final pinto beans. regula|
-614|195|8|1|21|22998.99|0.00|0.03|R|F|1993-03-29|1993-01-06|1993-04-16|TAKE BACK RETURN|TRUCK|arefully. slyly express packag|
-614|187|8|2|48|52184.64|0.07|0.07|A|F|1993-03-09|1993-01-19|1993-03-19|DELIVER IN PERSON|SHIP|riously special excuses haggle along the|
-614|167|2|3|43|45887.88|0.05|0.00|A|F|1993-03-07|1993-02-22|1993-03-18|DELIVER IN PERSON|SHIP| express accounts wake. slyly ironic ins|
-614|147|6|4|14|14659.96|0.04|0.06|A|F|1992-12-03|1993-02-14|1992-12-27|DELIVER IN PERSON|SHIP|ular packages haggle about the pack|
-614|196|8|5|30|32885.70|0.08|0.07|R|F|1993-01-16|1993-02-08|1993-02-12|TAKE BACK RETURN|FOB|tructions are f|
-614|137|8|6|48|49782.24|0.04|0.08|A|F|1992-12-14|1993-01-22|1993-01-11|NONE|TRUCK| regular platelets cajole quickly eve|
-615|105|6|1|36|36183.60|0.10|0.01|A|F|1992-06-01|1992-07-14|1992-06-27|NONE|FOB| packages. carefully final pinto bea|
-640|93|7|1|49|48661.41|0.09|0.02|R|F|1993-03-27|1993-04-17|1993-04-15|NONE|RAIL|s haggle slyly|
-640|1|4|2|40|36040.00|0.09|0.05|A|F|1993-05-11|1993-04-11|1993-05-15|COLLECT COD|TRUCK|oach according to the bol|
-640|180|8|3|22|23763.96|0.05|0.07|A|F|1993-05-07|1993-04-14|1993-05-21|TAKE BACK RETURN|TRUCK|osits across the slyly regular theodo|
-640|32|3|4|45|41941.35|0.07|0.07|R|F|1993-04-15|1993-04-23|1993-04-21|DELIVER IN PERSON|REG AIR|ong the qui|
-641|126|9|1|18|18470.16|0.01|0.08|R|F|1993-10-17|1993-10-11|1993-10-29|DELIVER IN PERSON|AIR|p blithely bold packages. quick|
-641|100|2|2|1|1000.10|0.09|0.02|R|F|1993-12-03|1993-10-28|1993-12-26|TAKE BACK RETURN|RAIL| nag across the regular foxes.|
-641|95|7|3|40|39803.60|0.05|0.06|R|F|1993-11-22|1993-10-20|1993-12-11|DELIVER IN PERSON|REG AIR|lets. furiously regular requests cajo|
-641|71|10|4|25|24276.75|0.03|0.02|A|F|1993-12-04|1993-11-18|1993-12-18|TAKE BACK RETURN|FOB|d, regular d|
-641|4|9|5|41|37064.00|0.07|0.04|R|F|1993-11-29|1993-10-27|1993-12-04|TAKE BACK RETURN|FOB| asymptotes are quickly. bol|
-642|54|5|1|26|24805.30|0.10|0.03|A|F|1994-04-16|1994-02-01|1994-04-27|COLLECT COD|REG AIR|quests according to the unu|
-643|13|3|1|28|25564.28|0.00|0.08|A|F|1995-04-13|1995-05-12|1995-04-14|TAKE BACK RETURN|TRUCK|ly regular requests nag sly|
-643|51|2|2|48|45650.40|0.01|0.02|N|O|1995-07-10|1995-06-07|1995-08-01|NONE|FOB|ly ironic accounts|
-643|163|2|3|23|24452.68|0.05|0.03|N|O|1995-07-09|1995-05-18|1995-07-31|COLLECT COD|RAIL|sits are carefully according to the e|
-643|45|4|4|39|36856.56|0.08|0.04|A|F|1995-06-08|1995-06-16|1995-06-13|COLLECT COD|RAIL| the pains. carefully s|
-643|190|1|5|47|51238.93|0.10|0.03|R|F|1995-04-05|1995-06-14|1995-04-26|DELIVER IN PERSON|RAIL|y against |
-644|134|10|1|46|47569.98|0.02|0.01|A|F|1992-05-20|1992-06-14|1992-06-14|DELIVER IN PERSON|RAIL| special requests was sometimes expre|
-644|130|3|2|11|11331.43|0.05|0.02|A|F|1992-08-20|1992-07-21|1992-09-11|TAKE BACK RETURN|TRUCK|ealthy pinto beans use carefu|
-644|101|6|3|44|44048.40|0.04|0.04|R|F|1992-08-17|1992-07-26|1992-08-20|COLLECT COD|REG AIR|iously ironic pinto beans. bold packa|
-644|80|8|4|7|6860.56|0.01|0.02|A|F|1992-05-18|1992-07-01|1992-06-07|COLLECT COD|RAIL| regular requests are blithely. slyly|
-644|50|1|5|23|21851.15|0.02|0.04|R|F|1992-07-31|1992-07-28|1992-08-13|DELIVER IN PERSON|TRUCK|uctions nag quickly alongside of t|
-644|85|6|6|33|32507.64|0.00|0.07|R|F|1992-08-26|1992-07-27|1992-08-28|NONE|AIR|ages sleep. bold, bo|
-644|51|9|7|38|36139.90|0.08|0.06|R|F|1992-05-17|1992-07-10|1992-06-06|TAKE BACK RETURN|MAIL| packages. blithely slow accounts nag quic|
-645|160|8|1|33|34985.28|0.01|0.02|A|F|1994-12-09|1995-02-21|1995-01-03|NONE|TRUCK|heodolites b|
-645|170|1|2|47|50297.99|0.07|0.05|R|F|1995-02-16|1995-02-15|1995-02-25|COLLECT COD|TRUCK|hely regular instructions alon|
-645|70|7|3|46|44623.22|0.10|0.01|A|F|1995-01-04|1995-02-21|1995-01-21|COLLECT COD|REG AIR| regular dependencies across the speci|
-645|96|9|4|49|48808.41|0.05|0.03|R|F|1995-01-24|1995-01-06|1995-02-17|NONE|TRUCK|y. slyly iron|
-645|5|8|5|43|38915.00|0.06|0.02|A|F|1995-02-12|1995-02-27|1995-03-06|TAKE BACK RETURN|REG AIR| furiously accounts. slyly|
-645|34|5|6|18|16812.54|0.10|0.08|A|F|1995-03-02|1995-02-08|1995-03-03|COLLECT COD|RAIL|ep. slyly even |
-645|28|9|7|9|8352.18|0.03|0.03|A|F|1994-12-25|1995-01-04|1995-01-15|COLLECT COD|REG AIR|special deposits. regular, final th|
-646|109|6|1|31|31282.10|0.00|0.05|R|F|1994-12-17|1995-02-16|1995-01-04|COLLECT COD|MAIL|ag furiousl|
-646|127|8|2|1|1027.12|0.07|0.01|A|F|1994-12-05|1995-01-07|1994-12-31|TAKE BACK RETURN|MAIL|t blithely regular deposits. quic|
-646|30|9|3|24|22320.72|0.06|0.02|A|F|1995-02-20|1994-12-30|1995-03-16|TAKE BACK RETURN|TRUCK|regular accounts haggle dog|
-646|99|2|4|34|33969.06|0.01|0.00|R|F|1994-12-28|1994-12-27|1994-12-31|COLLECT COD|SHIP|slow accounts. fluffily idle instructions|
-646|90|1|5|17|16831.53|0.04|0.01|A|F|1994-12-31|1994-12-26|1995-01-01|DELIVER IN PERSON|REG AIR|inal packages haggle carefully |
-646|115|2|6|40|40604.40|0.10|0.01|R|F|1995-01-01|1995-01-13|1995-01-11|COLLECT COD|TRUCK|ronic packages sleep across th|
-647|17|1|1|41|37597.41|0.08|0.08|N|O|1997-11-19|1997-09-24|1997-12-15|COLLECT COD|REG AIR|r instructions. quickly unusu|
-647|113|10|2|5|5065.55|0.10|0.00|N|O|1997-09-25|1997-09-22|1997-10-25|TAKE BACK RETURN|AIR|ly express packages haggle caref|
-647|153|8|3|15|15797.25|0.08|0.00|N|O|1997-09-23|1997-10-09|1997-10-21|NONE|MAIL|ve the even, bold foxes sleep |
-672|173|4|1|41|43999.97|0.06|0.06|R|F|1994-06-20|1994-07-03|1994-06-22|COLLECT COD|REG AIR| dependencies in|
-672|190|1|2|9|9811.71|0.03|0.04|R|F|1994-06-25|1994-06-06|1994-07-19|TAKE BACK RETURN|TRUCK|haggle carefully carefully reg|
-672|143|2|3|35|36509.90|0.02|0.01|R|F|1994-07-13|1994-06-04|1994-07-14|COLLECT COD|RAIL| dependencies haggle quickly. theo|
-673|71|10|1|22|21363.54|0.03|0.02|R|F|1994-03-15|1994-04-27|1994-03-29|TAKE BACK RETURN|TRUCK| the regular, even requests. carefully fin|
-674|102|5|1|23|23048.30|0.06|0.07|A|F|1992-10-25|1992-10-15|1992-11-03|COLLECT COD|SHIP|ve the quickly even deposits. blithe|
-674|59|4|2|4|3836.20|0.02|0.07|R|F|1992-10-05|1992-11-22|1992-10-22|NONE|RAIL|ly express pinto beans sleep car|
-675|157|9|1|1|1057.15|0.04|0.08|N|O|1997-11-27|1997-09-30|1997-12-12|DELIVER IN PERSON|REG AIR|ide of the slyly regular packages. unus|
-675|137|3|2|35|36299.55|0.08|0.07|N|O|1997-08-19|1997-10-16|1997-09-17|DELIVER IN PERSON|REG AIR|s. furiously expre|
-675|176|6|3|34|36589.78|0.10|0.04|N|O|1997-11-17|1997-10-07|1997-11-27|NONE|FOB|y final accounts unwind around the |
-675|100|4|4|15|15001.50|0.09|0.05|N|O|1997-10-18|1997-09-28|1997-11-13|COLLECT COD|TRUCK|posits after the furio|
-675|5|8|5|46|41630.00|0.09|0.05|N|O|1997-09-18|1997-10-14|1997-10-01|DELIVER IN PERSON|AIR| deposits along the express foxes |
-676|51|3|1|9|8559.45|0.09|0.02|N|O|1997-04-03|1997-02-02|1997-04-08|COLLECT COD|REG AIR|aintain sl|
-676|78|6|2|20|19561.40|0.07|0.07|N|O|1997-02-02|1997-02-01|1997-02-11|NONE|REG AIR|riously around the blithely |
-676|163|4|3|35|37210.60|0.05|0.01|N|O|1996-12-30|1997-01-13|1997-01-19|DELIVER IN PERSON|RAIL|into beans. blithe|
-676|73|1|4|24|23353.68|0.01|0.06|N|O|1997-02-05|1997-01-16|1997-03-07|TAKE BACK RETURN|TRUCK|ress, regular dep|
-676|166|1|5|31|33050.96|0.01|0.06|N|O|1997-02-06|1997-02-28|1997-03-08|COLLECT COD|TRUCK|ial deposits cajo|
-676|76|7|6|33|32210.31|0.09|0.05|N|O|1997-03-02|1997-02-22|1997-03-19|TAKE BACK RETURN|TRUCK|as wake slyly furiously close pinto b|
-676|143|6|7|11|11474.54|0.07|0.02|N|O|1997-03-09|1997-03-06|1997-03-31|TAKE BACK RETURN|MAIL|he final acco|
-677|59|7|1|32|30689.60|0.04|0.08|R|F|1994-01-06|1994-01-31|1994-02-02|NONE|RAIL|slyly final|
-677|168|9|2|39|41658.24|0.00|0.07|R|F|1993-12-19|1994-02-11|1994-01-05|TAKE BACK RETURN|SHIP|ges. furiously regular packages use |
-677|24|5|3|46|42504.92|0.01|0.02|R|F|1993-12-02|1994-02-12|1993-12-06|COLLECT COD|RAIL|ng theodolites. furiously unusual theodo|
-677|148|7|4|1|1048.14|0.06|0.05|R|F|1993-12-01|1994-01-14|1993-12-26|DELIVER IN PERSON|MAIL|ly. regular |
-677|150|9|5|25|26253.75|0.00|0.05|A|F|1994-03-12|1994-02-02|1994-03-28|DELIVER IN PERSON|AIR| packages integrate blithely|
-678|146|7|1|20|20922.80|0.05|0.08|R|F|1993-06-21|1993-04-07|1993-07-10|TAKE BACK RETURN|MAIL|furiously express excuses. foxes eat fu|
-678|37|3|2|22|20614.66|0.01|0.02|A|F|1993-05-10|1993-04-29|1993-06-08|NONE|REG AIR|de of the carefully even requests. bl|
-678|143|10|3|16|16690.24|0.06|0.02|R|F|1993-03-20|1993-04-13|1993-04-16|DELIVER IN PERSON|REG AIR|equests cajole around the carefully regular|
-678|199|10|4|48|52761.12|0.08|0.08|R|F|1993-02-28|1993-04-04|1993-03-24|NONE|REG AIR|ithely. slyly express foxes|
-678|98|9|5|16|15969.44|0.06|0.04|R|F|1993-03-09|1993-04-18|1993-04-07|NONE|AIR| about the |
-678|43|4|6|11|10373.44|0.09|0.00|R|F|1993-04-28|1993-05-16|1993-05-11|COLLECT COD|TRUCK|ess deposits dazzle f|
-679|192|3|1|9|9829.71|0.09|0.00|N|O|1995-12-20|1996-01-27|1996-01-07|COLLECT COD|REG AIR|leep slyly. entici|
-704|190|1|1|40|43607.60|0.05|0.05|N|O|1997-01-30|1997-01-10|1997-02-20|COLLECT COD|AIR|ggle quickly. r|
-704|4|5|2|14|12656.00|0.07|0.08|N|O|1997-02-02|1996-12-26|1997-02-19|DELIVER IN PERSON|REG AIR|ve the quickly final forges. furiously p|
-705|189|10|1|46|50102.28|0.05|0.06|N|O|1997-04-18|1997-05-06|1997-05-05|DELIVER IN PERSON|SHIP|ss deposits. ironic packa|
-705|117|7|2|35|35598.85|0.10|0.04|N|O|1997-03-25|1997-03-20|1997-04-23|TAKE BACK RETURN|FOB|carefully ironic accounts|
-706|197|9|1|23|25235.37|0.05|0.00|N|O|1995-12-06|1995-12-02|1995-12-16|COLLECT COD|SHIP|ckey players. requests above the|
-707|155|6|1|34|35875.10|0.01|0.02|R|F|1994-12-08|1995-01-15|1995-01-02|NONE|RAIL| dependencies|
-707|43|10|2|22|20746.88|0.00|0.06|A|F|1995-01-12|1994-12-28|1995-01-16|DELIVER IN PERSON|REG AIR| kindle ironically|
-708|124|7|1|3|3072.36|0.05|0.02|N|O|1998-10-09|1998-09-22|1998-11-07|COLLECT COD|FOB|e slyly pending foxes. |
-708|180|1|2|19|20523.42|0.06|0.00|N|O|1998-10-28|1998-09-23|1998-11-25|COLLECT COD|SHIP| requests. even, thin ideas|
-708|122|5|3|33|33729.96|0.09|0.06|N|O|1998-09-10|1998-09-20|1998-09-22|COLLECT COD|RAIL|s boost carefully ruthless theodolites. f|
-708|56|7|4|5|4780.25|0.07|0.07|N|O|1998-07-22|1998-08-15|1998-07-28|TAKE BACK RETURN|REG AIR|c pinto beans nag after the account|
-708|143|2|5|36|37553.04|0.08|0.01|N|O|1998-07-16|1998-09-04|1998-08-11|NONE|SHIP|ests. even, regular hockey p|
-708|23|6|6|7|6461.14|0.10|0.03|N|O|1998-08-16|1998-08-15|1998-09-10|COLLECT COD|REG AIR|lly express ac|
-709|87|8|1|7|6909.56|0.00|0.00|N|O|1998-06-14|1998-06-08|1998-06-18|TAKE BACK RETURN|RAIL| special orbits cajole |
-709|198|10|2|15|16472.85|0.08|0.00|N|O|1998-07-10|1998-06-26|1998-08-09|NONE|RAIL|ily regular deposits. sauternes was accor|
-709|169|8|3|10|10691.60|0.01|0.02|N|O|1998-06-04|1998-06-30|1998-06-11|NONE|REG AIR|ts cajole boldly |
-709|108|9|4|40|40324.00|0.10|0.08|N|O|1998-08-12|1998-06-20|1998-08-20|DELIVER IN PERSON|RAIL|ggle fluffily carefully ironic|
-710|163|8|1|47|49968.52|0.06|0.08|A|F|1993-01-18|1993-03-24|1993-01-24|TAKE BACK RETURN|MAIL|usual ideas into th|
-710|193|4|2|38|41541.22|0.07|0.02|R|F|1993-04-18|1993-03-12|1993-05-15|COLLECT COD|FOB|sts boost fluffily aft|
-710|139|5|3|7|7273.91|0.04|0.06|R|F|1993-01-20|1993-03-28|1993-02-15|TAKE BACK RETURN|REG AIR|xpress, special ideas. bl|
-710|90|1|4|25|24752.25|0.00|0.05|R|F|1993-03-31|1993-02-05|1993-04-22|COLLECT COD|FOB|eas detect do|
-710|186|7|5|12|13034.16|0.01|0.02|A|F|1993-02-18|1993-02-27|1993-03-07|DELIVER IN PERSON|MAIL|ions. slyly express theodolites al|
-710|114|4|6|21|21296.31|0.04|0.06|R|F|1993-03-22|1993-03-05|1993-03-27|DELIVER IN PERSON|SHIP|es. furiously p|
-710|160|2|7|46|48767.36|0.03|0.07|R|F|1993-04-16|1993-03-27|1993-05-05|COLLECT COD|MAIL|ges use; blithely pending excuses inte|
-711|146|3|1|2|2092.28|0.10|0.04|R|F|1993-12-01|1993-12-09|1993-12-16|DELIVER IN PERSON|REG AIR|ely across t|
-711|103|8|2|27|27083.70|0.00|0.08|A|F|1993-10-02|1993-10-26|1993-10-08|DELIVER IN PERSON|MAIL|slyly. ironic asy|
-711|128|7|3|46|47293.52|0.10|0.00|R|F|1993-12-26|1993-11-19|1994-01-21|TAKE BACK RETURN|MAIL|deposits. permanen|
-711|128|9|4|20|20562.40|0.09|0.00|A|F|1994-01-17|1993-11-10|1994-01-31|DELIVER IN PERSON|TRUCK|kly regular acco|
-736|158|9|1|46|48674.90|0.05|0.01|N|O|1998-07-16|1998-09-01|1998-08-09|NONE|AIR|uctions cajole|
-736|80|1|2|23|22541.84|0.02|0.05|N|O|1998-10-08|1998-08-27|1998-10-19|TAKE BACK RETURN|AIR|k accounts are carefully|
-736|57|9|3|13|12441.65|0.00|0.03|N|O|1998-08-16|1998-07-26|1998-08-19|DELIVER IN PERSON|FOB|st furiously among the |
-736|98|2|4|14|13973.26|0.06|0.04|N|O|1998-10-04|1998-08-14|1998-10-16|COLLECT COD|REG AIR|nstructions.|
-736|169|6|5|32|34213.12|0.04|0.03|N|O|1998-07-30|1998-08-22|1998-08-12|DELIVER IN PERSON|RAIL|iously final accoun|
-737|182|3|1|12|12986.16|0.01|0.01|R|F|1992-04-28|1992-06-30|1992-05-08|COLLECT COD|RAIL|posits after the slyly bold du|
-738|198|1|1|34|37338.46|0.00|0.06|R|F|1993-06-09|1993-04-15|1993-07-09|TAKE BACK RETURN|TRUCK|s against the ironic exc|
-738|188|9|2|4|4352.72|0.00|0.03|A|F|1993-06-20|1993-04-08|1993-07-09|NONE|AIR|ar packages. fluffily bo|
-738|170|1|3|23|24613.91|0.04|0.08|A|F|1993-03-17|1993-04-02|1993-04-05|TAKE BACK RETURN|SHIP|nic, final excuses promise quickly regula|
-738|141|10|4|12|12493.68|0.04|0.08|A|F|1993-06-16|1993-05-05|1993-06-22|NONE|SHIP|ove the slyly regular p|
-738|175|4|5|30|32255.10|0.02|0.00|A|F|1993-06-12|1993-05-29|1993-06-25|NONE|AIR|ecial instructions haggle blithely regula|
-739|85|6|1|28|27582.24|0.00|0.03|N|O|1998-06-03|1998-08-04|1998-06-29|TAKE BACK RETURN|RAIL|elets about the pe|
-739|4|7|2|50|45200.00|0.07|0.06|N|O|1998-08-26|1998-07-16|1998-09-02|COLLECT COD|MAIL|ndencies. blith|
-739|49|2|3|12|11388.48|0.05|0.00|N|O|1998-08-20|1998-07-24|1998-08-22|NONE|MAIL|le slyly along the close i|
-739|44|3|4|47|44369.88|0.09|0.07|N|O|1998-08-12|1998-07-09|1998-08-28|NONE|REG AIR|deas according to the theodolites sn|
-739|188|9|5|30|32645.40|0.07|0.06|N|O|1998-06-19|1998-08-26|1998-07-02|DELIVER IN PERSON|REG AIR|above the even deposits. ironic requests|
-740|2|9|1|22|19844.00|0.10|0.02|N|O|1995-07-24|1995-09-11|1995-08-11|TAKE BACK RETURN|FOB|odolites cajole ironic, pending instruc|
-740|66|1|2|35|33812.10|0.00|0.00|N|O|1995-09-06|1995-08-22|1995-10-02|NONE|TRUCK|p quickly. fu|
-740|199|10|3|29|31876.51|0.06|0.05|N|O|1995-10-26|1995-09-17|1995-10-29|DELIVER IN PERSON|FOB|ntly bold pinto beans sleep quickl|
-741|187|8|1|25|27179.50|0.03|0.06|N|O|1998-07-15|1998-08-27|1998-08-12|DELIVER IN PERSON|MAIL|accounts. blithely bold pa|
-741|91|4|2|22|21803.98|0.09|0.01|N|O|1998-09-07|1998-09-28|1998-09-12|COLLECT COD|AIR|ven deposits about the regular, ironi|
-742|102|3|1|46|46096.60|0.04|0.08|A|F|1995-03-12|1995-03-20|1995-03-16|TAKE BACK RETURN|SHIP|e slyly bold deposits cajole according to|
-742|96|8|2|15|14941.35|0.08|0.05|A|F|1995-02-26|1995-03-20|1995-03-03|NONE|SHIP|blithely unusual pinto|
-742|102|5|3|24|24050.40|0.08|0.08|A|F|1995-02-12|1995-03-12|1995-02-14|DELIVER IN PERSON|SHIP|affix slyly. furiously i|
-742|192|4|4|16|17475.04|0.01|0.05|A|F|1995-01-15|1995-02-25|1995-01-24|COLLECT COD|AIR|eodolites haggle carefully regul|
-742|101|4|5|48|48052.80|0.09|0.08|R|F|1995-03-24|1995-01-23|1995-04-08|TAKE BACK RETURN|TRUCK| platelets |
-742|192|6|6|49|53517.31|0.02|0.07|A|F|1995-01-13|1995-02-13|1995-01-26|TAKE BACK RETURN|RAIL| carefully bold foxes sle|
-743|192|5|1|21|22935.99|0.01|0.04|N|O|1996-10-26|1996-11-05|1996-11-11|COLLECT COD|MAIL|d requests. packages afte|
-768|196|7|1|39|42751.41|0.06|0.08|N|O|1996-09-25|1996-10-27|1996-10-20|NONE|SHIP|out the ironic|
-768|18|9|2|2|1836.02|0.00|0.04|N|O|1996-11-13|1996-10-03|1996-11-25|DELIVER IN PERSON|SHIP|ular courts. slyly dogged accou|
-768|6|1|3|30|27180.00|0.06|0.05|N|O|1996-09-22|1996-11-03|1996-10-13|NONE|MAIL| furiously fluffy pinto beans haggle along|
-768|25|8|4|37|34225.74|0.10|0.00|N|O|1996-10-02|1996-09-23|1996-10-14|TAKE BACK RETURN|REG AIR|ending requests across the quickly|
-768|47|10|5|47|44510.88|0.06|0.05|N|O|1996-11-28|1996-10-30|1996-12-12|NONE|TRUCK|foxes. slyly ironic deposits a|
-768|112|9|6|43|43520.73|0.10|0.06|N|O|1996-09-22|1996-11-03|1996-10-22|TAKE BACK RETURN|AIR|sual ideas wake quickly|
-768|49|10|7|33|31318.32|0.01|0.04|N|O|1996-09-06|1996-09-29|1996-10-01|COLLECT COD|RAIL|sly ironic instructions. excuses can hagg|
-769|176|6|1|36|38742.12|0.02|0.02|A|F|1993-10-01|1993-08-07|1993-10-15|NONE|AIR|es. furiously iro|
-769|160|8|2|4|4240.64|0.01|0.04|R|F|1993-06-25|1993-08-12|1993-07-15|DELIVER IN PERSON|FOB| ideas. even|
-770|181|2|1|39|42166.02|0.09|0.06|N|O|1998-07-19|1998-08-09|1998-08-04|NONE|REG AIR|osits. foxes cajole |
-770|54|2|2|25|23851.25|0.03|0.02|N|O|1998-05-26|1998-07-23|1998-06-04|TAKE BACK RETURN|AIR| deposits dazzle fluffily alongside of |
-771|7|4|1|12|10884.00|0.10|0.08|N|O|1995-07-18|1995-08-02|1995-08-07|COLLECT COD|TRUCK|carefully. pending in|
-771|161|10|2|38|40324.08|0.03|0.08|N|O|1995-07-22|1995-09-10|1995-07-29|TAKE BACK RETURN|REG AIR| quickly final requests are final packages.|
-771|7|8|3|14|12698.00|0.02|0.05|N|O|1995-07-31|1995-08-13|1995-08-07|DELIVER IN PERSON|AIR|r, final packages are slyly iro|
-771|42|3|4|7|6594.28|0.06|0.02|N|O|1995-06-18|1995-08-31|1995-06-20|NONE|REG AIR|theodolites after the fluffily express |
-771|78|6|5|13|12714.91|0.09|0.01|N|O|1995-08-10|1995-08-21|1995-08-30|NONE|FOB|packages affix slyly about the quickly |
-771|82|3|6|23|22587.84|0.08|0.03|N|O|1995-06-19|1995-09-07|1995-07-09|COLLECT COD|FOB|cajole besides the quickly ironic pin|
-772|53|5|1|35|33356.75|0.10|0.06|R|F|1993-07-05|1993-06-05|1993-08-02|NONE|SHIP|kly thin packages wake slowly|
-772|84|5|2|10|9840.80|0.05|0.01|R|F|1993-05-20|1993-05-19|1993-06-15|DELIVER IN PERSON|MAIL| deposits cajole carefully instructions. t|
-772|86|7|3|35|34512.80|0.03|0.04|R|F|1993-04-18|1993-06-13|1993-05-01|COLLECT COD|MAIL|ng ideas. special packages haggle alon|
-772|180|8|4|10|10801.80|0.08|0.02|A|F|1993-05-17|1993-06-09|1993-05-29|COLLECT COD|AIR|o the furiously final deposits. furi|
-772|54|5|5|42|40070.10|0.02|0.07|A|F|1993-06-09|1993-07-16|1993-06-12|DELIVER IN PERSON|MAIL| express foxes abo|
-773|100|1|1|5|5000.50|0.06|0.04|A|F|1993-11-21|1993-12-19|1993-12-21|COLLECT COD|MAIL|ar requests. regular, thin packages u|
-773|11|5|2|31|28241.31|0.02|0.06|A|F|1993-12-30|1993-11-02|1994-01-01|TAKE BACK RETURN|MAIL|e slyly unusual deposit|
-773|151|3|3|39|40994.85|0.06|0.05|A|F|1994-01-04|1993-12-23|1994-01-26|DELIVER IN PERSON|FOB|quickly eve|
-773|29|8|4|28|26012.56|0.10|0.06|R|F|1994-01-19|1993-11-05|1994-01-23|NONE|TRUCK|he furiously slow deposits.|
-773|134|5|5|9|9307.17|0.09|0.02|R|F|1993-10-09|1993-12-25|1993-11-04|TAKE BACK RETURN|FOB|ent orbits haggle fluffily after the |
-773|40|1|6|43|40421.72|0.07|0.03|A|F|1993-11-06|1993-11-20|1993-11-08|TAKE BACK RETURN|SHIP|furiously bold dependencies. blithel|
-774|183|4|1|49|53075.82|0.08|0.03|N|O|1995-12-06|1996-01-07|1995-12-14|DELIVER IN PERSON|SHIP|ess accounts are carefully |
-774|17|4|2|3|2751.03|0.10|0.06|N|O|1996-02-13|1996-01-14|1996-03-04|COLLECT COD|FOB| slyly even courts nag blith|
-774|148|7|3|34|35636.76|0.02|0.07|N|O|1996-03-16|1996-01-03|1996-03-22|COLLECT COD|FOB|lar excuses are furiously final instr|
-774|15|6|4|8|7320.08|0.00|0.02|N|O|1996-01-24|1996-01-15|1996-02-13|COLLECT COD|RAIL|ully ironic requests c|
-774|177|5|5|44|47395.48|0.09|0.07|N|O|1996-02-29|1996-01-16|1996-03-06|NONE|REG AIR|s according to the deposits unwind ca|
-774|120|1|6|2|2040.24|0.07|0.03|N|O|1995-12-11|1996-02-10|1995-12-14|TAKE BACK RETURN|SHIP|accounts; slyly regular|
-775|32|3|1|16|14912.48|0.10|0.06|N|F|1995-05-23|1995-05-07|1995-06-19|NONE|TRUCK|un quickly slyly|
-775|174|2|2|21|22557.57|0.01|0.06|R|F|1995-05-01|1995-06-02|1995-05-13|DELIVER IN PERSON|FOB| quickly sile|
-775|108|5|3|20|20162.00|0.01|0.08|N|F|1995-06-17|1995-05-22|1995-07-13|COLLECT COD|AIR|en dependencies nag slowly |
-800|72|1|1|38|36938.66|0.00|0.05|N|O|1998-07-21|1998-09-25|1998-08-07|TAKE BACK RETURN|TRUCK|according to the bold, final dependencies |
-800|85|6|2|21|20686.68|0.04|0.05|N|O|1998-07-23|1998-10-01|1998-08-20|TAKE BACK RETURN|RAIL|ckly even requests after the carefully r|
-800|176|5|3|26|27980.42|0.01|0.02|N|O|1998-07-23|1998-10-08|1998-07-25|DELIVER IN PERSON|FOB|bove the pending requests.|
-801|6|3|1|13|11778.00|0.10|0.02|R|F|1992-04-25|1992-04-24|1992-05-16|COLLECT COD|RAIL|s are fluffily stealthily expres|
-801|95|8|2|21|20896.89|0.05|0.02|A|F|1992-03-14|1992-04-01|1992-04-05|COLLECT COD|AIR|wake silently furiously idle deposits. |
-801|3|4|3|21|18963.00|0.05|0.03|A|F|1992-04-25|1992-03-20|1992-05-04|COLLECT COD|REG AIR|cial, special packages.|
-801|164|9|4|12|12769.92|0.08|0.04|A|F|1992-06-06|1992-04-14|1992-06-12|TAKE BACK RETURN|RAIL|s. ironic pinto b|
-801|74|2|5|45|43833.15|0.01|0.06|R|F|1992-03-22|1992-03-22|1992-03-25|COLLECT COD|REG AIR| even asymptotes|
-801|122|7|6|10|10221.20|0.08|0.01|A|F|1992-06-05|1992-05-15|1992-06-21|DELIVER IN PERSON|MAIL|al accounts. carefully regular foxes wake|
-801|26|5|7|11|10186.22|0.01|0.03|A|F|1992-05-09|1992-04-19|1992-05-15|DELIVER IN PERSON|REG AIR|y special pinto beans cajole |
-802|143|6|1|40|41725.60|0.08|0.08|A|F|1995-01-07|1995-04-03|1995-01-23|DELIVER IN PERSON|RAIL|y bold accou|
-802|133|4|2|34|35126.42|0.08|0.06|A|F|1995-03-01|1995-03-15|1995-03-12|COLLECT COD|AIR|instructions cajole carefully. quietl|
-802|131|2|3|44|45369.72|0.07|0.04|R|F|1995-01-09|1995-02-04|1995-01-18|TAKE BACK RETURN|SHIP|rmanently idly special requ|
-802|157|2|4|18|19028.70|0.09|0.02|R|F|1995-03-06|1995-02-07|1995-03-19|TAKE BACK RETURN|RAIL|y regular requests engage furiously final d|
-802|132|3|5|19|19610.47|0.08|0.06|A|F|1995-04-01|1995-02-20|1995-04-23|DELIVER IN PERSON|REG AIR|old, furious|
-803|54|9|1|8|7632.40|0.07|0.01|N|O|1997-08-04|1997-06-19|1997-08-12|NONE|SHIP|ronic theodo|
-803|99|10|2|21|20980.89|0.08|0.06|N|O|1997-08-25|1997-06-30|1997-09-10|TAKE BACK RETURN|AIR|ironic packages cajole slyly. un|
-804|126|7|1|30|30783.60|0.08|0.04|A|F|1993-03-29|1993-05-07|1993-04-14|COLLECT COD|REG AIR|ehind the quietly regular pac|
-804|199|3|2|2|2198.38|0.02|0.00|A|F|1993-06-23|1993-04-30|1993-06-25|NONE|TRUCK|slyly silent |
-804|76|5|3|44|42947.08|0.04|0.05|R|F|1993-07-06|1993-04-13|1993-07-28|DELIVER IN PERSON|TRUCK|ly final deposits? special |
-804|38|9|4|21|19698.63|0.01|0.00|A|F|1993-04-12|1993-06-06|1993-04-20|DELIVER IN PERSON|RAIL|ular, ironic foxes. quickly even accounts|
-805|198|10|1|25|27454.75|0.07|0.06|N|O|1995-08-05|1995-09-30|1995-08-06|NONE|AIR|ide of the pending, sly requests. quickly f|
-805|57|5|2|29|27754.45|0.07|0.01|N|O|1995-08-24|1995-08-15|1995-09-16|TAKE BACK RETURN|AIR|dolites according to the slyly f|
-805|47|8|3|12|11364.48|0.01|0.06|N|O|1995-07-13|1995-09-27|1995-08-02|TAKE BACK RETURN|REG AIR| regular foxes. furio|
-805|76|6|4|26|25377.82|0.08|0.07|N|O|1995-08-28|1995-09-24|1995-09-11|TAKE BACK RETURN|RAIL|. ironic deposits sleep across |
-806|105|2|1|1|1005.10|0.04|0.07|N|O|1996-07-14|1996-09-12|1996-07-25|COLLECT COD|RAIL|ar accounts? pending, pending foxes a|
-806|160|5|2|22|23323.52|0.08|0.02|N|O|1996-10-03|1996-08-11|1996-10-20|DELIVER IN PERSON|REG AIR|fily pending |
-806|91|3|3|4|3964.36|0.04|0.03|N|O|1996-08-09|1996-09-18|1996-08-13|COLLECT COD|TRUCK|eans. quickly ironic ideas |
-807|117|7|1|49|49838.39|0.00|0.00|R|F|1993-12-05|1994-01-13|1993-12-25|COLLECT COD|REG AIR| furiously according to the un|
-807|155|10|2|49|51702.35|0.01|0.06|A|F|1994-01-17|1994-01-24|1994-01-22|COLLECT COD|TRUCK|y regular requests haggle.|
-807|181|2|3|48|51896.64|0.07|0.07|A|F|1994-01-08|1994-02-02|1994-01-15|DELIVER IN PERSON|SHIP|kly across the f|
-807|80|1|4|10|9800.80|0.09|0.00|R|F|1994-01-19|1994-02-12|1994-01-28|NONE|TRUCK|furiously final depths sleep a|
-807|143|6|5|30|31294.20|0.02|0.01|R|F|1994-01-19|1994-01-09|1994-01-27|NONE|RAIL|cial accoun|
-807|12|2|6|11|10032.11|0.02|0.04|R|F|1994-03-25|1994-01-26|1994-04-14|NONE|FOB|unts above the slyly final ex|
-807|1|6|7|19|17119.00|0.08|0.05|A|F|1994-02-10|1994-02-20|1994-03-06|NONE|SHIP|ns haggle quickly across the furi|
-832|103|6|1|45|45139.50|0.01|0.02|A|F|1992-05-08|1992-06-06|1992-06-04|COLLECT COD|MAIL|foxes engage slyly alon|
-832|48|1|2|24|22752.96|0.05|0.06|A|F|1992-06-15|1992-07-14|1992-06-17|NONE|TRUCK|ully. carefully speci|
-833|54|5|1|1|954.05|0.04|0.04|R|F|1994-04-26|1994-04-05|1994-04-29|COLLECT COD|MAIL|ffily ironic theodolites|
-833|112|6|2|38|38460.18|0.05|0.05|A|F|1994-04-05|1994-04-21|1994-05-01|COLLECT COD|TRUCK| platelets promise furiously. |
-833|162|7|3|9|9559.44|0.05|0.07|A|F|1994-02-28|1994-04-26|1994-03-20|TAKE BACK RETURN|FOB|ecial, even requests. even, bold instructi|
-834|145|2|1|36|37625.04|0.06|0.04|R|F|1994-06-28|1994-07-25|1994-07-07|TAKE BACK RETURN|SHIP|ccounts haggle after the furiously |
-834|7|2|2|11|9977.00|0.03|0.00|A|F|1994-09-18|1994-08-03|1994-10-02|DELIVER IN PERSON|TRUCK|inst the regular packa|
-835|107|2|1|33|33234.30|0.09|0.06|N|O|1995-11-01|1995-12-02|1995-11-24|DELIVER IN PERSON|RAIL|onic instructions among the carefully iro|
-835|185|6|2|28|30385.04|0.02|0.02|N|O|1995-12-27|1995-12-11|1996-01-21|NONE|SHIP| fluffily furious pinto beans|
-836|188|9|1|6|6529.08|0.09|0.03|N|O|1996-12-09|1997-01-31|1996-12-29|COLLECT COD|TRUCK|fully bold theodolites are daringly across|
-836|84|5|2|18|17713.44|0.03|0.05|N|O|1997-02-27|1997-02-11|1997-03-22|NONE|REG AIR|y pending packages use alon|
-836|141|8|3|46|47892.44|0.05|0.07|N|O|1997-03-21|1997-02-06|1997-04-05|NONE|REG AIR|boldly final pinto beans haggle furiously|
-837|57|5|1|39|37324.95|0.03|0.08|A|F|1994-07-22|1994-08-10|1994-08-11|NONE|RAIL|ecial pinto bea|
-837|88|9|2|24|23713.92|0.08|0.00|R|F|1994-06-27|1994-09-02|1994-07-27|DELIVER IN PERSON|FOB|p carefully. theodolites use. bold courts a|
-838|134|10|1|20|20682.60|0.10|0.07|N|O|1998-04-11|1998-03-25|1998-04-19|COLLECT COD|TRUCK| furiously final ideas. slow, bold |
-838|29|10|2|27|25083.54|0.05|0.07|N|O|1998-02-15|1998-04-03|1998-02-20|DELIVER IN PERSON|SHIP| pending pinto beans haggle about t|
-838|95|7|3|23|22887.07|0.10|0.07|N|O|1998-03-26|1998-04-17|1998-04-02|COLLECT COD|AIR|ets haggle furiously furiously regular r|
-838|44|5|4|18|16992.72|0.09|0.00|N|O|1998-03-28|1998-04-06|1998-03-31|TAKE BACK RETURN|AIR|hely unusual foxes. furio|
-839|158|10|1|23|24337.45|0.07|0.02|N|O|1995-10-17|1995-11-03|1995-11-04|COLLECT COD|AIR|ng ideas haggle accord|
-839|189|10|2|47|51191.46|0.08|0.00|N|O|1995-10-17|1995-11-06|1995-11-10|NONE|AIR|refully final excuses about |
-864|130|5|1|34|35024.42|0.03|0.04|N|O|1997-12-16|1997-10-23|1998-01-12|TAKE BACK RETURN|SHIP|gside of the furiously special|
-864|98|1|2|7|6986.63|0.01|0.02|N|O|1997-11-13|1997-10-07|1997-12-13|TAKE BACK RETURN|MAIL|ven requests should sleep along |
-864|80|10|3|34|33322.72|0.03|0.00|N|O|1997-09-14|1997-11-04|1997-09-21|TAKE BACK RETURN|REG AIR|to the furiously ironic platelets! |
-865|198|10|1|16|17571.04|0.07|0.03|R|F|1993-08-24|1993-06-26|1993-08-28|TAKE BACK RETURN|TRUCK|y even accounts. quickly bold decoys|
-865|20|7|2|3|2760.06|0.02|0.05|A|F|1993-07-17|1993-07-14|1993-08-01|NONE|MAIL|fully regular the|
-865|87|8|3|15|14806.20|0.00|0.06|R|F|1993-07-05|1993-06-25|1993-07-26|NONE|SHIP| deposits sleep quickl|
-865|169|4|4|34|36351.44|0.09|0.06|A|F|1993-05-09|1993-07-28|1993-05-18|DELIVER IN PERSON|REG AIR|furiously fluffily unusual account|
-866|136|7|1|5|5180.65|0.08|0.00|R|F|1993-01-22|1993-01-14|1993-02-07|TAKE BACK RETURN|AIR|tegrate fluffily. carefully f|
-867|139|10|1|7|7273.91|0.04|0.07|A|F|1994-02-19|1993-12-25|1994-02-25|DELIVER IN PERSON|TRUCK|pendencies-- slyly unusual packages hagg|
-868|168|9|1|8|8545.28|0.06|0.03|R|F|1992-10-07|1992-08-01|1992-10-16|NONE|MAIL|l deposits. blithely regular pint|
-868|29|8|2|13|12077.26|0.05|0.07|R|F|1992-07-25|1992-08-26|1992-08-04|NONE|AIR|gged instructi|
-868|68|5|3|19|18393.14|0.09|0.06|R|F|1992-06-22|1992-08-27|1992-07-04|COLLECT COD|SHIP|lyly ironic platelets wake. rut|
-868|122|1|4|43|43951.16|0.02|0.04|A|F|1992-07-02|1992-07-22|1992-07-21|COLLECT COD|SHIP|kly silent deposits wake dar|
-868|25|8|5|27|24975.54|0.04|0.01|R|F|1992-08-01|1992-08-25|1992-08-12|TAKE BACK RETURN|RAIL|oss the fluffily unusual pinto |
-868|125|6|6|19|19477.28|0.02|0.05|R|F|1992-09-20|1992-07-18|1992-10-04|NONE|FOB|ely even deposits lose blithe|
-869|63|2|1|27|26002.62|0.07|0.07|N|O|1997-01-30|1997-02-17|1997-02-26|TAKE BACK RETURN|TRUCK|uffily even excuses? slyly even deposits |
-869|47|4|2|36|34093.44|0.04|0.01|N|O|1997-05-03|1997-03-17|1997-05-24|NONE|RAIL|ong the furiously bold instructi|
-870|50|9|1|36|34201.80|0.04|0.07|A|F|1993-10-18|1993-09-16|1993-11-15|COLLECT COD|MAIL|fily. furiously final accounts are |
-870|186|7|2|5|5430.90|0.06|0.05|A|F|1993-08-13|1993-09-11|1993-08-24|COLLECT COD|FOB|e slyly excuses. ironi|
-871|97|8|1|48|47860.32|0.10|0.03|N|O|1996-02-25|1996-02-09|1996-03-18|NONE|AIR|coys dazzle slyly slow notornis. f|
-871|55|10|2|47|44887.35|0.07|0.03|N|O|1995-12-25|1996-02-01|1996-01-24|TAKE BACK RETURN|RAIL|ss, final dep|
-871|108|5|3|13|13105.30|0.09|0.01|N|O|1996-01-25|1996-01-24|1996-02-03|NONE|REG AIR| haggle furiou|
-871|190|1|4|29|31615.51|0.06|0.07|N|O|1995-11-16|1996-01-27|1995-12-16|DELIVER IN PERSON|RAIL|ests are carefu|
-871|128|7|5|8|8224.96|0.00|0.01|N|O|1995-11-25|1996-01-12|1995-12-12|DELIVER IN PERSON|AIR|lar ideas-- slyly even accou|
-871|143|2|6|26|27121.64|0.00|0.06|N|O|1996-02-07|1996-01-05|1996-02-25|COLLECT COD|AIR|symptotes use quickly near the |
-871|174|3|7|4|4296.68|0.00|0.07|N|O|1996-03-09|1996-01-20|1996-03-26|COLLECT COD|FOB|l, regular dependencies w|
-896|39|10|1|47|44134.41|0.07|0.08|R|F|1993-05-28|1993-05-15|1993-06-15|DELIVER IN PERSON|TRUCK|ly even pinto beans integrate. b|
-896|198|2|2|10|10981.90|0.03|0.07|A|F|1993-07-07|1993-06-03|1993-07-24|COLLECT COD|SHIP| quickly even theodolites. carefully regu|
-896|2|9|3|7|6314.00|0.09|0.02|A|F|1993-05-02|1993-05-24|1993-05-31|DELIVER IN PERSON|MAIL| requests |
-896|152|3|4|11|11573.65|0.08|0.04|A|F|1993-05-19|1993-05-22|1993-06-08|COLLECT COD|MAIL|the multipliers sleep|
-896|188|9|5|34|36998.12|0.00|0.05|R|F|1993-05-21|1993-06-01|1993-05-23|NONE|TRUCK|ular, close requests cajo|
-896|177|6|6|44|47395.48|0.09|0.08|R|F|1993-05-19|1993-04-14|1993-06-02|DELIVER IN PERSON|FOB|lar, pending packages. deposits are q|
-896|109|2|7|11|11100.10|0.01|0.07|A|F|1993-05-01|1993-04-09|1993-05-06|TAKE BACK RETURN|FOB|rding to the pinto beans wa|
-897|91|4|1|15|14866.35|0.07|0.04|R|F|1995-05-25|1995-05-09|1995-06-07|COLLECT COD|REG AIR|r ideas. slyly spec|
-897|184|5|2|26|28188.68|0.05|0.08|N|O|1995-07-01|1995-06-10|1995-07-14|COLLECT COD|MAIL|tions sleep according to the special|
-897|126|1|3|13|13339.56|0.07|0.00|A|F|1995-03-30|1995-05-17|1995-04-21|TAKE BACK RETURN|MAIL|bold accounts mold carefully! braids|
-897|102|7|4|2|2004.20|0.08|0.08|R|F|1995-05-22|1995-05-07|1995-06-16|COLLECT COD|RAIL|into beans. slyly special fox|
-898|161|2|1|9|9550.44|0.07|0.08|A|F|1993-07-04|1993-07-09|1993-07-25|NONE|AIR|e slyly across the blithe|
-898|179|7|2|37|39929.29|0.03|0.05|A|F|1993-08-17|1993-08-04|1993-09-01|DELIVER IN PERSON|REG AIR|packages sleep furiously|
-898|49|8|3|11|10439.44|0.01|0.00|A|F|1993-09-13|1993-08-31|1993-09-25|TAKE BACK RETURN|MAIL|etly bold accounts |
-898|193|6|4|36|39354.84|0.04|0.07|R|F|1993-08-04|1993-07-25|1993-08-23|DELIVER IN PERSON|REG AIR| after the carefully |
-899|61|10|1|18|17299.08|0.04|0.05|N|O|1998-08-06|1998-05-09|1998-09-05|DELIVER IN PERSON|AIR|re daring, pending deposits. blit|
-899|47|4|2|25|23676.00|0.00|0.07|N|O|1998-07-21|1998-05-12|1998-08-16|NONE|REG AIR|rly final sentiments. bold pinto beans |
-899|85|6|3|4|3940.32|0.09|0.05|N|O|1998-06-02|1998-06-28|1998-06-14|TAKE BACK RETURN|REG AIR|ter the carefully regular deposits are agai|
-899|180|9|4|14|15122.52|0.05|0.03|N|O|1998-05-21|1998-05-28|1998-06-03|TAKE BACK RETURN|FOB|ades impress carefully|
-899|71|10|5|4|3884.28|0.06|0.02|N|O|1998-04-11|1998-05-14|1998-04-27|NONE|TRUCK|ges. blithe, ironic waters cajole care|
-899|120|4|6|47|47945.64|0.00|0.04|N|O|1998-04-14|1998-05-30|1998-05-13|DELIVER IN PERSON|TRUCK|furiously final foxes after the s|
-899|14|1|7|11|10054.11|0.02|0.08|N|O|1998-06-03|1998-06-15|1998-06-20|COLLECT COD|REG AIR|t the ironic|
-900|199|1|1|44|48364.36|0.01|0.06|R|F|1994-12-15|1994-12-03|1994-12-27|COLLECT COD|MAIL| detect quick|
-900|115|6|2|48|48725.28|0.08|0.04|A|F|1994-12-22|1994-11-08|1995-01-19|COLLECT COD|TRUCK|cial pinto beans nag |
-900|75|6|3|24|23401.68|0.03|0.00|R|F|1994-10-21|1994-12-25|1994-10-22|TAKE BACK RETURN|SHIP|-ray furiously un|
-901|22|7|1|36|33192.72|0.01|0.01|N|O|1998-08-11|1998-10-09|1998-08-27|DELIVER IN PERSON|REG AIR|. accounts are care|
-901|46|7|2|2|1892.08|0.09|0.02|N|O|1998-10-25|1998-09-27|1998-11-01|DELIVER IN PERSON|AIR|d foxes use slyly|
-901|43|10|3|37|34892.48|0.04|0.08|N|O|1998-11-01|1998-09-13|1998-11-05|NONE|AIR|ickly final deposits |
-901|18|9|4|11|10098.11|0.00|0.06|N|O|1998-11-13|1998-10-19|1998-11-14|TAKE BACK RETURN|TRUCK|ourts among the quickly expre|
-902|111|2|1|3|3033.33|0.06|0.00|R|F|1994-10-01|1994-10-25|1994-10-28|COLLECT COD|MAIL|into beans thrash blithely about the flu|
-902|118|2|2|8|8144.88|0.06|0.07|R|F|1994-10-25|1994-09-20|1994-11-07|COLLECT COD|RAIL| orbits al|
-902|165|2|3|24|25563.84|0.02|0.05|R|F|1994-11-08|1994-10-12|1994-11-26|NONE|FOB|. blithely even accounts poach furiously i|
-903|65|10|1|27|26056.62|0.04|0.03|N|O|1995-09-18|1995-09-20|1995-10-02|TAKE BACK RETURN|SHIP|lly pending foxes. furiously|
-903|9|2|2|35|31815.00|0.06|0.05|N|O|1995-09-18|1995-08-21|1995-10-12|TAKE BACK RETURN|TRUCK|rets wake fin|
-903|9|2|3|33|29997.00|0.02|0.03|N|O|1995-09-24|1995-09-01|1995-10-12|COLLECT COD|MAIL|ely ironic packages wake blithely|
-903|56|1|4|9|8604.45|0.09|0.00|N|O|1995-10-06|1995-09-14|1995-10-24|NONE|TRUCK|he slyly ev|
-903|42|3|5|1|942.04|0.04|0.00|N|O|1995-10-22|1995-09-13|1995-11-03|NONE|AIR|y final platelets sublate among the |
-903|168|9|6|13|13886.08|0.07|0.02|N|O|1995-09-11|1995-10-04|1995-10-03|COLLECT COD|SHIP|sleep along the final|
-928|169|10|1|29|31005.64|0.07|0.02|R|F|1995-05-17|1995-05-12|1995-05-21|NONE|REG AIR|ly alongside of the s|
-928|48|7|2|24|22752.96|0.05|0.08|A|F|1995-04-06|1995-05-08|1995-04-24|DELIVER IN PERSON|AIR|s the furiously regular warthogs im|
-928|152|10|3|46|48398.90|0.08|0.00|A|F|1995-05-09|1995-04-09|1995-06-01|DELIVER IN PERSON|REG AIR| beans sleep against the carefully ir|
-928|52|4|4|43|40938.15|0.10|0.05|A|F|1995-04-14|1995-04-21|1995-05-09|NONE|REG AIR|blithely. express, silent requests doze at|
-928|12|3|5|38|34656.38|0.02|0.08|N|F|1995-06-08|1995-04-15|1995-06-30|TAKE BACK RETURN|SHIP|xpress grouc|
-928|55|6|6|50|47752.50|0.05|0.00|N|F|1995-06-07|1995-04-15|1995-07-01|DELIVER IN PERSON|TRUCK| slyly slyly special request|
-928|11|5|7|11|10021.11|0.00|0.01|A|F|1995-04-29|1995-04-16|1995-04-30|NONE|AIR|longside of|
-929|129|8|1|45|46310.40|0.09|0.01|R|F|1993-01-24|1992-12-06|1993-02-16|DELIVER IN PERSON|REG AIR|ges haggle careful|
-929|175|5|2|44|47307.48|0.02|0.00|A|F|1992-10-09|1992-11-20|1992-10-22|DELIVER IN PERSON|SHIP|s. excuses cajole. carefully regu|
-929|74|5|3|14|13636.98|0.06|0.07|A|F|1992-10-21|1992-11-17|1992-11-15|NONE|FOB|gainst the|
-929|102|5|4|7|7014.70|0.06|0.01|A|F|1992-12-24|1992-12-19|1993-01-08|TAKE BACK RETURN|TRUCK|ithely. slyly c|
-930|45|4|1|36|34021.44|0.10|0.04|R|F|1994-12-21|1995-02-20|1994-12-24|COLLECT COD|RAIL|quickly regular pinto beans sle|
-930|18|8|2|47|43146.47|0.08|0.00|A|F|1995-03-20|1995-02-04|1995-04-04|DELIVER IN PERSON|AIR|ackages. fluffily e|
-930|65|10|3|10|9650.60|0.07|0.08|A|F|1994-12-18|1995-01-27|1995-01-16|COLLECT COD|AIR|ckly regular requests: regular instructions|
-930|100|2|4|21|21002.10|0.06|0.02|A|F|1995-02-16|1995-03-03|1995-03-13|DELIVER IN PERSON|SHIP|foxes. regular deposits integrate carefu|
-930|164|9|5|50|53208.00|0.03|0.06|A|F|1995-04-03|1995-01-29|1995-04-22|COLLECT COD|MAIL| excuses among the furiously express ideas |
-930|145|4|6|10|10451.40|0.00|0.04|A|F|1995-02-09|1995-02-17|1995-02-16|NONE|SHIP|blithely bold i|
-930|167|4|7|30|32014.80|0.07|0.08|R|F|1995-01-20|1995-02-28|1995-02-04|TAKE BACK RETURN|RAIL|g accounts sleep along the platelets.|
-931|40|1|1|18|16920.72|0.00|0.05|A|F|1993-04-04|1993-01-11|1993-04-13|NONE|RAIL|slyly ironic re|
-931|17|7|2|10|9170.10|0.05|0.07|A|F|1993-03-01|1993-01-09|1993-03-07|TAKE BACK RETURN|SHIP|ajole quickly. slyly sil|
-931|147|6|3|48|50262.72|0.01|0.08|A|F|1993-02-03|1993-03-02|1993-02-09|TAKE BACK RETURN|FOB|ep alongside of the fluffy |
-931|82|3|4|38|37319.04|0.08|0.08|A|F|1993-03-06|1993-02-24|1993-03-27|DELIVER IN PERSON|RAIL|usly final packages integrate carefully|
-932|44|1|1|41|38705.64|0.01|0.05|N|O|1997-06-05|1997-07-22|1997-06-26|COLLECT COD|RAIL|foxes. ironic pl|
-933|49|8|1|23|21827.92|0.02|0.04|R|F|1992-08-13|1992-09-18|1992-08-25|DELIVER IN PERSON|MAIL| the furiously bold dinos. sly|
-933|13|4|2|27|24651.27|0.02|0.01|R|F|1992-10-03|1992-10-02|1992-10-26|DELIVER IN PERSON|RAIL|ests. express|
-933|100|2|3|26|26002.60|0.05|0.00|A|F|1992-11-09|1992-11-03|1992-11-16|DELIVER IN PERSON|AIR| the deposits affix slyly after t|
-934|118|5|1|18|18325.98|0.07|0.01|N|O|1996-09-10|1996-09-20|1996-09-25|COLLECT COD|RAIL|y unusual requests dazzle above t|
-935|28|3|1|23|21344.46|0.05|0.00|N|O|1997-11-11|1997-11-22|1997-11-29|COLLECT COD|REG AIR|ular accounts about|
-935|65|10|2|23|22196.38|0.02|0.01|N|O|1998-01-11|1997-11-25|1998-02-05|COLLECT COD|TRUCK|hes haggle furiously dolphins. qu|
-935|135|1|3|36|37264.68|0.06|0.00|N|O|1997-11-05|1997-12-05|1997-11-25|TAKE BACK RETURN|AIR|leep about the exp|
-935|58|3|4|13|12454.65|0.08|0.04|N|O|1998-01-13|1997-11-30|1998-02-08|DELIVER IN PERSON|TRUCK|ld platelet|
-935|13|7|5|8|7304.08|0.02|0.05|N|O|1998-01-12|1997-11-02|1998-02-05|NONE|TRUCK|cept the quickly regular p|
-935|59|1|6|1|959.05|0.01|0.08|N|O|1997-12-14|1997-11-22|1998-01-08|DELIVER IN PERSON|TRUCK| instructions. ironic acc|
-960|107|10|1|1|1007.10|0.07|0.00|A|F|1994-12-24|1994-10-26|1995-01-20|DELIVER IN PERSON|AIR|y ironic packages. quickly even |
-960|117|7|2|25|25427.75|0.06|0.08|R|F|1994-12-01|1994-10-29|1994-12-27|DELIVER IN PERSON|RAIL|ts. fluffily regular requests |
-960|175|3|3|32|34405.44|0.01|0.08|R|F|1995-01-19|1994-12-17|1995-02-04|DELIVER IN PERSON|FOB|around the blithe, even pl|
-961|118|5|1|7|7126.77|0.10|0.00|N|O|1995-07-23|1995-07-20|1995-08-11|TAKE BACK RETURN|RAIL|usual dolphins. ironic pearls sleep blit|
-961|91|2|2|18|17839.62|0.09|0.05|N|O|1995-07-01|1995-08-14|1995-07-04|DELIVER IN PERSON|AIR|rmanent foxes haggle speci|
-961|97|8|3|42|41877.78|0.06|0.01|N|O|1995-08-24|1995-08-21|1995-09-10|TAKE BACK RETURN|SHIP|ests do cajole blithely. furiously bo|
-961|34|10|4|29|27086.87|0.00|0.07|N|F|1995-06-10|1995-08-20|1995-06-26|TAKE BACK RETURN|TRUCK|l accounts use blithely against the|
-961|26|7|5|38|35188.76|0.03|0.05|N|O|1995-08-21|1995-07-19|1995-08-27|NONE|RAIL|he blithely special requests. furiousl|
-961|197|8|6|30|32915.70|0.09|0.03|N|O|1995-07-06|1995-07-20|1995-07-26|DELIVER IN PERSON|MAIL|warhorses slee|
-962|57|8|1|36|34453.80|0.01|0.03|R|F|1994-08-09|1994-07-10|1994-09-02|COLLECT COD|TRUCK|al foxes. iron|
-962|36|2|2|27|25272.81|0.09|0.02|A|F|1994-05-11|1994-07-10|1994-06-03|TAKE BACK RETURN|SHIP|y slyly express deposits. final i|
-962|80|1|3|3|2940.24|0.07|0.08|A|F|1994-05-08|1994-07-06|1994-06-02|DELIVER IN PERSON|FOB|ag furiously. even pa|
-962|57|5|4|20|19141.00|0.04|0.02|R|F|1994-08-26|1994-06-27|1994-09-11|DELIVER IN PERSON|SHIP| deposits use fluffily according to |
-962|152|7|5|12|12625.80|0.02|0.00|A|F|1994-06-09|1994-06-07|1994-06-11|COLLECT COD|TRUCK|across the furiously regular escapades daz|
-962|188|9|6|5|5440.90|0.02|0.05|A|F|1994-08-29|1994-07-15|1994-09-19|COLLECT COD|TRUCK|efully bold packages run slyly caref|
-963|194|8|1|7|7659.33|0.01|0.00|R|F|1994-09-12|1994-07-18|1994-09-17|DELIVER IN PERSON|REG AIR|s. slyly regular depe|
-963|98|10|2|48|47908.32|0.10|0.06|R|F|1994-08-25|1994-08-12|1994-09-21|DELIVER IN PERSON|RAIL|ages. quickly express deposits cajole pe|
-964|199|10|1|39|42868.41|0.04|0.01|N|O|1995-06-21|1995-07-24|1995-06-24|NONE|AIR|se furiously regular instructions. blith|
-964|113|4|2|1|1013.11|0.02|0.05|N|O|1995-08-20|1995-07-29|1995-09-10|DELIVER IN PERSON|REG AIR|unts. quickly even platelets s|
-964|57|5|3|49|46895.45|0.01|0.03|N|O|1995-09-06|1995-08-10|1995-10-05|NONE|MAIL|ounts. blithely regular packag|
-964|55|3|4|44|42022.20|0.05|0.02|N|O|1995-09-18|1995-08-02|1995-10-17|TAKE BACK RETURN|TRUCK|ronic deposit|
-965|108|1|1|20|20162.00|0.04|0.05|N|F|1995-06-16|1995-07-20|1995-07-06|COLLECT COD|MAIL|kly. carefully pending requ|
-965|18|5|2|23|21114.23|0.06|0.08|N|O|1995-07-12|1995-07-08|1995-08-11|COLLECT COD|MAIL|ld kindle carefully across th|
-966|180|8|1|19|20523.42|0.07|0.01|N|O|1998-05-26|1998-07-15|1998-05-29|COLLECT COD|FOB|efully final pinto beans. quickly |
-966|117|4|2|42|42718.62|0.02|0.06|N|O|1998-06-28|1998-06-20|1998-07-05|NONE|TRUCK|tions boost furiously car|
-966|22|1|3|42|38724.84|0.06|0.08|N|O|1998-06-15|1998-06-08|1998-07-05|NONE|RAIL|sly ironic asymptotes hagg|
-966|5|2|4|20|18100.00|0.04|0.01|N|O|1998-07-19|1998-07-15|1998-07-27|NONE|TRUCK|pecial ins|
-967|59|4|1|41|39321.05|0.05|0.05|R|F|1992-09-21|1992-08-15|1992-10-21|NONE|MAIL|ld foxes wake closely special|
-967|85|6|2|4|3940.32|0.01|0.02|A|F|1992-07-15|1992-07-27|1992-07-18|DELIVER IN PERSON|REG AIR|platelets hang carefully along |
-967|132|8|3|10|10321.30|0.00|0.02|A|F|1992-09-18|1992-08-06|1992-09-19|DELIVER IN PERSON|MAIL|old pinto beans alongside of the exp|
-967|148|7|4|49|51358.86|0.01|0.04|A|F|1992-09-28|1992-09-15|1992-10-14|NONE|SHIP|the slyly even ideas. carefully even|
-967|17|1|5|41|37597.41|0.08|0.04|A|F|1992-07-23|1992-08-07|1992-08-13|TAKE BACK RETURN|FOB|efully special ide|
-967|106|9|6|17|17103.70|0.05|0.06|A|F|1992-10-02|1992-08-19|1992-10-25|NONE|MAIL|y ironic foxes caj|
-967|161|8|7|18|19100.88|0.00|0.02|A|F|1992-10-06|1992-08-05|1992-10-15|DELIVER IN PERSON|RAIL|ngage blith|
-992|60|2|1|14|13440.84|0.10|0.03|N|O|1998-01-29|1997-12-29|1998-02-18|TAKE BACK RETURN|MAIL|the unusual, even dependencies affix fluff|
-992|38|9|2|34|31893.02|0.02|0.00|N|O|1997-11-29|1998-01-21|1997-11-30|NONE|RAIL|s use silently. blithely regular ideas b|
-992|105|6|3|30|30153.00|0.10|0.00|N|O|1997-12-15|1998-02-02|1998-01-12|NONE|SHIP|nic instructions n|
-992|48|5|4|21|19908.84|0.06|0.06|N|O|1997-11-13|1997-12-28|1997-12-10|NONE|TRUCK|fily. quickly special deposit|
-992|92|4|5|7|6944.63|0.09|0.05|N|O|1997-11-30|1997-12-24|1997-12-16|DELIVER IN PERSON|TRUCK|ideas haggle. special theodolit|
-992|75|3|6|41|39977.87|0.10|0.01|N|O|1997-11-14|1998-02-04|1997-11-23|TAKE BACK RETURN|AIR|eodolites cajole across the accounts.|
-993|175|5|1|33|35480.61|0.01|0.05|N|O|1996-01-03|1995-11-28|1996-01-23|DELIVER IN PERSON|AIR| the deposits affix agains|
-993|3|6|2|28|25284.00|0.06|0.08|N|O|1995-10-24|1995-11-20|1995-11-06|DELIVER IN PERSON|RAIL|lites. even theodolite|
-993|40|1|3|10|9400.40|0.03|0.08|N|O|1995-12-17|1995-11-13|1995-12-20|NONE|RAIL|encies wake fur|
-993|191|4|4|40|43647.60|0.01|0.01|N|O|1995-11-16|1995-11-01|1995-12-05|TAKE BACK RETURN|RAIL|gle above the furiously |
-993|146|7|5|33|34522.62|0.09|0.08|N|O|1995-09-28|1995-10-24|1995-10-03|COLLECT COD|RAIL|fluffily. quiet excuses sleep furiously sly|
-993|137|3|6|35|36299.55|0.04|0.02|N|O|1995-10-26|1995-10-20|1995-11-05|DELIVER IN PERSON|FOB|es. ironic, ironic requests|
-993|5|2|7|15|13575.00|0.09|0.03|N|O|1995-09-27|1995-10-21|1995-10-17|DELIVER IN PERSON|MAIL|sits. pending pinto beans haggle? ca|
-994|65|6|1|4|3860.24|0.07|0.03|R|F|1994-07-05|1994-05-21|1994-07-20|COLLECT COD|SHIP|aggle carefully acc|
-994|10|3|2|11|10010.11|0.01|0.00|R|F|1994-05-03|1994-06-10|1994-05-22|NONE|AIR|ular accounts sleep |
-994|31|7|3|5|4655.15|0.08|0.08|A|F|1994-06-24|1994-06-14|1994-06-26|NONE|MAIL|ainst the pending requests. packages sl|
-994|131|7|4|25|25778.25|0.10|0.00|A|F|1994-06-03|1994-06-02|1994-06-06|COLLECT COD|RAIL|usual pinto beans.|
-995|173|1|1|15|16097.55|0.08|0.05|N|O|1995-06-30|1995-08-04|1995-07-27|NONE|REG AIR|uses. fluffily fina|
-995|129|4|2|28|28815.36|0.08|0.03|N|F|1995-06-12|1995-07-20|1995-06-19|DELIVER IN PERSON|SHIP|pades. quick, final frays use flu|
-995|166|3|3|45|47977.20|0.00|0.05|N|O|1995-08-02|1995-07-21|1995-08-03|DELIVER IN PERSON|SHIP|lar packages detect blithely above t|
-995|66|3|4|25|24151.50|0.01|0.08|N|O|1995-09-08|1995-08-05|1995-09-28|NONE|TRUCK|lyly even |
-995|24|5|5|18|16632.36|0.06|0.03|N|O|1995-07-03|1995-07-29|1995-07-22|TAKE BACK RETURN|AIR| even accounts unwind c|
-996|173|2|1|43|46146.31|0.03|0.06|N|O|1998-03-27|1998-03-25|1998-04-06|COLLECT COD|SHIP| the blithely ironic foxes. slyly silent d|
-997|163|4|1|11|11694.76|0.00|0.02|N|O|1997-06-16|1997-07-21|1997-07-14|DELIVER IN PERSON|TRUCK|p furiously according to t|
-997|48|9|2|17|16116.68|0.03|0.00|N|O|1997-07-28|1997-07-26|1997-08-20|DELIVER IN PERSON|SHIP|aggle quickly furiously|
-998|10|7|1|22|20020.22|0.04|0.05|A|F|1994-12-03|1995-02-17|1994-12-19|TAKE BACK RETURN|RAIL|lites. qui|
-998|181|2|2|7|7568.26|0.10|0.05|R|F|1995-03-24|1995-01-18|1995-04-03|NONE|MAIL|nic deposits. even asym|
-998|142|9|3|30|31264.20|0.05|0.07|A|F|1994-12-02|1995-01-23|1994-12-23|NONE|SHIP|lyly idle Tir|
-998|11|8|4|6|5466.06|0.09|0.05|R|F|1995-03-20|1994-12-27|1995-04-13|DELIVER IN PERSON|MAIL|refully accounts. carefully express ac|
-998|73|2|5|1|973.07|0.04|0.00|R|F|1995-01-05|1995-01-06|1995-01-13|NONE|SHIP|es sleep. regular dependencies use bl|
-999|61|6|1|34|32676.04|0.00|0.08|R|F|1993-10-30|1993-10-17|1993-10-31|TAKE BACK RETURN|SHIP|its. daringly final instruc|
-999|199|1|2|41|45066.79|0.08|0.01|A|F|1993-10-16|1993-12-04|1993-11-03|DELIVER IN PERSON|REG AIR|us depths. carefully ironic instruc|
-999|118|5|3|15|15271.65|0.07|0.06|A|F|1993-12-12|1993-10-18|1994-01-08|COLLECT COD|REG AIR|y ironic requests. carefully regu|
-999|3|4|4|10|9030.00|0.05|0.02|A|F|1993-11-23|1993-12-02|1993-11-29|NONE|MAIL|efully pending|
-999|19|10|5|3|2757.03|0.03|0.00|R|F|1993-09-17|1993-10-22|1993-10-13|NONE|FOB|nic, pending ideas. bl|
-999|181|2|6|37|40003.66|0.00|0.04|R|F|1994-01-03|1993-10-28|1994-01-12|DELIVER IN PERSON|TRUCK|ckly slyly unusual packages: packages hagg|
-1024|199|2|1|49|53860.31|0.03|0.05|N|O|1998-03-06|1998-01-26|1998-03-29|TAKE BACK RETURN|FOB|ts. asymptotes nag fur|
-1024|126|5|2|34|34888.08|0.00|0.01|N|O|1998-01-06|1998-02-05|1998-01-26|COLLECT COD|SHIP|des the slyly even|
-1024|44|3|3|28|26433.12|0.04|0.01|N|O|1998-03-04|1998-03-12|1998-03-15|TAKE BACK RETURN|TRUCK|e blithely regular pi|
-1024|184|5|4|13|14094.34|0.02|0.04|N|O|1998-04-11|1998-02-26|1998-04-18|NONE|FOB|e slyly around the slyly special instructi|
-1024|21|4|5|49|45129.98|0.02|0.04|N|O|1998-02-27|1998-03-10|1998-03-27|COLLECT COD|FOB| carefully bold |
-1025|150|1|1|36|37805.40|0.03|0.04|A|F|1995-05-15|1995-07-05|1995-06-10|COLLECT COD|FOB|e unusual, regular instr|
-1025|69|10|2|23|22288.38|0.08|0.03|N|F|1995-06-02|1995-07-29|1995-06-23|COLLECT COD|RAIL| regular platelets nag carefu|
-1025|23|2|3|25|23075.50|0.06|0.05|R|F|1995-05-29|1995-06-21|1995-06-13|DELIVER IN PERSON|REG AIR|xpress foxes. furiousl|
-1026|38|4|1|36|33769.08|0.10|0.02|N|O|1997-06-14|1997-07-20|1997-06-23|NONE|SHIP|st the ide|
-1026|37|8|2|6|5622.18|0.10|0.08|N|O|1997-07-07|1997-08-16|1997-07-14|TAKE BACK RETURN|TRUCK|to beans. special, regular packages hagg|
-1027|156|1|1|43|45414.45|0.07|0.08|R|F|1992-06-17|1992-08-28|1992-07-10|DELIVER IN PERSON|MAIL|oxes. carefully regular deposits|
-1027|113|10|2|20|20262.20|0.01|0.02|A|F|1992-06-08|1992-08-29|1992-06-14|NONE|TRUCK|ar excuses eat f|
-1027|126|9|3|2|2052.24|0.01|0.02|R|F|1992-08-28|1992-07-09|1992-09-10|NONE|FOB|s. quickly unusual waters inside |
-1027|100|4|4|13|13001.30|0.08|0.01|R|F|1992-08-22|1992-07-10|1992-09-12|DELIVER IN PERSON|RAIL|ily ironic ideas use|
-1027|136|2|5|22|22794.86|0.02|0.00|A|F|1992-09-03|1992-08-14|1992-10-01|DELIVER IN PERSON|FOB|the furiously express ex|
-1027|105|8|6|10|10051.00|0.06|0.08|R|F|1992-08-28|1992-08-06|1992-09-03|COLLECT COD|REG AIR|ilent, express foxes near the blithely sp|
-1028|128|3|1|2|2056.24|0.09|0.03|A|F|1994-01-10|1994-03-22|1994-01-26|COLLECT COD|FOB|s alongside of the regular asymptotes sleep|
-1028|112|9|2|39|39472.29|0.06|0.05|R|F|1994-02-18|1994-03-22|1994-03-06|TAKE BACK RETURN|MAIL| final dependencies affix a|
-1028|100|3|3|8|8000.80|0.03|0.07|A|F|1994-02-14|1994-03-28|1994-02-22|NONE|AIR|e carefully final packages. furiously fi|
-1028|32|8|4|26|24232.78|0.07|0.02|A|F|1994-03-18|1994-02-08|1994-03-19|TAKE BACK RETURN|RAIL|ronic platelets. carefully f|
-1028|29|2|5|27|25083.54|0.00|0.04|A|F|1994-04-03|1994-02-07|1994-04-26|NONE|REG AIR|ial accounts nag. slyly|
-1028|26|1|6|39|36114.78|0.03|0.02|A|F|1994-02-27|1994-02-16|1994-03-02|DELIVER IN PERSON|AIR|c theodoli|
-1028|31|2|7|22|20482.66|0.03|0.00|R|F|1994-04-24|1994-02-27|1994-05-08|NONE|REG AIR| Tiresias alongside of the carefully spec|
-1029|137|3|1|45|46670.85|0.05|0.07|R|F|1994-07-21|1994-08-30|1994-07-29|TAKE BACK RETURN|FOB|sits boost blithely|
-1030|65|10|1|17|16406.02|0.06|0.06|R|F|1994-10-13|1994-08-01|1994-11-10|DELIVER IN PERSON|RAIL|ly. carefully even packages dazz|
-1031|46|7|1|15|14190.60|0.10|0.08|A|F|1994-11-07|1994-10-29|1994-11-09|TAKE BACK RETURN|FOB|about the carefully bold a|
-1031|165|4|2|28|29824.48|0.05|0.01|A|F|1994-12-10|1994-10-29|1994-12-18|COLLECT COD|FOB|ly ironic accounts across the q|
-1031|187|8|3|27|29353.86|0.07|0.02|R|F|1994-09-20|1994-10-18|1994-10-10|DELIVER IN PERSON|SHIP|gular deposits cajole. blithely unus|
-1031|88|9|4|7|6916.56|0.03|0.03|R|F|1994-12-07|1994-11-11|1994-12-30|COLLECT COD|FOB|r instructions. car|
-1031|191|5|5|44|48012.36|0.01|0.07|R|F|1994-11-20|1994-11-24|1994-12-11|NONE|AIR|re slyly above the furio|
-1056|121|6|1|37|37781.44|0.04|0.06|R|F|1995-02-18|1995-04-01|1995-03-20|NONE|TRUCK| special packages. qui|
-1057|193|5|1|29|31702.51|0.10|0.01|A|F|1992-05-05|1992-05-05|1992-06-03|TAKE BACK RETURN|SHIP|es wake according to the q|
-1057|169|8|2|11|11760.76|0.00|0.02|R|F|1992-03-31|1992-04-18|1992-04-18|COLLECT COD|AIR|yly final theodolites. furi|
-1057|85|6|3|21|20686.68|0.03|0.04|A|F|1992-02-28|1992-05-01|1992-03-10|NONE|REG AIR|ar orbits boost bli|
-1057|182|3|4|20|21643.60|0.06|0.03|R|F|1992-03-02|1992-05-19|1992-03-13|DELIVER IN PERSON|TRUCK|s wake bol|
-1057|97|1|5|7|6979.63|0.06|0.05|R|F|1992-06-05|1992-04-30|1992-06-20|NONE|TRUCK|y slyly express theodolites. slyly bo|
-1057|52|7|6|19|18088.95|0.04|0.07|A|F|1992-05-31|1992-05-09|1992-06-02|DELIVER IN PERSON|FOB|r-- packages haggle alon|
-1058|140|6|1|24|24963.36|0.08|0.04|A|F|1993-07-09|1993-05-28|1993-07-22|DELIVER IN PERSON|TRUCK|fully ironic accounts. express accou|
-1058|89|10|2|5|4945.40|0.04|0.07|R|F|1993-05-11|1993-05-29|1993-05-27|COLLECT COD|TRUCK|refully even requests boost along|
-1058|90|1|3|44|43563.96|0.10|0.01|R|F|1993-06-26|1993-06-21|1993-07-20|COLLECT COD|TRUCK|uriously f|
-1058|5|2|4|25|22625.00|0.09|0.01|A|F|1993-05-27|1993-06-10|1993-06-20|TAKE BACK RETURN|MAIL| the final requests believe carefully |
-1059|178|9|1|16|17250.72|0.07|0.02|A|F|1994-04-24|1994-03-31|1994-04-28|DELIVER IN PERSON|SHIP|y ironic pinto |
-1059|29|2|2|7|6503.14|0.07|0.06|R|F|1994-03-30|1994-04-01|1994-04-24|DELIVER IN PERSON|MAIL|the furiously silent excuses are e|
-1059|88|9|3|45|44463.60|0.00|0.02|R|F|1994-06-10|1994-05-08|1994-06-21|COLLECT COD|RAIL|riously even theodolites. slyly regula|
-1059|110|7|4|26|26262.86|0.09|0.01|A|F|1994-03-17|1994-04-18|1994-03-26|DELIVER IN PERSON|TRUCK|ar pinto beans at the furiously |
-1059|139|5|5|37|38447.81|0.09|0.04|R|F|1994-03-31|1994-05-08|1994-04-06|COLLECT COD|RAIL| packages lose in place of the slyly unusu|
-1059|190|1|6|50|54509.50|0.00|0.03|A|F|1994-06-15|1994-05-11|1994-06-29|NONE|MAIL|s impress furiously about|
-1059|123|4|7|13|13300.56|0.01|0.03|R|F|1994-06-12|1994-05-11|1994-07-02|COLLECT COD|TRUCK|usly regular theodo|
-1060|196|10|1|8|8769.52|0.07|0.04|R|F|1993-05-21|1993-05-06|1993-06-10|DELIVER IN PERSON|FOB|iously. furiously regular in|
-1060|8|5|2|26|23608.00|0.06|0.08|R|F|1993-04-12|1993-04-01|1993-04-20|DELIVER IN PERSON|TRUCK|counts; even deposits are carefull|
-1060|164|3|3|11|11705.76|0.01|0.07|A|F|1993-05-13|1993-05-08|1993-05-17|TAKE BACK RETURN|MAIL|e regular deposits: re|
-1060|110|7|4|16|16161.76|0.03|0.06|A|F|1993-06-15|1993-04-18|1993-07-05|COLLECT COD|SHIP|ccounts. foxes maintain care|
-1060|53|8|5|1|953.05|0.04|0.06|A|F|1993-06-19|1993-05-10|1993-06-21|COLLECT COD|RAIL|posits detect carefully abo|
-1060|72|2|6|26|25273.82|0.01|0.03|A|F|1993-02-28|1993-04-01|1993-03-09|TAKE BACK RETURN|FOB|quickly abo|
-1060|121|10|7|36|36760.32|0.09|0.01|R|F|1993-03-14|1993-03-24|1993-04-02|TAKE BACK RETURN|FOB|r the quickly|
-1061|151|6|1|7|7358.05|0.04|0.04|N|O|1998-08-09|1998-08-12|1998-08-16|COLLECT COD|FOB|es are slyly expr|
-1061|119|3|2|2|2038.22|0.06|0.02|N|O|1998-08-15|1998-08-05|1998-08-24|COLLECT COD|MAIL|. regular accounts impre|
-1061|111|8|3|26|26288.86|0.08|0.02|N|O|1998-06-18|1998-07-25|1998-06-24|TAKE BACK RETURN|AIR|ave to slee|
-1061|136|7|4|41|42481.33|0.00|0.05|N|O|1998-06-29|1998-07-02|1998-07-27|NONE|MAIL|s are. ironic theodolites cajole. dep|
-1061|131|2|5|50|51556.50|0.04|0.08|N|O|1998-05-25|1998-07-22|1998-06-22|COLLECT COD|AIR|nding excuses are around the e|
-1061|144|1|6|35|36544.90|0.09|0.05|N|O|1998-07-05|1998-07-07|1998-07-30|TAKE BACK RETURN|MAIL|ending requests nag careful|
-1062|137|8|1|38|39410.94|0.00|0.01|N|O|1997-01-27|1997-03-07|1997-02-16|DELIVER IN PERSON|TRUCK|deas. pending acc|
-1063|96|9|1|42|41835.78|0.03|0.02|A|F|1994-07-10|1994-05-25|1994-07-26|NONE|RAIL|tructions about the blithely ex|
-1088|107|8|1|30|30213.00|0.07|0.03|A|F|1992-05-22|1992-06-25|1992-06-11|TAKE BACK RETURN|SHIP|long the packages snooze careful|
-1088|37|3|2|11|10307.33|0.06|0.00|A|F|1992-08-30|1992-07-25|1992-09-10|TAKE BACK RETURN|AIR|inal requests. fluffily express theod|
-1088|181|2|3|5|5405.90|0.03|0.07|A|F|1992-07-01|1992-07-25|1992-07-02|NONE|AIR|refully ironic packages. r|
-1088|124|5|4|3|3072.36|0.09|0.03|A|F|1992-06-15|1992-08-02|1992-06-18|DELIVER IN PERSON|MAIL|pecial theodolites |
-1089|151|3|1|47|49404.05|0.05|0.06|N|O|1996-06-26|1996-06-25|1996-07-11|NONE|TRUCK|aggle furiously among the bravely eve|
-1089|50|7|2|35|33251.75|0.03|0.00|N|O|1996-08-14|1996-07-10|1996-08-26|NONE|TRUCK|ly express deposits haggle|
-1089|26|7|3|23|21298.46|0.10|0.05|N|O|1996-06-24|1996-07-25|1996-07-20|DELIVER IN PERSON|AIR|g dolphins. deposits integrate. s|
-1089|141|10|4|1|1041.14|0.01|0.03|N|O|1996-07-08|1996-07-07|1996-07-17|COLLECT COD|RAIL|n courts among the caref|
-1090|22|3|1|5|4610.10|0.02|0.05|N|O|1998-02-19|1997-12-25|1998-02-24|DELIVER IN PERSON|AIR|s above the |
-1090|113|10|2|28|28367.08|0.08|0.08|N|O|1998-02-20|1998-01-03|1998-03-19|NONE|FOB|s cajole above the regular|
-1091|38|9|1|40|37521.20|0.10|0.06|N|O|1996-12-17|1996-10-14|1996-12-24|TAKE BACK RETURN|REG AIR|platelets. regular packag|
-1092|184|5|1|48|52040.64|0.04|0.04|N|O|1995-06-25|1995-04-06|1995-07-18|DELIVER IN PERSON|AIR|unusual accounts. fluffi|
-1092|153|5|2|1|1053.15|0.01|0.06|A|F|1995-03-10|1995-04-21|1995-04-06|COLLECT COD|RAIL|lent, pending requests-- requests nag accor|
-1092|161|8|3|28|29712.48|0.05|0.08|R|F|1995-04-08|1995-05-01|1995-05-02|DELIVER IN PERSON|FOB|affix carefully. u|
-1092|86|7|4|2|1972.16|0.05|0.07|R|F|1995-04-09|1995-05-12|1995-05-03|TAKE BACK RETURN|TRUCK|ans. slyly eve|
-1093|87|8|1|7|6909.56|0.04|0.02|N|O|1997-11-24|1997-09-23|1997-11-25|TAKE BACK RETURN|SHIP|bold deposits. blithely ironic depos|
-1093|177|5|2|37|39855.29|0.08|0.04|N|O|1997-11-06|1997-10-08|1997-11-22|COLLECT COD|FOB|le furiously across the carefully sp|
-1093|61|2|3|34|32676.04|0.01|0.06|N|O|1997-11-07|1997-09-06|1997-11-28|TAKE BACK RETURN|REG AIR|sits. express accounts play carefully. bol|
-1094|115|6|1|9|9135.99|0.07|0.06|N|O|1997-12-28|1998-03-16|1998-01-18|DELIVER IN PERSON|AIR|as. slyly pe|
-1095|137|3|1|33|34225.29|0.01|0.02|N|O|1995-10-03|1995-09-22|1995-10-13|NONE|MAIL|slyly around the iron|
-1095|136|2|2|24|24867.12|0.04|0.06|N|O|1995-08-24|1995-10-20|1995-09-09|COLLECT COD|TRUCK|packages nod furiously above the carefully |
-1095|156|4|3|13|13729.95|0.06|0.01|N|O|1995-08-24|1995-10-19|1995-09-02|TAKE BACK RETURN|REG AIR|ously even accounts. slyly bold a|
-1095|135|1|4|28|28983.64|0.08|0.03|N|O|1995-09-20|1995-11-18|1995-10-02|DELIVER IN PERSON|SHIP| regular pac|
-1095|112|2|5|40|40484.40|0.09|0.03|N|O|1995-10-18|1995-11-14|1995-11-09|NONE|MAIL| bold accounts haggle slyly furiously even|
-1095|181|2|6|37|40003.66|0.07|0.08|N|O|1995-10-04|1995-11-13|1995-10-12|NONE|SHIP|. quickly even dolphins sle|
-1120|178|8|1|10|10781.70|0.08|0.05|N|O|1997-12-17|1998-01-21|1997-12-23|DELIVER IN PERSON|MAIL|dependencies. blithel|
-1120|20|1|2|49|45080.98|0.01|0.07|N|O|1998-01-03|1998-02-02|1998-01-09|TAKE BACK RETURN|RAIL|heodolites. quick re|
-1120|76|6|3|21|20497.47|0.06|0.01|N|O|1998-01-11|1998-02-04|1998-01-19|COLLECT COD|REG AIR|s: fluffily even packages c|
-1120|46|9|4|22|20812.88|0.09|0.08|N|O|1997-11-15|1998-01-25|1997-12-07|TAKE BACK RETURN|REG AIR|ons. slyly silent requests sleep silent|
-1120|83|4|5|10|9830.80|0.07|0.08|N|O|1997-11-10|1998-02-01|1997-11-28|TAKE BACK RETURN|AIR|ages haggle furiously |
-1121|168|3|1|42|44862.72|0.04|0.05|N|O|1997-03-05|1997-03-18|1997-03-14|DELIVER IN PERSON|SHIP|nts are slyly special packages. f|
-1121|161|10|2|27|28651.32|0.08|0.00|N|O|1997-05-08|1997-03-28|1997-05-14|NONE|MAIL|ly ironic accounts cajole slyly abou|
-1121|157|5|3|10|10571.50|0.00|0.04|N|O|1997-04-17|1997-03-18|1997-05-02|TAKE BACK RETURN|RAIL|dencies. quickly regular theodolites n|
-1121|166|1|4|29|30918.64|0.02|0.01|N|O|1997-03-07|1997-04-02|1997-04-01|DELIVER IN PERSON|REG AIR| use furiously. quickly silent package|
-1121|30|9|5|47|43711.41|0.09|0.03|N|O|1997-04-27|1997-03-28|1997-05-14|COLLECT COD|FOB|ly idle, i|
-1121|200|1|6|50|55010.00|0.06|0.03|N|O|1997-04-21|1997-02-16|1997-04-25|NONE|TRUCK|odolites. slyly even accounts|
-1121|80|8|7|37|36262.96|0.06|0.01|N|O|1997-02-27|1997-03-04|1997-03-02|COLLECT COD|RAIL|special packages. fluffily final requests s|
-1122|92|6|1|8|7936.72|0.10|0.06|N|O|1997-02-02|1997-04-03|1997-02-22|TAKE BACK RETURN|RAIL|c foxes are along the slyly r|
-1122|182|3|2|29|31383.22|0.05|0.04|N|O|1997-05-07|1997-04-07|1997-05-15|COLLECT COD|SHIP|ptotes. quickl|
-1122|147|6|3|25|26178.50|0.09|0.01|N|O|1997-03-21|1997-03-03|1997-04-07|TAKE BACK RETURN|RAIL|d furiously. pinto |
-1122|106|9|4|40|40244.00|0.08|0.08|N|O|1997-02-07|1997-03-25|1997-02-25|NONE|REG AIR|packages sleep after the asym|
-1122|151|2|5|15|15767.25|0.05|0.03|N|O|1997-04-15|1997-03-15|1997-05-07|COLLECT COD|SHIP|olve blithely regular, |
-1122|162|7|6|24|25491.84|0.04|0.01|N|O|1997-03-08|1997-02-20|1997-04-05|NONE|RAIL|blithely requests. slyly pending r|
-1122|1|6|7|38|34238.00|0.00|0.08|N|O|1997-01-23|1997-04-02|1997-02-16|NONE|TRUCK|t theodolites sleep. even, ironic|
-1123|12|2|1|10|9120.10|0.05|0.08|N|O|1996-11-12|1996-10-04|1996-11-30|NONE|MAIL|ckages are above the depths. slyly ir|
-1123|178|8|2|39|42048.63|0.03|0.08|N|O|1996-08-25|1996-10-21|1996-09-04|DELIVER IN PERSON|REG AIR|rding to the furiously ironic requests: r|
-1123|101|4|3|38|38041.80|0.03|0.08|N|O|1996-09-23|1996-10-04|1996-09-27|DELIVER IN PERSON|FOB| blithely carefully unusual reques|
-1124|198|2|1|1|1098.19|0.09|0.08|N|O|1998-10-06|1998-10-02|1998-10-30|NONE|REG AIR| instructions cajole qu|
-1124|6|1|2|13|11778.00|0.05|0.04|N|O|1998-09-05|1998-10-03|1998-09-30|DELIVER IN PERSON|SHIP|t the slyly |
-1124|93|5|3|35|34758.15|0.10|0.05|N|O|1998-11-25|1998-10-08|1998-12-25|TAKE BACK RETURN|AIR|ut the slyly bold pinto beans; fi|
-1124|50|1|4|25|23751.25|0.08|0.05|N|O|1998-08-05|1998-10-14|1998-08-11|NONE|MAIL|ggle slyly according|
-1124|75|5|5|33|32177.31|0.05|0.04|N|O|1998-10-19|1998-09-17|1998-10-26|TAKE BACK RETURN|SHIP|eposits sleep slyly. stealthily f|
-1124|27|6|6|43|39861.86|0.01|0.03|N|O|1998-09-19|1998-10-28|1998-10-10|COLLECT COD|MAIL|across the |
-1124|95|6|7|1|995.09|0.09|0.01|N|O|1998-10-07|1998-08-31|1998-10-12|NONE|TRUCK|ly bold accou|
-1125|133|4|1|4|4132.52|0.08|0.02|A|F|1994-12-10|1994-12-28|1994-12-30|NONE|MAIL| quickly express packages a|
-1125|138|9|2|24|24915.12|0.10|0.03|R|F|1995-01-31|1994-12-02|1995-02-20|COLLECT COD|AIR|es about the slyly s|
-1125|122|7|3|26|26575.12|0.05|0.04|A|F|1995-02-24|1995-01-18|1995-03-05|COLLECT COD|TRUCK|l instruction|
-1125|98|1|4|29|28944.61|0.06|0.00|A|F|1994-11-29|1994-12-20|1994-12-10|DELIVER IN PERSON|RAIL| platelets wake against the carefully i|
-1126|36|2|1|44|41185.32|0.08|0.03|N|O|1998-05-07|1998-04-02|1998-05-29|NONE|TRUCK|es. carefully special|
-1126|58|3|2|7|6706.35|0.06|0.01|N|O|1998-05-02|1998-03-22|1998-05-21|COLLECT COD|MAIL|ons. final, unusual|
-1126|147|10|3|14|14659.96|0.07|0.07|N|O|1998-04-17|1998-04-15|1998-05-12|DELIVER IN PERSON|TRUCK|nstructions. blithe|
-1127|43|10|1|35|33006.40|0.02|0.03|N|O|1995-11-25|1995-11-03|1995-12-17|NONE|TRUCK|l instructions boost blithely according |
-1127|110|5|2|38|38384.18|0.09|0.05|N|O|1995-11-07|1995-11-11|1995-11-26|DELIVER IN PERSON|RAIL|. never final packages boost acro|
-1127|20|1|3|29|26680.58|0.09|0.07|N|O|1995-09-20|1995-11-21|1995-10-11|DELIVER IN PERSON|REG AIR|y. blithely r|
-1127|175|6|4|7|7526.19|0.07|0.05|N|O|1995-11-05|1995-11-02|1995-11-11|DELIVER IN PERSON|FOB| idly pending pains |
-1152|9|10|1|23|20907.00|0.06|0.04|A|F|1994-10-14|1994-10-22|1994-10-21|DELIVER IN PERSON|MAIL|equests alongside of the unusual |
-1152|100|2|2|25|25002.50|0.04|0.08|R|F|1994-10-20|1994-09-18|1994-10-28|DELIVER IN PERSON|REG AIR|efully ironic accounts. sly instructions wa|
-1152|42|9|3|6|5652.24|0.07|0.03|A|F|1994-12-07|1994-11-05|1994-12-25|DELIVER IN PERSON|FOB|p furiously; packages above th|
-1153|86|7|1|15|14791.20|0.00|0.08|N|O|1996-04-24|1996-07-17|1996-04-29|TAKE BACK RETURN|SHIP|uctions boost fluffily according to|
-1153|169|8|2|50|53458.00|0.00|0.07|N|O|1996-06-27|1996-07-13|1996-07-05|COLLECT COD|REG AIR|ronic asymptotes nag slyly. |
-1153|44|5|3|25|23601.00|0.00|0.05|N|O|1996-06-18|1996-06-28|1996-07-09|NONE|TRUCK| theodolites|
-1153|92|3|4|43|42659.87|0.01|0.00|N|O|1996-06-09|1996-06-01|1996-07-04|DELIVER IN PERSON|MAIL|special instructions are. unusual, final du|
-1153|142|5|5|45|46896.30|0.00|0.02|N|O|1996-06-18|1996-06-20|1996-07-03|TAKE BACK RETURN|AIR|oss the ex|
-1153|136|7|6|26|26939.38|0.02|0.03|N|O|1996-08-16|1996-07-12|1996-09-08|NONE|MAIL|kages haggle carefully. f|
-1153|192|4|7|5|5460.95|0.02|0.03|N|O|1996-05-03|1996-06-12|1996-05-28|TAKE BACK RETURN|FOB|special excuses promi|
-1154|143|10|1|31|32337.34|0.06|0.06|A|F|1992-04-17|1992-04-26|1992-05-17|COLLECT COD|AIR|ithely. final, blithe |
-1154|148|7|2|50|52407.00|0.07|0.06|A|F|1992-04-22|1992-04-21|1992-05-01|NONE|TRUCK|ove the furiously bold Tires|
-1154|97|1|3|5|4985.45|0.09|0.04|A|F|1992-06-07|1992-05-07|1992-07-05|DELIVER IN PERSON|MAIL|the furiously |
-1154|1|2|4|35|31535.00|0.00|0.07|A|F|1992-03-30|1992-04-02|1992-04-21|DELIVER IN PERSON|TRUCK|the carefully regular pinto beans boost|
-1154|36|2|5|18|16848.54|0.02|0.03|A|F|1992-02-26|1992-03-24|1992-03-20|TAKE BACK RETURN|REG AIR|y regular excuses cajole blithely. fi|
-1154|196|8|6|50|54809.50|0.06|0.03|A|F|1992-03-04|1992-04-01|1992-04-01|TAKE BACK RETURN|TRUCK| even, special |
-1155|70|1|1|4|3880.28|0.09|0.05|N|O|1997-10-19|1997-12-09|1997-11-02|DELIVER IN PERSON|SHIP|ic foxes according to the carefully final |
-1155|196|9|2|39|42751.41|0.08|0.05|N|O|1998-01-29|1998-01-03|1998-02-01|COLLECT COD|TRUCK|ckly final pinto beans was.|
-1155|147|4|3|23|24084.22|0.08|0.03|N|O|1997-11-24|1997-11-28|1997-12-06|DELIVER IN PERSON|FOB|ly unusual packages. iro|
-1155|140|1|4|12|12481.68|0.01|0.06|N|O|1997-11-01|1998-01-03|1997-11-19|DELIVER IN PERSON|RAIL|packages do|
-1155|5|2|5|49|44345.00|0.04|0.08|N|O|1997-12-07|1997-12-30|1997-12-08|NONE|AIR|ccounts are alongside of t|
-1156|87|8|1|15|14806.20|0.07|0.06|N|O|1996-12-21|1997-01-03|1997-01-10|TAKE BACK RETURN|AIR|the furiously pen|
-1156|33|4|2|21|19593.63|0.02|0.08|N|O|1996-11-07|1997-01-14|1996-12-03|NONE|AIR|dolphins. fluffily ironic packages sleep re|
-1156|12|2|3|29|26448.29|0.09|0.06|N|O|1997-01-24|1996-12-26|1997-02-04|DELIVER IN PERSON|TRUCK|ts sleep sly|
-1156|172|3|4|42|45031.14|0.02|0.00|N|O|1997-01-18|1997-01-12|1997-02-13|NONE|REG AIR|s. quickly bold pains are|
-1156|74|4|5|49|47729.43|0.04|0.01|N|O|1996-11-16|1996-12-02|1996-12-05|COLLECT COD|AIR|ithely unusual in|
-1156|195|9|6|42|45997.98|0.02|0.06|N|O|1997-01-27|1997-01-09|1997-01-28|DELIVER IN PERSON|MAIL|even requests boost ironic deposits. pe|
-1156|47|6|7|20|18940.80|0.08|0.07|N|O|1997-01-01|1997-01-06|1997-01-16|COLLECT COD|MAIL|deposits sleep bravel|
-1157|49|2|1|16|15184.64|0.06|0.00|N|O|1998-04-12|1998-03-09|1998-04-23|DELIVER IN PERSON|MAIL|tions hang|
-1157|83|4|2|4|3932.32|0.10|0.05|N|O|1998-02-24|1998-03-30|1998-03-24|DELIVER IN PERSON|SHIP|ounts. ironic deposits|
-1157|48|7|3|8|7584.32|0.02|0.00|N|O|1998-03-25|1998-03-16|1998-03-29|NONE|REG AIR|blithely even pa|
-1157|77|8|4|46|44945.22|0.07|0.08|N|O|1998-04-19|1998-03-13|1998-04-23|NONE|FOB|slyly regular excuses. accounts|
-1157|160|5|5|14|14842.24|0.03|0.03|N|O|1998-04-17|1998-03-03|1998-05-01|NONE|FOB|theodolites. fluffily re|
-1158|45|2|1|5|4725.20|0.02|0.04|N|O|1996-10-20|1996-07-30|1996-11-14|COLLECT COD|AIR|symptotes along the care|
-1158|157|9|2|23|24314.45|0.00|0.08|N|O|1996-10-21|1996-08-19|1996-10-31|COLLECT COD|MAIL|ularly ironic requests use care|
-1159|109|10|1|39|39354.90|0.01|0.00|A|F|1992-11-20|1992-10-28|1992-12-18|TAKE BACK RETURN|FOB| blithely express reques|
-1159|96|9|2|7|6972.63|0.08|0.00|A|F|1992-11-25|1992-10-27|1992-12-20|NONE|AIR|olve somet|
-1159|98|10|3|11|10978.99|0.10|0.03|R|F|1992-12-09|1992-12-07|1992-12-18|DELIVER IN PERSON|MAIL|h furiousl|
-1184|47|4|1|27|25570.08|0.01|0.00|N|O|1998-01-10|1997-12-02|1998-02-06|TAKE BACK RETURN|REG AIR|s wake fluffily. fl|
-1184|147|10|2|4|4188.56|0.04|0.03|N|O|1997-12-25|1998-01-24|1998-01-18|DELIVER IN PERSON|RAIL| express packages. slyly expres|
-1184|164|5|3|7|7449.12|0.05|0.00|N|O|1998-02-14|1998-01-06|1998-03-11|COLLECT COD|TRUCK|ckly warthogs. blithely bold foxes hag|
-1184|126|9|4|3|3078.36|0.02|0.05|N|O|1998-01-15|1997-12-19|1998-02-02|NONE|REG AIR|ar packages. final packages cajol|
-1185|72|1|1|8|7776.56|0.01|0.06|A|F|1992-12-05|1992-10-05|1992-12-28|DELIVER IN PERSON|MAIL|ely according to the furiously regular r|
-1185|31|2|2|28|26068.84|0.07|0.06|A|F|1992-09-24|1992-10-07|1992-10-10|DELIVER IN PERSON|REG AIR|ke. slyly regular t|
-1185|190|1|3|12|13082.28|0.05|0.06|R|F|1992-10-12|1992-09-26|1992-11-11|NONE|REG AIR|instructions. daringly pend|
-1186|3|4|1|28|25284.00|0.08|0.07|N|O|1996-12-08|1996-10-17|1996-12-15|TAKE BACK RETURN|TRUCK|ffily spec|
-1186|92|5|2|11|10912.99|0.07|0.05|N|O|1996-10-03|1996-10-21|1996-10-17|DELIVER IN PERSON|AIR|s haggle furiously; slyl|
-1186|101|2|3|20|20022.00|0.07|0.07|N|O|1996-08-20|1996-10-23|1996-09-05|COLLECT COD|FOB|ely alongside of the blithel|
-1186|106|7|4|27|27164.70|0.06|0.04|N|O|1996-10-08|1996-11-06|1996-10-09|TAKE BACK RETURN|SHIP|accounts. express, e|
-1187|178|6|1|29|31266.93|0.01|0.04|R|F|1992-12-10|1993-02-09|1992-12-29|TAKE BACK RETURN|RAIL|riously express ac|
-1187|131|7|2|15|15466.95|0.03|0.04|A|F|1992-12-22|1993-01-13|1993-01-01|NONE|TRUCK|ests. foxes wake. carefu|
-1187|78|8|3|40|39122.80|0.08|0.06|R|F|1993-03-05|1992-12-31|1993-03-12|NONE|TRUCK|ar, brave deposits nag blithe|
-1188|115|9|1|2|2030.22|0.00|0.04|N|O|1996-05-22|1996-05-23|1996-06-06|COLLECT COD|RAIL|its breach blit|
-1188|113|4|2|9|9117.99|0.01|0.08|N|O|1996-08-04|1996-06-04|1996-08-19|NONE|REG AIR|ow carefully ironic d|
-1188|179|10|3|41|44245.97|0.07|0.04|N|O|1996-06-29|1996-05-21|1996-07-21|TAKE BACK RETURN|TRUCK|althy packages. fluffily unusual ideas h|
-1189|51|2|1|23|21874.15|0.06|0.00|R|F|1994-07-25|1994-06-07|1994-08-02|COLLECT COD|FOB|s. fluffy Tiresias run quickly. bra|
-1189|105|2|2|32|32163.20|0.09|0.02|R|F|1994-05-06|1994-07-03|1994-05-15|TAKE BACK RETURN|FOB|e regular deposits. quickly quiet deposi|
-1189|57|5|3|22|21055.10|0.05|0.03|R|F|1994-06-09|1994-06-29|1994-06-23|DELIVER IN PERSON|TRUCK|quickly unusual platelets lose forges. ca|
-1190|84|5|1|32|31490.56|0.07|0.06|N|O|1997-05-08|1997-04-17|1997-06-01|COLLECT COD|FOB|y final packages? slyly even|
-1191|49|6|1|29|27522.16|0.00|0.04|N|O|1996-01-24|1996-01-28|1996-02-17|COLLECT COD|AIR| regular pin|
-1216|97|1|1|8|7976.72|0.03|0.04|R|F|1993-02-01|1993-03-06|1993-02-08|TAKE BACK RETURN|TRUCK| of the carefully express|
-1216|75|3|2|48|46803.36|0.10|0.01|R|F|1993-01-17|1993-02-01|1993-02-13|COLLECT COD|SHIP|symptotes use against th|
-1216|42|3|3|18|16956.72|0.00|0.03|A|F|1993-01-20|1993-01-28|1993-02-02|COLLECT COD|MAIL|y final packages nod |
-1217|60|5|1|45|43202.70|0.07|0.02|A|F|1992-07-01|1992-06-23|1992-07-06|COLLECT COD|AIR|riously close ideas|
-1218|140|6|1|16|16642.24|0.04|0.07|A|F|1994-06-26|1994-08-07|1994-06-30|TAKE BACK RETURN|FOB|ven realms be|
-1218|94|6|2|41|40757.69|0.06|0.06|R|F|1994-08-04|1994-08-05|1994-08-11|TAKE BACK RETURN|SHIP|dolphins. theodolites beyond th|
-1218|48|7|3|44|41713.76|0.07|0.06|A|F|1994-10-05|1994-09-03|1994-10-30|COLLECT COD|TRUCK|thely ironic accounts wake slyly|
-1218|42|9|4|1|942.04|0.01|0.08|R|F|1994-09-15|1994-09-07|1994-10-03|COLLECT COD|TRUCK|press furio|
-1219|132|3|1|6|6192.78|0.08|0.04|N|O|1995-11-13|1995-12-24|1995-11-18|NONE|MAIL|pecial, ironic requ|
-1219|129|4|2|4|4116.48|0.01|0.04|N|O|1995-11-24|1995-11-22|1995-12-07|TAKE BACK RETURN|SHIP|lly quick requests. blithely even h|
-1220|169|4|1|25|26729.00|0.10|0.03|N|O|1996-10-15|1996-11-07|1996-11-06|COLLECT COD|REG AIR| regular orbi|
-1220|160|5|2|36|38165.76|0.01|0.02|N|O|1996-12-10|1996-11-14|1997-01-07|COLLECT COD|SHIP|ar packages. blithely final acc|
-1220|37|8|3|3|2811.09|0.08|0.06|N|O|1996-09-06|1996-11-03|1996-09-10|COLLECT COD|REG AIR| final theodolites. blithely silent |
-1220|6|1|4|36|32616.00|0.07|0.03|N|O|1996-12-12|1996-10-03|1996-12-15|TAKE BACK RETURN|TRUCK|unusual, silent pinto beans aga|
-1220|49|2|5|25|23726.00|0.03|0.08|N|O|1996-09-11|1996-10-09|1996-09-25|DELIVER IN PERSON|RAIL|packages affi|
-1221|81|2|1|43|42186.44|0.05|0.05|R|F|1992-06-22|1992-07-15|1992-07-20|DELIVER IN PERSON|FOB|y slyly above the slyly unusual ideas|
-1221|170|1|2|12|12842.04|0.00|0.08|R|F|1992-08-07|1992-06-24|1992-08-13|COLLECT COD|AIR|yly ironic |
-1221|69|6|3|3|2907.18|0.10|0.08|R|F|1992-07-01|1992-06-04|1992-07-27|COLLECT COD|TRUCK|ing to the fluffily|
-1221|120|10|4|41|41824.92|0.06|0.02|A|F|1992-04-28|1992-07-02|1992-05-19|NONE|RAIL|ns. bold deposit|
-1221|108|1|5|13|13105.30|0.10|0.00|R|F|1992-08-01|1992-06-29|1992-08-27|TAKE BACK RETURN|AIR|ajole furiously. blithely expres|
-1221|85|6|6|7|6895.56|0.08|0.06|A|F|1992-06-27|1992-06-16|1992-07-23|TAKE BACK RETURN|RAIL|xpress accounts |
-1222|72|10|1|12|11664.84|0.09|0.02|A|F|1993-02-12|1993-03-14|1993-03-12|TAKE BACK RETURN|RAIL|s print permanently unusual packages. |
-1222|159|7|2|12|12709.80|0.08|0.01|A|F|1993-05-05|1993-03-27|1993-05-18|TAKE BACK RETURN|REG AIR| furiously bold instructions|
-1222|8|1|3|26|23608.00|0.02|0.08|R|F|1993-02-13|1993-03-20|1993-02-22|TAKE BACK RETURN|MAIL|, even accounts are ironic|
-1223|100|1|1|28|28002.80|0.10|0.06|N|O|1996-08-07|1996-07-24|1996-08-13|TAKE BACK RETURN|MAIL| quickly ironic requests. furious|
-1248|164|5|1|45|47887.20|0.00|0.08|A|F|1992-04-17|1992-03-31|1992-05-13|NONE|RAIL|ter the pending pl|
-1248|151|9|2|37|38892.55|0.06|0.06|R|F|1992-01-26|1992-02-05|1992-02-13|COLLECT COD|TRUCK|. final requests integrate quickly. blit|
-1248|56|8|3|26|24857.30|0.09|0.06|A|F|1992-01-16|1992-03-01|1992-02-06|TAKE BACK RETURN|AIR| ironic dependen|
-1248|156|7|4|49|51751.35|0.02|0.01|A|F|1992-04-24|1992-02-18|1992-05-03|TAKE BACK RETURN|AIR|beans run quickly according to the carefu|
-1248|122|7|5|20|20442.40|0.08|0.00|A|F|1992-03-12|1992-03-23|1992-04-07|TAKE BACK RETURN|AIR|nal foxes cajole carefully slyl|
-1248|62|9|6|30|28861.80|0.10|0.01|R|F|1992-02-01|1992-03-24|1992-02-08|TAKE BACK RETURN|MAIL|fily special foxes kindle am|
-1249|59|4|1|49|46993.45|0.07|0.05|A|F|1994-03-03|1994-02-28|1994-03-08|NONE|RAIL|ffily express theodo|
-1250|2|3|1|15|13530.00|0.10|0.06|A|F|1992-11-05|1992-12-17|1992-12-03|TAKE BACK RETURN|SHIP| regular, i|
-1251|4|5|1|37|33448.00|0.08|0.08|N|O|1997-12-21|1998-01-12|1997-12-26|COLLECT COD|AIR|. furiously|
-1251|78|9|2|36|35210.52|0.07|0.04|N|O|1997-11-29|1998-01-07|1997-12-03|TAKE BACK RETURN|RAIL|y ironic Tiresias are slyly furio|
-1251|99|3|3|37|36966.33|0.09|0.02|N|O|1998-01-11|1997-12-01|1998-01-23|DELIVER IN PERSON|RAIL|finally bold requests|
-1251|150|9|4|7|7351.05|0.07|0.00|N|O|1998-01-08|1997-12-27|1998-01-18|COLLECT COD|MAIL|riously pe|
-1251|188|9|5|1|1088.18|0.02|0.03|N|O|1997-12-08|1998-01-06|1998-01-01|DELIVER IN PERSON|REG AIR| use quickly final packages. iron|
-1252|87|8|1|13|12832.04|0.10|0.01|N|O|1997-09-07|1997-09-12|1997-10-01|COLLECT COD|REG AIR|sts dazzle|
-1252|111|8|2|27|27299.97|0.00|0.08|N|O|1997-10-22|1997-10-10|1997-11-10|TAKE BACK RETURN|REG AIR|packages hag|
-1252|40|1|3|19|17860.76|0.07|0.02|N|O|1997-10-13|1997-10-23|1997-10-18|NONE|AIR|ts wake carefully-- packages sleep. quick |
-1252|92|4|4|11|10912.99|0.10|0.01|N|O|1997-10-16|1997-09-22|1997-10-28|COLLECT COD|AIR|s are. slyly final requests among the|
-1252|79|10|5|26|25455.82|0.05|0.05|N|O|1997-08-05|1997-10-24|1997-08-07|DELIVER IN PERSON|SHIP|onic pinto beans haggle furiously |
-1253|180|8|1|14|15122.52|0.00|0.06|R|F|1993-04-03|1993-04-16|1993-04-27|TAKE BACK RETURN|MAIL|lar foxes sleep furiously final, final pack|
-1253|54|9|2|13|12402.65|0.01|0.06|A|F|1993-03-05|1993-04-26|1993-03-08|DELIVER IN PERSON|FOB|al packages|
-1253|70|1|3|22|21341.54|0.05|0.06|A|F|1993-02-23|1993-04-06|1993-03-07|TAKE BACK RETURN|SHIP|telets cajole alongside of the final reques|
-1253|176|5|4|23|24751.91|0.09|0.02|R|F|1993-04-18|1993-04-18|1993-05-07|COLLECT COD|FOB| the slyly silent re|
-1253|114|8|5|19|19268.09|0.05|0.05|A|F|1993-04-01|1993-04-22|1993-04-14|TAKE BACK RETURN|AIR|al pinto bea|
-1254|193|5|1|6|6559.14|0.08|0.01|N|O|1996-02-02|1996-03-21|1996-02-29|NONE|REG AIR|lithely even deposits eat!|
-1254|200|3|2|47|51709.40|0.05|0.06|N|O|1996-03-07|1996-02-20|1996-04-05|COLLECT COD|MAIL| platelets cajol|
-1254|135|6|3|35|36229.55|0.05|0.06|N|O|1996-04-08|1996-02-29|1996-04-18|DELIVER IN PERSON|FOB|ckages boost. furious warhorses cajole|
-1255|192|4|1|12|13106.28|0.00|0.02|A|F|1994-08-17|1994-06-29|1994-09-04|TAKE BACK RETURN|REG AIR| regular, express accounts are |
-1255|194|8|2|46|50332.74|0.07|0.05|R|F|1994-07-06|1994-07-14|1994-08-05|NONE|MAIL|ons nag qui|
-1280|129|8|1|17|17495.04|0.01|0.01|A|F|1993-02-04|1993-04-10|1993-02-07|NONE|FOB|ructions integrate across the th|
-1280|189|10|2|6|6535.08|0.05|0.06|R|F|1993-03-30|1993-02-16|1993-04-18|DELIVER IN PERSON|AIR|gular deposits |
-1280|33|4|3|13|12129.39|0.03|0.02|R|F|1993-03-06|1993-03-11|1993-03-18|DELIVER IN PERSON|TRUCK|blithely final accounts use evenly |
-1280|175|3|4|5|5375.85|0.06|0.03|R|F|1993-02-03|1993-02-11|1993-02-23|DELIVER IN PERSON|AIR|beans haggle. quickly bold instructions h|
-1280|52|10|5|24|22849.20|0.07|0.02|R|F|1993-03-20|1993-03-01|1993-04-09|COLLECT COD|RAIL|y pending orbits boost after the slyly|
-1280|66|3|6|9|8694.54|0.00|0.05|R|F|1993-04-18|1993-03-28|1993-05-04|DELIVER IN PERSON|FOB|usual accou|
-1280|92|6|7|19|18849.71|0.02|0.06|A|F|1993-02-07|1993-02-28|1993-02-12|NONE|TRUCK|lyly along the furiously regular |
-1281|138|4|1|33|34258.29|0.07|0.08|R|F|1995-02-01|1995-01-18|1995-03-03|NONE|REG AIR|dencies. thinly final pinto beans wake|
-1281|7|2|2|37|33559.00|0.08|0.03|A|F|1995-03-19|1995-02-02|1995-03-27|NONE|AIR|ounts detect|
-1281|94|7|3|2|1988.18|0.05|0.06|A|F|1994-12-27|1995-01-26|1995-01-21|TAKE BACK RETURN|FOB|ly unusual requests. final reques|
-1281|154|2|4|38|40057.70|0.04|0.06|R|F|1995-03-28|1995-01-11|1995-04-14|TAKE BACK RETURN|MAIL| ideas-- blithely regular|
-1281|152|10|5|13|13677.95|0.03|0.07|A|F|1995-02-06|1995-02-13|1995-02-18|DELIVER IN PERSON|TRUCK|fully final platelets wa|
-1281|50|9|6|4|3800.20|0.07|0.04|R|F|1995-03-15|1995-02-21|1995-03-20|NONE|SHIP|ggle against the even requests. requests |
-1281|78|6|7|43|42057.01|0.10|0.02|R|F|1995-01-28|1995-02-08|1995-02-10|DELIVER IN PERSON|AIR|final accounts. final packages slee|
-1282|23|4|1|14|12922.28|0.04|0.02|R|F|1992-06-29|1992-04-05|1992-07-21|TAKE BACK RETURN|REG AIR|ecial deposit|
-1282|30|9|2|10|9300.30|0.09|0.06|R|F|1992-04-10|1992-04-16|1992-05-01|DELIVER IN PERSON|SHIP|r theodolite|
-1282|160|1|3|19|20143.04|0.01|0.03|R|F|1992-05-07|1992-04-07|1992-05-13|NONE|RAIL|ts x-ray across the furi|
-1282|59|10|4|19|18221.95|0.00|0.05|A|F|1992-06-20|1992-04-17|1992-07-05|DELIVER IN PERSON|REG AIR|nto beans. carefully close theodo|
-1283|93|7|1|47|46675.23|0.05|0.03|N|O|1996-10-21|1996-10-29|1996-11-12|DELIVER IN PERSON|TRUCK|even instructions boost slyly blithely |
-1283|106|1|2|1|1006.10|0.00|0.08|N|O|1996-10-07|1996-10-12|1996-10-08|NONE|RAIL|d the sauternes. slyly ev|
-1283|138|4|3|18|18686.34|0.02|0.01|N|O|1996-10-14|1996-11-07|1996-10-22|DELIVER IN PERSON|AIR|equests use along the fluff|
-1283|192|4|4|40|43687.60|0.07|0.03|N|O|1996-11-09|1996-11-23|1996-11-28|NONE|MAIL|riously. even, ironic instructions after|
-1283|124|9|5|43|44037.16|0.01|0.04|N|O|1996-09-29|1996-11-19|1996-10-26|TAKE BACK RETURN|RAIL|requests sleep slyly about the |
-1283|8|5|6|30|27240.00|0.06|0.07|N|O|1996-11-22|1996-11-22|1996-12-15|COLLECT COD|TRUCK|t the fluffily|
-1283|197|8|7|21|23040.99|0.04|0.03|N|O|1996-09-12|1996-10-02|1996-10-12|NONE|REG AIR|fully regular |
-1284|178|7|1|49|52830.33|0.00|0.06|N|O|1996-04-11|1996-03-04|1996-04-16|NONE|MAIL|lar packages. special packages ac|
-1284|6|7|2|4|3624.00|0.07|0.06|N|O|1996-02-29|1996-02-11|1996-03-01|TAKE BACK RETURN|TRUCK| regular asymptotes. |
-1284|133|4|3|39|40292.07|0.08|0.00|N|O|1996-01-11|1996-02-07|1996-02-05|COLLECT COD|MAIL|even accoun|
-1284|59|10|4|1|959.05|0.01|0.07|N|O|1996-04-28|1996-04-02|1996-05-08|DELIVER IN PERSON|SHIP|al packages use carefully express de|
-1284|34|5|5|9|8406.27|0.05|0.06|N|O|1996-03-03|1996-03-19|1996-04-01|DELIVER IN PERSON|REG AIR|after the pending|
-1285|22|3|1|12|11064.24|0.00|0.06|A|F|1992-06-21|1992-08-16|1992-07-12|COLLECT COD|MAIL|ss foxes. blithe theodolites cajole slyly|
-1285|143|10|2|45|46941.30|0.01|0.02|R|F|1992-09-05|1992-08-08|1992-10-02|COLLECT COD|REG AIR| special requests haggle blithely.|
-1285|189|10|3|4|4356.72|0.09|0.06|A|F|1992-07-20|1992-08-17|1992-07-26|DELIVER IN PERSON|FOB|l packages sleep slyly quiet i|
-1285|188|9|4|39|42439.02|0.05|0.01|A|F|1992-09-15|1992-08-05|1992-10-05|DELIVER IN PERSON|TRUCK|uctions. car|
-1285|84|5|5|33|32474.64|0.00|0.08|R|F|1992-09-08|1992-08-25|1992-09-16|NONE|SHIP|ites affix|
-1286|178|9|1|49|52830.33|0.08|0.01|R|F|1993-06-24|1993-08-12|1993-06-26|DELIVER IN PERSON|SHIP|gged accoun|
-1286|49|6|2|48|45553.92|0.01|0.04|A|F|1993-07-11|1993-07-11|1993-08-01|COLLECT COD|TRUCK|unts alongs|
-1286|189|10|3|11|11980.98|0.03|0.04|R|F|1993-08-08|1993-07-30|1993-09-05|DELIVER IN PERSON|FOB| slyly even packages. requ|
-1286|184|5|4|37|40114.66|0.00|0.02|R|F|1993-05-27|1993-07-11|1993-06-01|COLLECT COD|SHIP|lyly ironic pinto beans cajole furiously s|
-1286|165|10|5|14|14912.24|0.00|0.01|R|F|1993-05-23|1993-08-09|1993-06-01|NONE|REG AIR|blithely bo|
-1286|146|5|6|41|42891.74|0.04|0.05|R|F|1993-08-02|1993-08-06|1993-08-07|TAKE BACK RETURN|FOB| the furiously expre|
-1287|174|3|1|35|37595.95|0.09|0.06|A|F|1994-09-07|1994-09-12|1994-09-30|TAKE BACK RETURN|FOB|s wake unusual grou|
-1287|95|8|2|10|9950.90|0.08|0.03|R|F|1994-07-08|1994-08-28|1994-07-10|TAKE BACK RETURN|RAIL|thely alongside of the unusual, ironic pa|
-1287|1|2|3|30|27030.00|0.00|0.07|R|F|1994-07-12|1994-09-23|1994-08-07|NONE|RAIL|ar packages. even, even|
-1287|62|7|4|10|9620.60|0.01|0.05|A|F|1994-09-03|1994-08-12|1994-09-16|TAKE BACK RETURN|REG AIR|ding, regular accounts|
-1287|179|8|5|21|22662.57|0.06|0.02|A|F|1994-10-06|1994-09-25|1994-10-16|TAKE BACK RETURN|TRUCK|y quickly bold theodoli|
-1287|21|10|6|26|23946.52|0.03|0.08|R|F|1994-10-03|1994-09-27|1994-10-30|DELIVER IN PERSON|RAIL|egular foxes. theodolites nag along t|
-1312|81|2|1|9|8829.72|0.04|0.08|R|F|1994-07-19|1994-06-29|1994-07-24|TAKE BACK RETURN|MAIL|. furiously |
-1312|136|7|2|28|29011.64|0.06|0.06|A|F|1994-09-09|1994-08-01|1994-10-02|TAKE BACK RETURN|FOB|uriously final frays should use quick|
-1312|173|1|3|18|19317.06|0.03|0.07|A|F|1994-09-13|1994-07-08|1994-09-22|TAKE BACK RETURN|MAIL|. slyly ironic|
-1313|52|4|1|48|45698.40|0.01|0.03|A|F|1994-12-20|1994-10-29|1995-01-07|COLLECT COD|MAIL|s are quick|
-1314|198|10|1|5|5490.95|0.03|0.01|A|F|1994-05-26|1994-08-06|1994-05-31|TAKE BACK RETURN|AIR|equests nag across the furious|
-1314|110|5|2|39|39394.29|0.01|0.03|R|F|1994-08-09|1994-06-14|1994-08-31|TAKE BACK RETURN|TRUCK| unusual accounts slee|
-1314|41|2|3|11|10351.44|0.01|0.04|A|F|1994-05-16|1994-07-30|1994-05-31|COLLECT COD|REG AIR|tegrate furious|
-1315|96|8|1|27|26894.43|0.01|0.03|N|O|1998-07-04|1998-06-13|1998-07-28|NONE|SHIP|latelets. fluffily ironic account|
-1315|16|6|2|15|13740.15|0.05|0.01|N|O|1998-07-12|1998-06-10|1998-08-07|COLLECT COD|AIR|. foxes integrate carefully special|
-1315|168|3|3|25|26704.00|0.01|0.08|N|O|1998-06-26|1998-06-10|1998-07-06|TAKE BACK RETURN|FOB|lites. unusual foxes affi|
-1315|161|6|4|19|20162.04|0.02|0.05|N|O|1998-07-05|1998-05-23|1998-08-04|TAKE BACK RETURN|SHIP|nal, regular warhorses about the fu|
-1315|159|7|5|32|33892.80|0.10|0.05|N|O|1998-03-30|1998-06-12|1998-04-25|NONE|SHIP|neath the final p|
-1316|127|6|1|46|47247.52|0.05|0.04|A|F|1994-01-13|1994-01-24|1994-02-03|COLLECT COD|TRUCK|ges haggle of the|
-1316|79|9|2|15|14686.05|0.02|0.01|R|F|1994-03-12|1994-03-02|1994-03-14|COLLECT COD|FOB|se. furiously final depo|
-1316|198|9|3|33|36240.27|0.10|0.06|R|F|1994-03-31|1994-01-23|1994-04-20|TAKE BACK RETURN|AIR|manently; blithely special deposits|
-1316|66|3|4|15|14490.90|0.00|0.06|R|F|1993-12-17|1994-02-04|1993-12-20|NONE|RAIL|fully express dugouts. furiously silent ide|
-1316|41|2|5|40|37641.60|0.01|0.03|R|F|1994-02-04|1994-02-09|1994-02-27|NONE|REG AIR|l dugouts. co|
-1316|4|7|6|7|6328.00|0.05|0.04|A|F|1993-12-09|1994-01-12|1993-12-30|TAKE BACK RETURN|MAIL|. furiously even accounts a|
-1316|163|8|7|8|8505.28|0.10|0.04|A|F|1994-03-26|1994-02-08|1994-04-19|NONE|SHIP|packages against the express requests wa|
-1317|134|5|1|34|35160.42|0.08|0.04|N|O|1995-08-13|1995-08-08|1995-09-10|COLLECT COD|RAIL|deposits boost thinly blithely final id|
-1317|160|2|2|7|7421.12|0.05|0.01|A|F|1995-06-08|1995-08-03|1995-06-16|TAKE BACK RETURN|SHIP| pinto beans according to the final, pend|
-1317|158|9|3|26|27511.90|0.01|0.02|N|O|1995-07-13|1995-06-26|1995-08-06|COLLECT COD|RAIL|leep along th|
-1317|106|3|4|35|35213.50|0.05|0.02|N|O|1995-07-16|1995-07-07|1995-07-22|TAKE BACK RETURN|FOB|r packages impress blithely car|
-1317|150|9|5|36|37805.40|0.02|0.00|N|O|1995-09-03|1995-07-06|1995-09-04|DELIVER IN PERSON|AIR| deposits. quic|
-1318|114|4|1|24|24338.64|0.08|0.06|N|O|1998-09-27|1998-09-15|1998-10-12|TAKE BACK RETURN|AIR|ual, unusual packages. fluffy, iro|
-1318|46|3|2|26|24597.04|0.01|0.03|N|O|1998-09-26|1998-08-09|1998-10-07|DELIVER IN PERSON|FOB|ly. regular, u|
-1318|129|4|3|31|31902.72|0.01|0.04|N|O|1998-08-25|1998-07-31|1998-08-31|COLLECT COD|AIR|ve the carefully expr|
-1319|61|8|1|21|20182.26|0.03|0.04|N|O|1996-10-05|1996-12-02|1996-10-28|COLLECT COD|FOB|s: carefully express |
-1319|37|8|2|12|11244.36|0.09|0.05|N|O|1996-11-05|1996-12-12|1996-11-29|DELIVER IN PERSON|TRUCK|packages integrate furiously. expres|
-1344|141|4|1|15|15617.10|0.10|0.07|A|F|1992-06-22|1992-06-24|1992-06-23|TAKE BACK RETURN|MAIL|rding to the blithely ironic theodolite|
-1344|190|1|2|29|31615.51|0.09|0.00|A|F|1992-07-17|1992-06-07|1992-07-21|NONE|REG AIR|ffily quiet foxes wake blithely. slyly |
-1345|198|9|1|49|53811.31|0.08|0.00|A|F|1992-12-27|1993-01-23|1993-01-06|NONE|FOB|sly. furiously final accounts are blithely |
-1345|12|9|2|37|33744.37|0.10|0.07|A|F|1992-11-27|1992-12-11|1992-12-07|COLLECT COD|FOB|e slyly express requests. ironic accounts c|
-1345|57|8|3|31|29668.55|0.08|0.07|R|F|1992-12-02|1992-12-29|1992-12-14|COLLECT COD|REG AIR|. slyly silent accounts sublat|
-1346|160|8|1|29|30744.64|0.07|0.05|A|F|1992-08-18|1992-09-15|1992-09-17|TAKE BACK RETURN|REG AIR|the pinto |
-1346|125|6|2|48|49205.76|0.06|0.03|A|F|1992-09-28|1992-07-22|1992-10-13|TAKE BACK RETURN|REG AIR| along the carefully spec|
-1346|54|5|3|13|12402.65|0.10|0.04|A|F|1992-07-22|1992-08-10|1992-08-06|NONE|SHIP|arefully brave deposits into the slyly iro|
-1346|124|5|4|6|6144.72|0.02|0.02|R|F|1992-09-13|1992-07-21|1992-09-27|TAKE BACK RETURN|AIR|inst the furiously final theodolites. caref|
-1346|187|8|5|30|32615.40|0.01|0.07|R|F|1992-10-01|1992-07-22|1992-10-24|NONE|SHIP| nag blithely. unusual, ru|
-1346|16|6|6|45|41220.45|0.02|0.04|A|F|1992-09-11|1992-08-06|1992-09-12|COLLECT COD|FOB|press deposits.|
-1347|81|2|1|45|44148.60|0.02|0.05|N|O|1997-08-24|1997-09-03|1997-09-08|COLLECT COD|AIR|ages wake around t|
-1347|143|6|2|34|35466.76|0.07|0.04|N|O|1997-06-25|1997-09-08|1997-07-24|COLLECT COD|FOB|r packages. f|
-1347|185|6|3|23|24959.14|0.03|0.04|N|O|1997-07-31|1997-08-25|1997-08-21|COLLECT COD|SHIP|ronic pinto beans. express reques|
-1347|113|7|4|28|28367.08|0.01|0.00|N|O|1997-07-30|1997-07-22|1997-08-18|TAKE BACK RETURN|FOB|foxes after the blithely special i|
-1347|65|6|5|9|8685.54|0.01|0.03|N|O|1997-08-28|1997-09-16|1997-09-26|DELIVER IN PERSON|AIR| detect blithely above the fina|
-1347|153|8|6|21|22116.15|0.06|0.04|N|O|1997-10-10|1997-08-16|1997-11-02|NONE|FOB|g pinto beans affix car|
-1347|51|3|7|10|9510.50|0.02|0.07|N|O|1997-07-04|1997-07-23|1997-07-05|DELIVER IN PERSON|SHIP|y ironic pin|
-1348|95|7|1|13|12936.17|0.01|0.01|N|O|1998-04-28|1998-06-05|1998-05-12|TAKE BACK RETURN|SHIP| blithely r|
-1348|22|5|2|41|37802.82|0.07|0.03|N|O|1998-05-02|1998-05-26|1998-05-09|COLLECT COD|RAIL|kages. platelets about the ca|
-1348|199|10|3|40|43967.60|0.07|0.05|N|O|1998-08-14|1998-07-10|1998-08-27|COLLECT COD|AIR|fter the regu|
-1348|98|1|4|2|1996.18|0.01|0.04|N|O|1998-05-30|1998-06-20|1998-06-05|COLLECT COD|MAIL|lly final packages use fluffily express ac|
-1349|181|2|1|1|1081.18|0.06|0.03|N|O|1998-01-07|1998-01-14|1998-02-03|COLLECT COD|REG AIR| express inst|
-1349|118|2|2|45|45814.95|0.03|0.02|N|O|1997-12-24|1998-01-17|1997-12-28|NONE|AIR| ironic, unusual deposits wake carefu|
-1350|54|9|1|21|20035.05|0.04|0.04|A|F|1993-12-17|1993-10-17|1993-12-25|COLLECT COD|REG AIR|lyly above the evenly |
-1350|44|5|2|32|30209.28|0.03|0.00|R|F|1993-11-18|1993-09-30|1993-12-16|COLLECT COD|MAIL|ic, final |
-1351|108|9|1|25|25202.50|0.06|0.04|N|O|1998-06-02|1998-05-25|1998-06-22|COLLECT COD|SHIP|iously regul|
-1376|169|8|1|22|23521.52|0.01|0.03|N|O|1997-08-05|1997-07-08|1997-09-03|NONE|REG AIR|inst the final, pending |
-1377|154|6|1|5|5270.75|0.06|0.05|N|O|1998-05-06|1998-07-08|1998-06-01|TAKE BACK RETURN|FOB| final, final grouches. accoun|
-1377|33|9|2|3|2799.09|0.10|0.04|N|O|1998-04-30|1998-07-02|1998-05-14|DELIVER IN PERSON|REG AIR|yly enticing requ|
-1377|84|5|3|26|25586.08|0.07|0.07|N|O|1998-05-28|1998-06-11|1998-06-25|COLLECT COD|SHIP|egular deposits. quickly regular acco|
-1377|121|4|4|39|39823.68|0.00|0.03|N|O|1998-07-27|1998-07-18|1998-08-13|DELIVER IN PERSON|SHIP|e ironic, regular requests. carefully |
-1377|33|9|5|19|17727.57|0.10|0.00|N|O|1998-06-20|1998-06-27|1998-07-20|NONE|AIR|ught to are bold foxes|
-1377|154|6|6|17|17920.55|0.03|0.04|N|O|1998-06-19|1998-07-20|1998-07-14|NONE|REG AIR|s must have to mold b|
-1378|197|10|1|34|37304.46|0.09|0.07|N|O|1996-07-08|1996-04-23|1996-07-09|COLLECT COD|RAIL|le furiously slyly final accounts. careful|
-1378|124|9|2|18|18434.16|0.05|0.02|N|O|1996-06-19|1996-05-16|1996-06-21|DELIVER IN PERSON|RAIL| theodolites. i|
-1378|73|4|3|11|10703.77|0.10|0.03|N|O|1996-06-07|1996-05-09|1996-07-05|COLLECT COD|TRUCK| blithely express hoc|
-1378|171|2|4|12|12854.04|0.02|0.06|N|O|1996-06-16|1996-05-23|1996-07-09|COLLECT COD|SHIP|notornis. b|
-1378|156|7|5|9|9505.35|0.06|0.05|N|O|1996-04-20|1996-04-13|1996-05-09|COLLECT COD|REG AIR|e carefully. carefully iron|
-1378|194|6|6|29|31731.51|0.05|0.05|N|O|1996-04-15|1996-04-23|1996-05-14|NONE|REG AIR|ual packages are furiously blith|
-1379|73|3|1|13|12649.91|0.04|0.01|N|O|1998-06-08|1998-07-13|1998-06-16|NONE|AIR|ully across the furiously iron|
-1379|118|2|2|50|50905.50|0.07|0.08|N|O|1998-08-31|1998-07-13|1998-09-02|TAKE BACK RETURN|FOB|olphins. ca|
-1379|13|7|3|24|21912.24|0.05|0.02|N|O|1998-07-06|1998-07-09|1998-07-29|DELIVER IN PERSON|MAIL|ages cajole carefully idly express re|
-1380|149|2|1|6|6294.84|0.00|0.04|N|O|1996-08-06|1996-10-01|1996-08-14|NONE|RAIL|e foxes. slyly specia|
-1380|141|4|2|40|41645.60|0.02|0.02|N|O|1996-10-01|1996-08-14|1996-10-20|COLLECT COD|RAIL|ly final frets. ironic,|
-1380|78|9|3|15|14671.05|0.05|0.02|N|O|1996-07-14|1996-08-12|1996-08-03|NONE|FOB|riously ironic foxes aff|
-1380|61|10|4|33|31714.98|0.04|0.07|N|O|1996-08-23|1996-10-01|1996-09-18|TAKE BACK RETURN|SHIP|e ironic, even excuses haggle |
-1381|144|1|1|47|49074.58|0.08|0.04|N|O|1998-09-22|1998-08-12|1998-10-12|DELIVER IN PERSON|AIR|ly ironic deposits|
-1381|34|10|2|12|11208.36|0.07|0.08|N|O|1998-08-13|1998-08-12|1998-08-28|TAKE BACK RETURN|AIR| furiously regular package|
-1382|162|3|1|18|19118.88|0.08|0.03|R|F|1993-08-30|1993-10-19|1993-09-03|DELIVER IN PERSON|AIR|hely regular deposits. fluffy s|
-1382|181|2|2|29|31354.22|0.08|0.04|A|F|1993-10-08|1993-11-11|1993-10-10|COLLECT COD|FOB| haggle: closely even asymptot|
-1382|178|7|3|43|46361.31|0.10|0.04|A|F|1993-09-02|1993-10-06|1993-09-15|DELIVER IN PERSON|AIR|ress deposits. slyly ironic foxes are blit|
-1382|181|2|4|11|11892.98|0.04|0.04|R|F|1993-09-17|1993-09-29|1993-09-21|NONE|SHIP|furiously unusual packages play quickly |
-1382|157|8|5|31|32771.65|0.07|0.03|R|F|1993-10-26|1993-10-15|1993-11-09|TAKE BACK RETURN|FOB|hely regular dependencies. f|
-1382|10|5|6|38|34580.38|0.07|0.07|R|F|1993-11-17|1993-09-28|1993-11-20|COLLECT COD|SHIP|ake pending pinto beans. s|
-1382|23|4|7|5|4615.10|0.07|0.01|R|F|1993-10-02|1993-09-29|1993-10-12|DELIVER IN PERSON|REG AIR|ter the carefully final excuses. blit|
-1383|193|7|1|14|15304.66|0.07|0.06|A|F|1993-08-25|1993-07-09|1993-09-12|DELIVER IN PERSON|RAIL|ole carefully silent requests. car|
-1383|161|10|2|19|20162.04|0.06|0.04|R|F|1993-05-24|1993-07-07|1993-06-14|NONE|AIR|lyly unusual accounts sle|
-1408|148|7|1|29|30396.06|0.03|0.04|N|O|1998-03-12|1998-02-14|1998-03-17|COLLECT COD|MAIL|en accounts grow furiousl|
-1408|173|2|2|7|7512.19|0.05|0.06|N|O|1998-01-14|1998-03-21|1998-01-29|COLLECT COD|AIR|fully final instructions. theodolites ca|
-1408|76|6|3|11|10736.77|0.00|0.03|N|O|1998-04-04|1998-01-29|1998-04-18|NONE|REG AIR|y even accounts thrash care|
-1408|148|5|4|20|20962.80|0.06|0.00|N|O|1998-04-21|1998-01-25|1998-05-12|DELIVER IN PERSON|TRUCK| blithely fluffi|
-1408|170|1|5|41|43876.97|0.02|0.06|N|O|1998-02-25|1998-02-03|1998-03-13|COLLECT COD|REG AIR|ep along the fina|
-1408|134|10|6|42|43433.46|0.05|0.08|N|O|1998-01-30|1998-02-07|1998-02-18|TAKE BACK RETURN|REG AIR|even packages. even accounts cajole|
-1408|55|6|7|26|24831.30|0.00|0.00|N|O|1998-03-19|1998-03-14|1998-04-01|COLLECT COD|RAIL|ic foxes ca|
-1409|99|1|1|23|22979.07|0.01|0.03|A|F|1993-04-18|1993-02-25|1993-05-06|DELIVER IN PERSON|FOB|ions. slyly ironic packages wake quick|
-1409|65|2|2|36|34742.16|0.09|0.02|A|F|1993-01-27|1993-01-31|1993-02-07|COLLECT COD|FOB|ncies sleep carefully r|
-1409|160|1|3|17|18022.72|0.07|0.00|R|F|1993-04-15|1993-03-01|1993-04-29|NONE|REG AIR|pending accounts poach. care|
-1410|121|10|1|15|15316.80|0.06|0.05|N|O|1997-05-25|1997-07-08|1997-06-15|NONE|SHIP| bold packages are fluf|
-1410|179|9|2|18|19425.06|0.03|0.00|N|O|1997-06-03|1997-05-17|1997-06-07|TAKE BACK RETURN|RAIL|gle furiously fluffily regular requests|
-1410|109|4|3|37|37336.70|0.02|0.01|N|O|1997-04-17|1997-06-18|1997-04-19|COLLECT COD|TRUCK|to beans b|
-1410|188|9|4|22|23939.96|0.10|0.00|N|O|1997-07-31|1997-05-17|1997-08-19|TAKE BACK RETURN|RAIL|gular account|
-1410|66|1|5|25|24151.50|0.09|0.02|N|O|1997-05-07|1997-07-10|1997-05-16|NONE|REG AIR|unts haggle against the furiously fina|
-1411|17|7|1|9|8253.09|0.06|0.04|A|F|1995-03-08|1995-03-04|1995-03-11|DELIVER IN PERSON|AIR|accounts. furiou|
-1411|107|8|2|26|26184.60|0.02|0.02|A|F|1995-04-12|1995-01-24|1995-05-03|TAKE BACK RETURN|TRUCK|c packages. |
-1411|27|6|3|37|34299.74|0.00|0.06|A|F|1995-02-27|1995-03-02|1995-03-24|NONE|MAIL|d excuses. furiously final pear|
-1411|200|3|4|20|22004.00|0.01|0.03|R|F|1995-04-06|1995-03-16|1995-04-17|COLLECT COD|FOB|s against the|
-1411|83|4|5|46|45221.68|0.08|0.05|A|F|1995-04-03|1995-01-20|1995-04-05|DELIVER IN PERSON|REG AIR|ly daring instructions|
-1411|77|6|6|30|29312.10|0.09|0.04|A|F|1995-01-12|1995-02-01|1995-01-23|DELIVER IN PERSON|MAIL|ious foxes wake courts. caref|
-1412|58|3|1|37|35447.85|0.06|0.01|A|F|1993-04-10|1993-04-19|1993-04-12|DELIVER IN PERSON|RAIL|hely express excuses are |
-1412|156|1|2|20|21123.00|0.10|0.05|A|F|1993-07-04|1993-05-18|1993-07-22|DELIVER IN PERSON|REG AIR|odolites sleep ironically|
-1412|23|2|3|2|1846.04|0.10|0.07|R|F|1993-04-01|1993-05-03|1993-04-12|DELIVER IN PERSON|REG AIR|s among the requests are a|
-1412|167|8|4|11|11738.76|0.05|0.07|R|F|1993-05-27|1993-05-30|1993-06-07|DELIVER IN PERSON|MAIL|en packages. regular packages dete|
-1412|158|6|5|11|11639.65|0.08|0.06|A|F|1993-03-30|1993-05-25|1993-04-21|NONE|FOB|se slyly. special, unusual accounts nag bl|
-1413|178|9|1|18|19407.06|0.08|0.05|N|O|1997-10-11|1997-08-17|1997-10-25|NONE|FOB|yly bold packages haggle quickly acr|
-1413|165|10|2|49|52192.84|0.07|0.06|N|O|1997-08-28|1997-08-23|1997-09-12|DELIVER IN PERSON|MAIL|nstructions br|
-1413|42|9|3|6|5652.24|0.04|0.02|N|O|1997-09-07|1997-07-30|1997-09-21|TAKE BACK RETURN|MAIL|lithely excuses. f|
-1414|38|4|1|39|36583.17|0.10|0.03|N|O|1995-09-22|1995-09-30|1995-10-07|NONE|MAIL|quickly aro|
-1414|107|8|2|4|4028.40|0.02|0.05|N|O|1995-09-16|1995-11-01|1995-10-02|COLLECT COD|AIR| haggle quickly|
-1415|149|10|1|25|26228.50|0.06|0.00|A|F|1994-09-03|1994-07-12|1994-09-13|DELIVER IN PERSON|RAIL|ect never fluff|
-1440|193|6|1|3|3279.57|0.06|0.01|N|O|1995-10-30|1995-10-17|1995-11-08|COLLECT COD|SHIP|instructions boost. fluffily regul|
-1440|114|4|2|46|46649.06|0.02|0.03|N|O|1995-09-21|1995-10-19|1995-10-19|NONE|RAIL|blithely even instructions. |
-1441|144|7|1|5|5220.70|0.04|0.01|N|O|1997-05-17|1997-05-11|1997-05-30|COLLECT COD|MAIL|egular courts. fluffily even grouches |
-1441|177|7|2|5|5385.85|0.02|0.05|N|O|1997-04-25|1997-04-16|1997-05-23|COLLECT COD|FOB|he quickly enticing pac|
-1441|118|5|3|14|14253.54|0.01|0.03|N|O|1997-06-30|1997-04-29|1997-07-24|DELIVER IN PERSON|REG AIR|special requests ha|
-1441|160|8|4|37|39225.92|0.01|0.00|N|O|1997-04-26|1997-04-27|1997-04-29|NONE|REG AIR|accounts. slyly special dolphins b|
-1441|72|10|5|34|33050.38|0.09|0.00|N|O|1997-06-12|1997-05-11|1997-06-29|TAKE BACK RETURN|RAIL|e carefully. blithely ironic dep|
-1441|25|4|6|15|13875.30|0.09|0.08|N|O|1997-05-21|1997-05-06|1997-06-04|NONE|REG AIR| dependencies-- cour|
-1441|96|10|7|50|49804.50|0.03|0.01|N|O|1997-06-07|1997-05-12|1997-06-08|NONE|SHIP| requests. blithely e|
-1442|26|5|1|8|7408.16|0.05|0.01|A|F|1994-10-31|1994-09-04|1994-11-25|COLLECT COD|AIR|c deposits haggle after the even|
-1443|34|10|1|47|43899.41|0.04|0.06|N|O|1997-02-05|1997-02-02|1997-03-03|NONE|RAIL|carefully ironic requests sl|
-1444|170|5|1|42|44947.14|0.01|0.02|R|F|1994-12-22|1995-03-03|1994-12-31|NONE|SHIP|ly bold packages boost regular ideas. spe|
-1444|57|2|2|34|32539.70|0.04|0.08|A|F|1995-02-22|1995-02-15|1995-03-19|TAKE BACK RETURN|AIR|y. doggedly pend|
-1444|155|3|3|34|35875.10|0.02|0.07|R|F|1994-12-17|1995-01-12|1995-01-03|COLLECT COD|AIR|ular accounts |
-1444|119|6|4|6|6114.66|0.06|0.03|A|F|1995-01-07|1995-03-05|1995-01-17|COLLECT COD|RAIL|al accounts. br|
-1444|20|1|5|35|32200.70|0.02|0.05|A|F|1995-02-25|1995-03-05|1995-03-24|DELIVER IN PERSON|SHIP|aggle furiou|
-1444|33|4|6|42|39187.26|0.00|0.02|A|F|1994-12-16|1995-02-18|1994-12-22|DELIVER IN PERSON|RAIL|ss requests. ironic ideas wake above|
-1444|82|3|7|12|11784.96|0.00|0.03|R|F|1994-12-23|1995-01-15|1995-01-13|COLLECT COD|TRUCK|ly among the bol|
-1445|100|1|1|24|24002.40|0.01|0.00|A|F|1995-02-21|1995-02-22|1995-03-18|DELIVER IN PERSON|SHIP|al accounts use furiously a|
-1445|67|8|2|48|46418.88|0.10|0.02|A|F|1995-02-28|1995-03-16|1995-03-12|COLLECT COD|MAIL|. final ideas are carefully dar|
-1445|192|4|3|7|7645.33|0.10|0.04|A|F|1995-04-25|1995-02-25|1995-05-10|NONE|SHIP|structions: slyly regular re|
-1445|28|1|4|17|15776.34|0.04|0.07|A|F|1995-04-02|1995-04-04|1995-05-01|COLLECT COD|FOB|ges. furiously regular pint|
-1445|135|1|5|24|24843.12|0.10|0.06|R|F|1995-04-23|1995-02-16|1995-05-18|NONE|REG AIR|rate after the carefully reg|
-1445|168|9|6|39|41658.24|0.03|0.02|A|F|1995-02-05|1995-02-20|1995-02-06|NONE|MAIL|ully unusual reques|
-1446|72|3|1|31|30134.17|0.10|0.02|N|O|1998-05-01|1998-05-17|1998-05-30|NONE|REG AIR|. slyly reg|
-1447|167|4|1|19|20276.04|0.06|0.04|A|F|1993-01-31|1992-12-07|1993-02-04|COLLECT COD|MAIL|. quickly ironic |
-1447|32|3|2|6|5592.18|0.01|0.05|A|F|1992-10-24|1992-12-10|1992-11-05|DELIVER IN PERSON|AIR|as! regular packages poach above the|
-1447|39|5|3|9|8451.27|0.04|0.00|R|F|1992-11-15|1993-01-07|1992-11-29|DELIVER IN PERSON|MAIL|counts wake s|
-1447|22|5|4|8|7376.16|0.09|0.08|R|F|1992-11-20|1993-01-12|1992-12-14|COLLECT COD|FOB|ost carefully |
-1447|130|1|5|23|23692.99|0.02|0.07|A|F|1992-12-07|1992-12-25|1993-01-06|TAKE BACK RETURN|AIR| dazzle quickly deposits. f|
-1447|200|3|6|41|45108.20|0.08|0.02|R|F|1993-01-06|1993-01-05|1993-01-13|TAKE BACK RETURN|MAIL|rts boost s|
-1472|8|5|1|36|32688.00|0.04|0.05|N|O|1996-11-06|1996-11-13|1996-11-12|COLLECT COD|SHIP|riously silent deposits to the pending d|
-1472|133|4|2|26|26861.38|0.03|0.05|N|O|1996-11-08|1996-11-13|1996-12-02|DELIVER IN PERSON|FOB|ic packages w|
-1472|1|8|3|6|5406.00|0.08|0.01|N|O|1996-10-24|1996-11-19|1996-11-23|COLLECT COD|FOB|onic theodolites hinder slyly slyly r|
-1473|54|9|1|50|47702.50|0.04|0.03|N|O|1997-05-05|1997-05-20|1997-05-09|NONE|TRUCK|requests wake express deposits. special, ir|
-1473|68|3|2|32|30977.92|0.00|0.08|N|O|1997-04-18|1997-05-12|1997-05-10|DELIVER IN PERSON|REG AIR|out the packages lose furiously ab|
-1474|15|5|1|5|4575.05|0.05|0.04|A|F|1995-04-22|1995-02-20|1995-05-06|COLLECT COD|SHIP|ully final a|
-1474|123|8|2|30|30693.60|0.04|0.02|A|F|1995-03-23|1995-02-11|1995-04-17|DELIVER IN PERSON|TRUCK|usly. evenly express |
-1474|92|5|3|18|17857.62|0.06|0.02|A|F|1995-01-23|1995-03-28|1995-02-03|NONE|RAIL|after the special|
-1475|168|3|1|15|16022.40|0.08|0.06|N|O|1998-02-12|1997-12-17|1998-03-02|TAKE BACK RETURN|SHIP|xpress requests haggle after the final, fi|
-1475|118|9|2|18|18325.98|0.07|0.00|N|O|1998-03-08|1998-01-18|1998-03-10|TAKE BACK RETURN|AIR|al deposits use. ironic packages along the |
-1475|144|1|3|30|31324.20|0.03|0.02|N|O|1998-03-11|1997-12-30|1998-03-15|COLLECT COD|REG AIR| regular theodolites mold across th|
-1475|187|8|4|50|54359.00|0.03|0.05|N|O|1997-12-14|1997-12-13|1997-12-21|COLLECT COD|AIR|. slyly bold re|
-1475|32|3|5|33|30756.99|0.01|0.06|N|O|1998-01-02|1998-01-27|1998-01-11|NONE|FOB|quickly fluffy|
-1475|50|7|6|12|11400.60|0.04|0.04|N|O|1998-01-09|1997-12-30|1998-01-23|NONE|TRUCK|arefully-- excuses sublate|
-1475|112|3|7|23|23278.53|0.02|0.00|N|O|1998-02-13|1998-02-05|1998-03-08|NONE|TRUCK|hely regular hocke|
-1476|31|7|1|20|18620.60|0.02|0.03|N|O|1996-08-11|1996-09-18|1996-08-26|TAKE BACK RETURN|AIR|. bold deposits are carefully amo|
-1477|72|1|1|31|30134.17|0.00|0.06|N|O|1997-12-16|1997-09-30|1997-12-17|COLLECT COD|RAIL| requests. fluffily final |
-1477|110|7|2|8|8080.88|0.09|0.05|N|O|1997-10-25|1997-10-18|1997-11-16|COLLECT COD|MAIL|ironic realms wake unusual, even ac|
-1477|125|6|3|42|43055.04|0.06|0.00|N|O|1997-11-02|1997-11-02|1997-11-20|DELIVER IN PERSON|SHIP|lithely after the ir|
-1477|107|8|4|32|32227.20|0.05|0.08|N|O|1997-09-12|1997-10-26|1997-10-12|TAKE BACK RETURN|AIR|; quickly regula|
-1477|115|6|5|41|41619.51|0.04|0.06|N|O|1997-12-16|1997-10-31|1998-01-12|DELIVER IN PERSON|REG AIR|y. final pearls kindle. accounts |
-1477|69|6|6|49|47483.94|0.06|0.00|N|O|1997-11-18|1997-11-06|1997-11-27|COLLECT COD|FOB|ise according to the sly, bold p|
-1477|120|4|7|33|33663.96|0.06|0.00|N|O|1997-11-12|1997-11-06|1997-11-24|DELIVER IN PERSON|TRUCK|yly regular p|
-1478|34|5|1|21|19614.63|0.00|0.06|N|O|1997-09-20|1997-10-25|1997-10-06|TAKE BACK RETURN|MAIL| fluffily pending acc|
-1479|149|6|1|33|34621.62|0.10|0.01|N|O|1996-03-12|1996-02-28|1996-03-31|DELIVER IN PERSON|FOB| carefully special courts affix. fluff|
-1504|82|3|1|42|41247.36|0.02|0.03|R|F|1992-10-18|1992-10-14|1992-11-10|TAKE BACK RETURN|FOB|ep. carefully ironic excuses haggle quickl|
-1504|103|10|2|22|22068.20|0.04|0.03|A|F|1992-09-09|1992-10-29|1992-09-10|NONE|REG AIR| accounts sleep. furiou|
-1504|178|8|3|9|9703.53|0.07|0.02|R|F|1992-11-02|1992-10-12|1992-11-15|TAKE BACK RETURN|RAIL|y slyly regular courts.|
-1504|115|2|4|10|10151.10|0.04|0.07|A|F|1992-09-22|1992-10-22|1992-10-13|TAKE BACK RETURN|TRUCK|final theodolites. furiously e|
-1504|20|10|5|7|6440.14|0.02|0.00|R|F|1992-11-20|1992-11-23|1992-12-13|COLLECT COD|MAIL|y final packa|
-1505|120|7|1|4|4080.48|0.09|0.00|A|F|1992-12-14|1992-11-11|1993-01-02|COLLECT COD|SHIP|side of the s|
-1505|123|8|2|50|51156.00|0.00|0.02|R|F|1992-11-22|1992-09-24|1992-11-26|TAKE BACK RETURN|FOB|lyly special platelets. requests ar|
-1506|133|4|1|46|47523.98|0.04|0.05|R|F|1993-01-18|1992-11-11|1993-02-09|COLLECT COD|REG AIR|sits whithout the blithely ironic packages|
-1506|114|4|2|30|30423.30|0.07|0.02|A|F|1992-11-22|1992-10-25|1992-12-04|DELIVER IN PERSON|FOB|deposits cajole |
-1506|191|3|3|28|30553.32|0.10|0.06|A|F|1992-09-22|1992-11-19|1992-10-09|TAKE BACK RETURN|AIR| unwind carefully: theodolit|
-1506|28|7|4|37|34336.74|0.00|0.03|R|F|1992-11-04|1992-12-01|1992-11-23|TAKE BACK RETURN|TRUCK|carefully bold dolphins. accounts su|
-1506|195|8|5|15|16427.85|0.05|0.00|R|F|1992-09-24|1992-11-11|1992-10-05|NONE|REG AIR| carefully fluffy packages-- caref|
-1506|50|3|6|38|36101.90|0.05|0.02|R|F|1992-12-02|1992-12-19|1992-12-29|NONE|REG AIR|xpress, regular excuse|
-1506|169|6|7|4|4276.64|0.07|0.00|R|F|1993-01-03|1992-12-06|1993-01-05|COLLECT COD|REG AIR|posits. furiou|
-1507|68|5|1|25|24201.50|0.01|0.08|R|F|1994-01-07|1994-01-06|1994-01-11|NONE|RAIL|xes. slyly busy de|
-1507|40|6|2|33|31021.32|0.04|0.02|A|F|1993-10-29|1993-12-23|1993-11-14|DELIVER IN PERSON|REG AIR| asymptotes nag furiously above t|
-1507|86|7|3|39|38457.12|0.03|0.07|R|F|1993-11-04|1993-12-16|1993-12-03|TAKE BACK RETURN|REG AIR|ly even instructions.|
-1508|51|3|1|16|15216.80|0.02|0.06|N|O|1998-06-21|1998-05-30|1998-07-11|COLLECT COD|MAIL|riously across the ironic, unusua|
-1508|25|4|2|20|18500.40|0.06|0.01|N|O|1998-04-17|1998-06-11|1998-05-17|DELIVER IN PERSON|MAIL|nic platelets. carefully final fra|
-1508|93|7|3|43|42702.87|0.01|0.02|N|O|1998-06-01|1998-06-24|1998-06-03|TAKE BACK RETURN|TRUCK|ndencies h|
-1508|148|7|4|1|1048.14|0.02|0.02|N|O|1998-07-13|1998-06-03|1998-07-17|TAKE BACK RETURN|AIR|s the blithely bold instruction|
-1508|135|6|5|29|30018.77|0.02|0.00|N|O|1998-08-03|1998-07-08|1998-08-22|COLLECT COD|RAIL|r instructions. carefully|
-1508|3|10|6|5|4515.00|0.06|0.08|N|O|1998-05-22|1998-07-06|1998-06-04|COLLECT COD|REG AIR|cording to the furiously ironic depe|
-1508|117|8|7|38|38650.18|0.03|0.06|N|O|1998-04-30|1998-06-23|1998-05-18|DELIVER IN PERSON|RAIL|tes wake furiously regular w|
-1509|28|7|1|14|12992.28|0.04|0.01|A|F|1993-10-04|1993-09-25|1993-10-21|NONE|TRUCK|nal realms|
-1509|11|2|2|46|41906.46|0.08|0.02|A|F|1993-10-15|1993-10-04|1993-11-01|TAKE BACK RETURN|FOB|uriously regula|
-1509|107|8|3|17|17120.70|0.06|0.05|A|F|1993-07-25|1993-08-28|1993-08-19|DELIVER IN PERSON|AIR| furiously. blithely regular ideas haggle c|
-1509|20|4|4|11|10120.22|0.03|0.08|R|F|1993-11-04|1993-10-03|1993-11-14|TAKE BACK RETURN|FOB|ily ironic packages nod carefully.|
-1509|90|1|5|37|36633.33|0.01|0.08|A|F|1993-08-31|1993-09-10|1993-09-24|NONE|FOB|he slyly even deposits wake a|
-1509|187|8|6|31|33702.58|0.04|0.03|A|F|1993-07-14|1993-08-21|1993-08-06|COLLECT COD|SHIP|ic deposits cajole carefully. quickly bold |
-1509|157|2|7|27|28543.05|0.01|0.01|A|F|1993-09-29|1993-09-08|1993-10-04|TAKE BACK RETURN|FOB|lithely after the |
-1510|98|2|1|11|10978.99|0.09|0.04|N|O|1996-09-23|1996-12-03|1996-10-01|DELIVER IN PERSON|RAIL|e of the unusual accounts. stealthy deposit|
-1510|84|5|2|24|23617.92|0.05|0.04|N|O|1996-10-07|1996-10-22|1996-11-03|DELIVER IN PERSON|REG AIR|yly brave theod|
-1510|190|1|3|36|39246.84|0.07|0.02|N|O|1996-10-02|1996-11-23|1996-10-05|NONE|SHIP|old deposits along the carefully|
-1510|182|3|4|8|8657.44|0.01|0.08|N|O|1996-10-26|1996-11-07|1996-10-30|TAKE BACK RETURN|RAIL|blithely express|
-1510|59|10|5|27|25894.35|0.08|0.06|N|O|1996-10-20|1996-12-05|1996-11-02|NONE|MAIL|he blithely regular req|
-1510|14|5|6|3|2742.03|0.05|0.02|N|O|1996-10-31|1996-12-03|1996-11-13|COLLECT COD|RAIL|along the slyly regular pin|
-1510|22|1|7|50|46101.00|0.04|0.05|N|O|1996-11-01|1996-10-17|1996-11-28|NONE|MAIL|even packages. carefully regular fo|
-1511|98|2|1|29|28944.61|0.01|0.04|N|O|1997-03-17|1997-02-11|1997-03-27|DELIVER IN PERSON|AIR|s cajole furiously against |
-1511|62|9|2|32|30785.92|0.04|0.01|N|O|1997-01-06|1997-03-21|1997-01-26|TAKE BACK RETURN|REG AIR| deposits. carefully ironi|
-1536|194|5|1|5|5470.95|0.08|0.03|N|O|1997-02-08|1997-03-11|1997-03-02|COLLECT COD|MAIL|requests sleep pe|
-1537|18|2|1|17|15606.17|0.01|0.03|A|F|1992-04-12|1992-04-19|1992-04-13|NONE|TRUCK|he regular pack|
-1537|179|8|2|50|53958.50|0.08|0.00|R|F|1992-05-30|1992-05-14|1992-06-23|TAKE BACK RETURN|MAIL|special packages haggle slyly at the silent|
-1537|13|4|3|44|40172.44|0.05|0.04|R|F|1992-04-01|1992-03-31|1992-04-21|NONE|TRUCK|lar courts.|
-1537|140|6|4|3|3120.42|0.08|0.07|R|F|1992-03-20|1992-04-14|1992-03-21|TAKE BACK RETURN|SHIP|s, final ideas detect sl|
-1538|102|5|1|32|32067.20|0.05|0.05|N|O|1995-07-08|1995-07-29|1995-08-01|TAKE BACK RETURN|RAIL|uses maintain blithely. fluffily|
-1538|192|3|2|27|29489.13|0.05|0.01|N|O|1995-09-19|1995-08-03|1995-09-24|DELIVER IN PERSON|TRUCK|ngly even packag|
-1538|130|3|3|36|37084.68|0.08|0.04|N|O|1995-07-11|1995-09-10|1995-07-26|DELIVER IN PERSON|MAIL|al deposits mo|
-1538|104|1|4|28|28114.80|0.10|0.04|N|O|1995-09-19|1995-08-27|1995-10-10|COLLECT COD|RAIL|bout the fluffily unusual|
-1538|178|7|5|13|14016.21|0.01|0.05|N|O|1995-06-26|1995-07-30|1995-07-25|NONE|SHIP|ly. packages sleep f|
-1538|128|3|6|42|43181.04|0.08|0.08|N|O|1995-10-10|1995-09-12|1995-11-08|DELIVER IN PERSON|TRUCK|equests cajole blithely |
-1539|196|9|1|21|23019.99|0.08|0.02|R|F|1995-04-19|1995-05-10|1995-04-27|COLLECT COD|TRUCK|ounts haggle. busy|
-1539|86|7|2|11|10846.88|0.01|0.08|A|F|1995-05-27|1995-04-13|1995-06-10|TAKE BACK RETURN|TRUCK|ly express requests. furiously |
-1539|68|5|3|7|6776.42|0.09|0.04|R|F|1995-05-14|1995-04-16|1995-05-30|DELIVER IN PERSON|AIR|. fluffily reg|
-1540|173|1|1|38|40780.46|0.03|0.01|R|F|1992-09-30|1992-10-27|1992-10-12|TAKE BACK RETURN|SHIP| final grouches bo|
-1540|60|2|2|35|33602.10|0.02|0.07|R|F|1992-10-31|1992-09-04|1992-11-05|TAKE BACK RETURN|SHIP|e blithely a|
-1540|8|3|3|25|22700.00|0.08|0.04|R|F|1992-11-15|1992-10-24|1992-12-14|DELIVER IN PERSON|SHIP|ironic deposits amo|
-1540|25|8|4|6|5550.12|0.09|0.03|R|F|1992-08-28|1992-09-17|1992-09-14|COLLECT COD|MAIL|ing to the slyly express asymptote|
-1540|87|8|5|27|26651.16|0.10|0.08|R|F|1992-12-02|1992-10-18|1992-12-31|NONE|SHIP|carefully final packages; b|
-1541|64|3|1|44|42418.64|0.10|0.05|N|O|1995-08-24|1995-07-13|1995-08-26|TAKE BACK RETURN|MAIL|o beans boost fluffily abou|
-1541|26|7|2|8|7408.16|0.10|0.08|N|F|1995-06-05|1995-08-07|1995-06-21|TAKE BACK RETURN|TRUCK|y pending packages. blithely fi|
-1542|58|9|1|37|35447.85|0.07|0.06|A|F|1993-12-15|1993-10-17|1994-01-07|TAKE BACK RETURN|REG AIR|e blithely unusual accounts. quic|
-1542|3|6|2|12|10836.00|0.09|0.06|R|F|1993-10-29|1993-11-02|1993-11-09|TAKE BACK RETURN|RAIL|carefully |
-1542|6|7|3|18|16308.00|0.05|0.05|R|F|1993-10-17|1993-11-15|1993-10-26|TAKE BACK RETURN|FOB|pending instr|
-1542|143|10|4|21|21905.94|0.01|0.05|R|F|1993-10-13|1993-12-13|1993-11-12|NONE|RAIL|y pending foxes nag blithely |
-1542|155|7|5|46|48536.90|0.00|0.00|R|F|1993-09-28|1993-11-03|1993-10-15|COLLECT COD|FOB|ial instructions. ironically|
-1543|71|10|1|34|33016.38|0.02|0.08|N|O|1997-05-25|1997-03-30|1997-06-04|NONE|AIR|ic requests are ac|
-1543|115|9|2|6|6090.66|0.09|0.01|N|O|1997-04-16|1997-05-20|1997-05-16|DELIVER IN PERSON|MAIL| among the carefully bold or|
-1543|67|8|3|42|40616.52|0.06|0.01|N|O|1997-05-26|1997-03-30|1997-06-12|DELIVER IN PERSON|FOB|its sleep until the fur|
-1543|189|10|4|42|45745.56|0.05|0.06|N|O|1997-04-11|1997-04-11|1997-04-23|TAKE BACK RETURN|MAIL|xpress instructions. regular acc|
-1543|40|1|5|9|8460.36|0.08|0.06|N|O|1997-03-14|1997-05-19|1997-03-26|DELIVER IN PERSON|FOB|ravely special requests |
-1543|49|8|6|3|2847.12|0.10|0.04|N|O|1997-03-29|1997-05-10|1997-04-22|COLLECT COD|MAIL|sleep along the furiou|
-1543|68|7|7|3|2904.18|0.00|0.02|N|O|1997-03-22|1997-04-06|1997-03-30|NONE|AIR|quickly. final accounts haggle slyl|
-1568|90|1|1|36|35643.24|0.02|0.03|N|O|1997-05-31|1997-04-22|1997-06-21|TAKE BACK RETURN|RAIL|platelets-- furiously sly excu|
-1568|9|2|2|46|41814.00|0.04|0.00|N|O|1997-04-06|1997-04-08|1997-04-23|TAKE BACK RETURN|MAIL|g the blithely even acco|
-1569|75|3|1|5|4875.35|0.07|0.00|N|O|1998-04-16|1998-06-21|1998-04-18|COLLECT COD|REG AIR| packages. ironic, even excuses a|
-1569|39|10|2|16|15024.48|0.01|0.08|N|O|1998-04-26|1998-06-16|1998-05-26|COLLECT COD|MAIL|deposits. blithely final asymptotes ac|
-1569|49|10|3|43|40808.72|0.10|0.03|N|O|1998-06-05|1998-05-31|1998-06-28|DELIVER IN PERSON|FOB| instructions.|
-1569|70|1|4|30|29102.10|0.02|0.03|N|O|1998-07-19|1998-06-04|1998-08-10|NONE|SHIP|packages. excuses lose evenly carefully reg|
-1570|183|4|1|25|27079.50|0.00|0.06|N|O|1998-05-03|1998-06-02|1998-06-02|DELIVER IN PERSON|REG AIR|its. slyly regular sentiments|
-1570|86|7|2|7|6902.56|0.05|0.05|N|O|1998-07-10|1998-06-01|1998-07-23|TAKE BACK RETURN|MAIL|requests boost quickly re|
-1571|52|3|1|47|44746.35|0.00|0.05|R|F|1992-12-07|1993-02-24|1993-01-01|TAKE BACK RETURN|REG AIR|ng to the fluffily unusual |
-1571|183|4|2|6|6499.08|0.03|0.00|A|F|1993-01-08|1993-02-13|1993-02-07|COLLECT COD|SHIP| special, ironic depo|
-1571|59|7|3|18|17262.90|0.05|0.08|A|F|1993-01-09|1993-01-12|1993-01-31|COLLECT COD|AIR| pending grouches |
-1571|101|4|4|48|48052.80|0.05|0.05|A|F|1992-12-28|1993-01-04|1993-01-04|DELIVER IN PERSON|RAIL|slyly pending p|
-1571|42|5|5|10|9420.40|0.03|0.06|R|F|1992-12-12|1993-02-13|1992-12-29|DELIVER IN PERSON|AIR|lets. carefully regular ideas wake|
-1571|34|10|6|24|22416.72|0.05|0.07|A|F|1993-03-22|1993-01-31|1993-04-09|NONE|TRUCK|warthogs wake carefully acro|
-1572|24|5|1|41|37884.82|0.02|0.00|N|O|1996-05-16|1996-04-09|1996-05-28|TAKE BACK RETURN|REG AIR|. pinto beans alongside|
-1572|93|7|2|10|9930.90|0.04|0.06|N|O|1996-05-17|1996-03-26|1996-05-19|NONE|AIR| accounts affix slyly. |
-1573|186|7|1|5|5430.90|0.05|0.01|A|F|1993-04-24|1993-03-13|1993-05-17|TAKE BACK RETURN|MAIL|ymptotes could u|
-1573|31|2|2|17|15827.51|0.00|0.06|R|F|1993-02-24|1993-02-16|1993-03-08|TAKE BACK RETURN|TRUCK|carefully regular deposits. |
-1573|83|4|3|16|15729.28|0.04|0.03|A|F|1993-03-15|1993-03-16|1993-03-31|COLLECT COD|AIR|ely. furiously final requests wake slyl|
-1573|194|7|4|11|12036.09|0.09|0.01|R|F|1993-03-23|1993-03-24|1993-04-12|TAKE BACK RETURN|RAIL|nently pending|
-1573|137|8|5|7|7259.91|0.00|0.01|R|F|1993-01-30|1993-03-14|1993-02-27|DELIVER IN PERSON|SHIP|eodolites sleep slyly. slyly f|
-1573|154|6|6|30|31624.50|0.03|0.01|A|F|1992-12-29|1993-03-06|1993-01-02|DELIVER IN PERSON|TRUCK|. blithely even theodolites boos|
-1574|48|7|1|41|38869.64|0.06|0.02|N|O|1997-03-08|1997-02-09|1997-04-01|COLLECT COD|AIR|s. slyly regular depen|
-1574|191|5|2|50|54559.50|0.00|0.05|N|O|1996-12-14|1997-02-14|1996-12-16|TAKE BACK RETURN|FOB|le regular, regular foxes. blithely e|
-1574|55|3|3|25|23876.25|0.06|0.02|N|O|1997-01-16|1997-02-14|1997-02-12|DELIVER IN PERSON|TRUCK|ly silent accounts.|
-1574|191|4|4|6|6547.14|0.03|0.05|N|O|1997-02-24|1997-02-03|1997-03-01|NONE|AIR|e silent, final packages. speci|
-1574|109|4|5|6|6054.60|0.05|0.05|N|O|1997-02-09|1997-03-02|1997-02-14|COLLECT COD|MAIL|nic, final ideas snooze. |
-1574|5|2|6|42|38010.00|0.07|0.01|N|O|1996-12-19|1997-01-13|1996-12-28|NONE|FOB|o beans according t|
-1574|136|7|7|14|14505.82|0.04|0.01|N|O|1996-12-30|1997-01-19|1997-01-20|NONE|AIR|ily bold a|
-1575|29|10|1|42|39018.84|0.05|0.08|N|O|1995-10-21|1995-11-25|1995-10-24|DELIVER IN PERSON|RAIL|ly pending pinto beans.|
-1575|36|7|2|39|36505.17|0.00|0.06|N|O|1995-10-30|1995-10-15|1995-11-10|COLLECT COD|TRUCK| ironic requests snooze ironic, regular acc|
-1575|2|5|3|12|10824.00|0.01|0.05|N|O|1995-12-27|1995-11-11|1996-01-23|TAKE BACK RETURN|AIR| bold accounts. furi|
-1575|111|1|4|39|39433.29|0.07|0.00|N|O|1995-09-23|1995-11-05|1995-09-25|TAKE BACK RETURN|TRUCK| after the unusual asym|
-1575|83|4|5|10|9830.80|0.09|0.00|N|O|1996-01-10|1995-11-20|1996-01-13|DELIVER IN PERSON|RAIL|k excuses. pinto beans wake a|
-1575|178|6|6|14|15094.38|0.08|0.06|N|O|1995-10-31|1995-12-06|1995-11-30|NONE|AIR|beans breach among the furiously specia|
-1575|117|1|7|48|48821.28|0.08|0.04|N|O|1995-11-19|1995-10-25|1995-12-07|DELIVER IN PERSON|TRUCK|cies. regu|
-1600|172|10|1|20|21443.40|0.02|0.01|R|F|1993-06-16|1993-04-23|1993-07-02|COLLECT COD|FOB|pths sleep blithely about the|
-1600|44|3|2|48|45313.92|0.07|0.02|R|F|1993-04-17|1993-04-14|1993-05-03|DELIVER IN PERSON|FOB|furiously silent foxes could wake. car|
-1600|39|10|3|8|7512.24|0.04|0.07|R|F|1993-03-07|1993-04-22|1993-03-26|TAKE BACK RETURN|FOB|cajole furiously fluf|
-1600|69|8|4|25|24226.50|0.00|0.06|A|F|1993-05-25|1993-04-07|1993-06-05|TAKE BACK RETURN|REG AIR|press packages. ironic excuses bo|
-1600|147|8|5|30|31414.20|0.03|0.08|R|F|1993-06-03|1993-05-03|1993-06-07|DELIVER IN PERSON|RAIL|al escapades alongside of the depo|
-1601|167|8|1|6|6402.96|0.00|0.00|A|F|1994-10-19|1994-09-28|1994-10-23|COLLECT COD|SHIP| bold sheaves. furiously per|
-1601|175|3|2|50|53758.50|0.03|0.02|R|F|1994-12-24|1994-10-23|1995-01-11|COLLECT COD|FOB|ideas doubt|
-1601|90|1|3|14|13861.26|0.04|0.08|R|F|1994-09-17|1994-11-22|1994-10-03|DELIVER IN PERSON|RAIL|he special, fin|
-1602|183|4|1|4|4332.72|0.08|0.06|R|F|1993-10-31|1993-09-05|1993-11-21|NONE|RAIL|y. even excuses|
-1603|39|5|1|1|939.03|0.08|0.00|R|F|1993-08-17|1993-09-04|1993-08-22|TAKE BACK RETURN|REG AIR|d accounts. special warthogs use fur|
-1603|66|5|2|29|28015.74|0.06|0.08|A|F|1993-09-28|1993-09-20|1993-10-28|NONE|SHIP|ses wake furiously. theodolite|
-1604|42|3|1|15|14130.60|0.09|0.08|R|F|1993-09-22|1993-09-03|1993-09-29|TAKE BACK RETURN|MAIL| instructions haggle|
-1604|141|4|2|37|38522.18|0.06|0.06|A|F|1993-08-22|1993-09-21|1993-09-10|COLLECT COD|SHIP|requests. blithely ironic somas s|
-1604|114|8|3|19|19268.09|0.09|0.07|A|F|1993-10-15|1993-10-04|1993-11-09|COLLECT COD|RAIL| ideas. bol|
-1604|175|4|4|15|16127.55|0.03|0.00|R|F|1993-09-10|1993-08-31|1993-09-30|TAKE BACK RETURN|RAIL|ending realms along the special, p|
-1604|21|4|5|23|21183.46|0.08|0.05|A|F|1993-10-11|1993-08-30|1993-10-18|DELIVER IN PERSON|RAIL|en requests. blithely fin|
-1605|142|1|1|47|48980.58|0.00|0.01|N|O|1998-04-29|1998-06-12|1998-05-20|DELIVER IN PERSON|AIR|. carefully r|
-1605|180|8|2|18|19443.24|0.10|0.00|N|O|1998-05-13|1998-06-17|1998-06-03|COLLECT COD|REG AIR|ly regular foxes wake carefully. bol|
-1605|59|10|3|39|37402.95|0.02|0.03|N|O|1998-07-12|1998-06-05|1998-08-09|DELIVER IN PERSON|MAIL|nal dependencies-- quickly final frets acc|
-1605|183|4|4|25|27079.50|0.06|0.02|N|O|1998-05-26|1998-06-14|1998-06-05|COLLECT COD|AIR|ole carefully car|
-1606|115|6|1|21|21317.31|0.04|0.00|N|O|1997-06-02|1997-07-02|1997-06-27|DELIVER IN PERSON|RAIL| pending theodolites prom|
-1606|174|3|2|35|37595.95|0.00|0.02|N|O|1997-06-20|1997-06-19|1997-06-22|COLLECT COD|TRUCK|carefully sil|
-1606|100|4|3|23|23002.30|0.00|0.06|N|O|1997-04-19|1997-06-26|1997-04-30|NONE|MAIL|ously final requests. slowly ironic ex|
-1606|97|9|4|20|19941.80|0.02|0.04|N|O|1997-05-01|1997-05-26|1997-05-28|TAKE BACK RETURN|TRUCK|fily carefu|
-1606|71|10|5|14|13594.98|0.10|0.01|N|O|1997-05-19|1997-07-05|1997-06-10|COLLECT COD|FOB|structions haggle f|
-1607|190|1|1|2|2180.38|0.02|0.00|N|O|1996-01-11|1996-02-15|1996-01-19|DELIVER IN PERSON|MAIL|packages haggle. regular requests boost s|
-1607|119|3|2|37|37707.07|0.05|0.02|N|O|1996-02-27|1996-02-18|1996-03-16|NONE|AIR|alongside |
-1607|123|4|3|39|39901.68|0.00|0.00|N|O|1996-02-01|1996-02-12|1996-02-16|NONE|FOB|uches cajole. accounts ar|
-1607|76|6|4|34|33186.38|0.05|0.06|N|O|1996-01-06|1996-02-24|1996-01-10|DELIVER IN PERSON|SHIP| quickly above the |
-1607|178|8|5|48|51752.16|0.00|0.05|N|O|1996-02-22|1996-02-13|1996-03-09|TAKE BACK RETURN|MAIL|ular forges. deposits a|
-1632|191|5|1|47|51285.93|0.08|0.00|N|O|1997-01-25|1997-02-09|1997-02-19|TAKE BACK RETURN|RAIL|g to the closely special no|
-1632|148|7|2|14|14673.96|0.08|0.05|N|O|1997-01-15|1997-02-25|1997-01-28|NONE|RAIL|oxes. deposits nag slyly along the slyly |
-1632|177|6|3|47|50626.99|0.03|0.04|N|O|1997-01-29|1997-03-03|1997-02-21|NONE|MAIL|sts. blithely regular |
-1632|57|9|4|33|31582.65|0.09|0.02|N|O|1997-04-01|1997-02-24|1997-04-29|TAKE BACK RETURN|REG AIR|ructions! slyly|
-1632|142|1|5|43|44812.02|0.10|0.03|N|O|1997-02-24|1997-02-19|1997-03-25|DELIVER IN PERSON|FOB|ts. blithe, bold ideas cajo|
-1633|178|7|1|35|37735.95|0.01|0.02|N|O|1996-01-09|1995-12-02|1996-01-21|COLLECT COD|REG AIR|ly against the dolph|
-1633|5|6|2|15|13575.00|0.00|0.05|N|O|1995-12-13|1995-11-13|1996-01-04|TAKE BACK RETURN|FOB|ges wake fluffil|
-1634|48|9|1|21|19908.84|0.00|0.00|N|O|1996-10-04|1996-10-22|1996-11-01|NONE|MAIL|counts alo|
-1634|172|3|2|44|47175.48|0.05|0.01|N|O|1996-09-17|1996-11-09|1996-10-03|COLLECT COD|SHIP|requests affix slyly. quickly even pack|
-1634|19|10|3|21|19299.21|0.06|0.07|N|O|1996-11-16|1996-10-21|1996-11-27|NONE|TRUCK|y along the excuses.|
-1634|68|3|4|17|16457.02|0.08|0.07|N|O|1996-10-29|1996-10-15|1996-11-02|TAKE BACK RETURN|SHIP|cial, bold platelets alongside of the f|
-1634|76|7|5|2|1952.14|0.07|0.04|N|O|1996-11-22|1996-10-28|1996-12-17|NONE|SHIP|ly. carefully regular asymptotes wake|
-1634|170|9|6|11|11771.87|0.01|0.08|N|O|1996-10-04|1996-12-06|1996-10-14|DELIVER IN PERSON|SHIP|final requests |
-1634|13|7|7|35|31955.35|0.06|0.02|N|O|1996-11-25|1996-11-25|1996-12-12|TAKE BACK RETURN|RAIL|cies. regular, special de|
-1635|71|1|1|3|2913.21|0.06|0.08|N|O|1997-03-13|1997-03-25|1997-03-27|COLLECT COD|FOB| quickly ironic r|
-1635|90|1|2|8|7920.72|0.04|0.05|N|O|1997-04-30|1997-04-21|1997-05-09|DELIVER IN PERSON|AIR|ravely carefully express |
-1635|114|5|3|20|20282.20|0.07|0.01|N|O|1997-05-19|1997-04-01|1997-06-17|TAKE BACK RETURN|FOB|oost according to the carefully even accou|
-1635|77|5|4|40|39082.80|0.01|0.04|N|O|1997-02-25|1997-03-20|1997-03-12|TAKE BACK RETURN|RAIL|uriously up the ironic deposits. slyly i|
-1636|85|6|1|2|1970.16|0.09|0.03|N|O|1997-09-26|1997-08-22|1997-10-05|NONE|TRUCK|nal foxes cajole above the blithely reg|
-1636|169|10|2|45|48112.20|0.03|0.01|N|O|1997-07-14|1997-08-08|1997-07-27|COLLECT COD|RAIL|ely express reque|
-1636|108|1|3|24|24194.40|0.07|0.08|N|O|1997-10-07|1997-08-12|1997-11-04|TAKE BACK RETURN|MAIL|e carefully unusual ideas are f|
-1636|153|1|4|43|45285.45|0.06|0.00|N|O|1997-08-23|1997-08-10|1997-09-17|NONE|REG AIR|blithely special r|
-1636|19|6|5|22|20218.22|0.05|0.02|N|O|1997-07-22|1997-08-18|1997-08-03|COLLECT COD|AIR|ular, regu|
-1636|63|2|6|34|32744.04|0.10|0.01|N|O|1997-08-11|1997-09-09|1997-08-23|NONE|TRUCK|ular depos|
-1636|114|1|7|7|7098.77|0.04|0.00|N|O|1997-07-28|1997-09-10|1997-07-31|NONE|MAIL|ronic instructions. final|
-1637|86|7|1|49|48317.92|0.02|0.03|N|F|1995-06-08|1995-04-19|1995-07-01|COLLECT COD|REG AIR|. blithely i|
-1637|73|2|2|1|973.07|0.10|0.02|A|F|1995-02-14|1995-03-26|1995-03-09|TAKE BACK RETURN|AIR|ly final pinto beans. furiously|
-1637|22|1|3|10|9220.20|0.02|0.05|R|F|1995-02-21|1995-03-17|1995-03-11|NONE|AIR|uriously? blithely even sauternes wake. |
-1637|93|5|4|42|41709.78|0.06|0.01|A|F|1995-03-18|1995-04-24|1995-03-31|COLLECT COD|SHIP|blithely a|
-1637|5|8|5|25|22625.00|0.05|0.00|R|F|1995-06-07|1995-03-26|1995-06-08|COLLECT COD|RAIL| haggle carefully silent accou|
-1637|109|4|6|38|38345.80|0.02|0.08|R|F|1995-03-20|1995-05-05|1995-04-14|DELIVER IN PERSON|SHIP|even, pending foxes nod regular|
-1637|52|10|7|21|19993.05|0.07|0.08|A|F|1995-04-30|1995-04-30|1995-05-05|COLLECT COD|SHIP|ly ironic theodolites use b|
-1638|6|7|1|46|41676.00|0.03|0.02|N|O|1997-10-16|1997-10-28|1997-11-09|COLLECT COD|MAIL|otes haggle before the slyly bold instructi|
-1638|149|10|2|30|31474.20|0.00|0.04|N|O|1997-12-05|1997-09-17|1997-12-06|NONE|REG AIR|s cajole boldly bold requests. closely |
-1638|31|7|3|5|4655.15|0.08|0.07|N|O|1997-10-15|1997-11-01|1997-11-08|DELIVER IN PERSON|FOB|xcuses sleep furiou|
-1638|56|8|4|19|18164.95|0.00|0.08|N|O|1997-10-15|1997-10-27|1997-11-03|DELIVER IN PERSON|MAIL| quickly expres|
-1638|143|6|5|25|26078.50|0.05|0.03|N|O|1997-10-06|1997-09-30|1997-11-02|DELIVER IN PERSON|REG AIR|gle final, ironic pinto beans. |
-1638|155|10|6|46|48536.90|0.07|0.08|N|O|1997-08-20|1997-10-10|1997-09-09|COLLECT COD|AIR|ckages are carefully even instru|
-1639|187|8|1|24|26092.32|0.07|0.00|N|O|1995-08-24|1995-10-06|1995-08-31|COLLECT COD|REG AIR| the regular packages. courts dou|
-1639|43|6|2|38|35835.52|0.01|0.04|N|O|1995-08-23|1995-11-09|1995-08-29|TAKE BACK RETURN|FOB|y regular packages. b|
-1639|171|10|3|41|43917.97|0.04|0.02|N|O|1995-12-19|1995-11-11|1996-01-12|DELIVER IN PERSON|FOB|structions w|
-1664|118|5|1|48|48869.28|0.04|0.02|N|O|1996-06-21|1996-05-01|1996-07-19|TAKE BACK RETURN|RAIL| use. ironic deposits integrate. slyly unu|
-1664|173|2|2|30|32195.10|0.06|0.05|N|O|1996-04-04|1996-05-04|1996-05-03|COLLECT COD|FOB|ess multip|
-1664|151|2|3|10|10511.50|0.00|0.06|N|O|1996-04-10|1996-05-13|1996-05-07|TAKE BACK RETURN|RAIL|instructions up the acc|
-1664|155|3|4|35|36930.25|0.00|0.04|N|O|1996-03-06|1996-05-16|1996-03-09|DELIVER IN PERSON|REG AIR|y regular ide|
-1664|57|8|5|9|8613.45|0.07|0.04|N|O|1996-04-15|1996-05-14|1996-05-11|DELIVER IN PERSON|TRUCK|ges. fluffil|
-1664|141|8|6|40|41645.60|0.09|0.07|N|O|1996-04-02|1996-04-22|1996-04-17|COLLECT COD|REG AIR|se blithely unusual pains. carefully|
-1665|47|6|1|4|3788.16|0.02|0.03|A|F|1994-09-01|1994-06-07|1994-09-12|DELIVER IN PERSON|TRUCK|ely final requests. requests|
-1665|78|6|2|1|978.07|0.03|0.05|R|F|1994-05-22|1994-07-06|1994-05-24|TAKE BACK RETURN|TRUCK|sly final p|
-1666|185|6|1|30|32555.40|0.04|0.03|N|O|1995-10-28|1995-11-30|1995-11-18|TAKE BACK RETURN|AIR| breach evenly final accounts. r|
-1666|64|1|2|20|19281.20|0.01|0.00|N|O|1996-01-27|1995-12-12|1996-01-31|NONE|REG AIR|uietly regular foxes wake quick|
-1666|134|10|3|31|32058.03|0.05|0.07|N|O|1996-02-11|1996-01-11|1996-02-28|COLLECT COD|RAIL|ding to the express, bold accounts. fu|
-1666|169|8|4|41|43835.56|0.06|0.08|N|O|1995-11-29|1996-01-04|1995-12-24|NONE|TRUCK|ly regular excuses; regular ac|
-1667|21|4|1|6|5526.12|0.04|0.02|N|O|1997-12-07|1997-11-16|1998-01-02|COLLECT COD|FOB|riously busy requests. blithely final a|
-1667|22|1|2|29|26738.58|0.06|0.07|N|O|1997-10-15|1997-11-09|1997-11-11|TAKE BACK RETURN|MAIL|l accounts. furiously final courts h|
-1667|95|8|3|48|47764.32|0.05|0.01|N|O|1998-01-27|1998-01-06|1998-02-09|TAKE BACK RETURN|SHIP|tes sleep furiously. carefully eve|
-1667|59|1|4|24|23017.20|0.04|0.01|N|O|1997-10-14|1997-12-01|1997-11-09|TAKE BACK RETURN|MAIL|hrash final requests. care|
-1667|195|9|5|2|2190.38|0.07|0.00|N|O|1997-12-17|1997-11-22|1998-01-16|NONE|SHIP|pecial requests hag|
-1667|48|7|6|6|5688.24|0.01|0.03|N|O|1998-01-21|1997-12-19|1998-01-28|NONE|TRUCK| nag quickly above th|
-1667|40|6|7|19|17860.76|0.09|0.03|N|O|1998-01-23|1997-11-24|1998-01-26|DELIVER IN PERSON|SHIP|around the pinto beans. express, special|
-1668|132|8|1|8|8257.04|0.06|0.01|N|O|1997-07-23|1997-10-09|1997-08-06|DELIVER IN PERSON|FOB|arefully regular tithes! slyl|
-1668|1|8|2|25|22525.00|0.01|0.06|N|O|1997-08-08|1997-09-28|1997-09-01|NONE|TRUCK|y ironic requests. bold, final ideas a|
-1668|75|5|3|42|40952.94|0.08|0.01|N|O|1997-08-09|1997-09-08|1997-08-31|NONE|FOB|ole carefully excuses. final|
-1668|191|5|4|9|9820.71|0.05|0.03|N|O|1997-10-17|1997-09-05|1997-11-01|COLLECT COD|RAIL|wake furiously even instructions. sil|
-1668|128|9|5|25|25703.00|0.01|0.02|N|O|1997-10-08|1997-09-20|1997-10-11|DELIVER IN PERSON|REG AIR|even platelets across the silent |
-1668|10|3|6|38|34580.38|0.07|0.01|N|O|1997-08-26|1997-09-17|1997-09-05|DELIVER IN PERSON|TRUCK|ep slyly across the furi|
-1669|79|10|1|24|23497.68|0.04|0.08|N|O|1997-09-04|1997-07-30|1997-09-20|DELIVER IN PERSON|RAIL| regular, final deposits use quick|
-1670|32|3|1|41|38213.23|0.07|0.01|N|O|1997-07-19|1997-08-20|1997-07-23|DELIVER IN PERSON|TRUCK|thely according to the sly|
-1670|122|3|2|10|10221.20|0.07|0.03|N|O|1997-09-14|1997-08-16|1997-09-23|NONE|SHIP|fily special ideas |
-1670|186|7|3|41|44533.38|0.07|0.07|N|O|1997-07-19|1997-08-05|1997-07-26|COLLECT COD|SHIP|al gifts. speci|
-1671|149|2|1|21|22031.94|0.02|0.07|N|O|1996-07-28|1996-09-28|1996-08-08|TAKE BACK RETURN|AIR|s accounts slee|
-1671|96|10|2|4|3984.36|0.05|0.00|N|O|1996-08-30|1996-09-19|1996-09-23|DELIVER IN PERSON|TRUCK|lyly regular ac|
-1671|124|3|3|11|11265.32|0.06|0.08|N|O|1996-09-16|1996-10-21|1996-09-18|NONE|SHIP|tes sleep blithely|
-1671|178|7|4|5|5390.85|0.00|0.00|N|O|1996-11-14|1996-10-20|1996-11-25|TAKE BACK RETURN|FOB|luffily regular deposits|
-1671|127|8|5|12|12325.44|0.07|0.04|N|O|1996-11-17|1996-09-02|1996-12-17|COLLECT COD|RAIL|special, ironic|
-1671|197|9|6|46|50470.74|0.08|0.05|N|O|1996-09-13|1996-10-14|1996-09-28|TAKE BACK RETURN|REG AIR|. slyly bold instructions boost. furiousl|
-1696|16|3|1|8|7328.08|0.04|0.02|N|O|1998-04-28|1998-02-07|1998-05-10|NONE|TRUCK|the blithely|
-1696|139|5|2|13|13508.69|0.08|0.06|N|O|1998-03-01|1998-03-25|1998-03-24|TAKE BACK RETURN|TRUCK|tructions play slyly q|
-1696|2|5|3|19|17138.00|0.08|0.05|N|O|1998-05-03|1998-03-13|1998-05-28|TAKE BACK RETURN|REG AIR|its maintain alongside of the f|
-1696|193|4|4|21|22956.99|0.05|0.00|N|O|1998-05-04|1998-02-18|1998-05-07|NONE|MAIL|y players sleep along the final, pending |
-1696|94|7|5|43|42745.87|0.03|0.06|N|O|1998-02-14|1998-03-29|1998-02-20|COLLECT COD|FOB|arefully regular dep|
-1697|75|5|1|6|5850.42|0.05|0.00|N|O|1997-01-28|1996-11-27|1997-01-31|NONE|FOB|accounts breach slyly even de|
-1697|104|7|2|24|24098.40|0.00|0.08|N|O|1996-12-29|1996-12-19|1997-01-10|NONE|SHIP|ts cajole carefully above the carefully|
-1697|124|9|3|27|27651.24|0.06|0.00|N|O|1997-01-20|1996-12-02|1997-02-05|COLLECT COD|MAIL|ly regular packages across the silent, b|
-1697|94|5|4|49|48710.41|0.08|0.04|N|O|1996-12-07|1997-01-02|1996-12-31|COLLECT COD|TRUCK|lar foxes. fluffily furious ideas doubt qu|
-1697|35|1|5|19|17765.57|0.03|0.07|N|O|1997-01-08|1996-11-12|1997-01-11|DELIVER IN PERSON|FOB|ons? special, special accounts after|
-1698|97|8|1|44|43871.96|0.05|0.05|N|O|1997-05-16|1997-07-05|1997-05-27|NONE|RAIL|ts wake slyly after t|
-1698|93|5|2|6|5958.54|0.08|0.00|N|O|1997-08-21|1997-06-08|1997-09-03|DELIVER IN PERSON|RAIL| pending packages affix ne|
-1698|21|6|3|22|20262.44|0.03|0.04|N|O|1997-08-07|1997-05-28|1997-08-24|DELIVER IN PERSON|TRUCK|oward the furiously iro|
-1698|112|6|4|19|19230.09|0.00|0.07|N|O|1997-07-04|1997-06-21|1997-08-01|NONE|RAIL| fluffily e|
-1698|53|4|5|37|35262.85|0.00|0.03|N|O|1997-05-16|1997-05-29|1997-05-27|NONE|AIR|ly regular ideas. deposit|
-1698|166|7|6|15|15992.40|0.10|0.01|N|O|1997-07-20|1997-06-07|1997-07-21|TAKE BACK RETURN|RAIL|final ideas. even, ironic |
-1699|38|9|1|50|46901.50|0.00|0.06|A|F|1994-03-26|1994-03-23|1994-04-20|NONE|FOB|to the final requests are carefully silent |
-1699|135|6|2|17|17597.21|0.07|0.02|R|F|1994-01-12|1994-03-12|1994-02-08|NONE|AIR|haggle blithely slyly|
-1700|140|1|1|38|39525.32|0.04|0.04|N|O|1996-10-03|1996-07-27|1996-10-22|NONE|RAIL|ular dependencies engage slyly |
-1700|156|7|2|49|51751.35|0.04|0.00|N|O|1996-09-26|1996-07-28|1996-10-16|NONE|TRUCK|kly even dependencies haggle fluffi|
-1701|150|9|1|47|49357.05|0.08|0.05|R|F|1992-05-25|1992-06-29|1992-06-15|NONE|RAIL|slyly final requests cajole requests. f|
-1701|54|5|2|2|1908.10|0.01|0.04|R|F|1992-06-24|1992-07-12|1992-06-29|COLLECT COD|SHIP|ween the pending, final accounts. |
-1701|35|1|3|26|24310.78|0.10|0.06|R|F|1992-06-04|1992-07-11|1992-07-04|DELIVER IN PERSON|FOB| accounts. blithely pending pinto be|
-1702|67|2|1|19|18374.14|0.02|0.01|N|F|1995-06-02|1995-06-30|1995-06-29|NONE|REG AIR|ies haggle blith|
-1702|30|5|2|38|35341.14|0.00|0.00|N|O|1995-09-01|1995-06-10|1995-09-10|DELIVER IN PERSON|REG AIR|as believe blithely. bo|
-1702|195|6|3|46|50378.74|0.00|0.08|N|O|1995-07-14|1995-06-30|1995-07-20|NONE|FOB|y even foxes. carefully final dependencies |
-1702|93|4|4|28|27806.52|0.07|0.05|R|F|1995-06-10|1995-07-26|1995-06-16|TAKE BACK RETURN|AIR|nts haggle along the packa|
-1702|89|10|5|34|33628.72|0.01|0.06|N|O|1995-07-04|1995-06-08|1995-07-28|DELIVER IN PERSON|AIR|y careful packages; dogged acco|
-1702|42|9|6|28|26377.12|0.10|0.00|N|O|1995-08-14|1995-07-31|1995-09-08|COLLECT COD|RAIL|ackages sleep. furiously even excuses snooz|
-1703|166|5|1|36|38381.76|0.09|0.01|R|F|1993-04-22|1993-03-05|1993-04-24|DELIVER IN PERSON|SHIP|riously express |
-1703|137|8|2|35|36299.55|0.01|0.08|R|F|1993-04-14|1993-03-31|1993-04-27|NONE|RAIL|he carefully|
-1703|124|5|3|48|49157.76|0.06|0.02|R|F|1993-02-07|1993-04-20|1993-02-24|TAKE BACK RETURN|AIR|ggle slyly furiously regular theodol|
-1728|126|5|1|1|1026.12|0.07|0.04|N|O|1996-09-16|1996-08-19|1996-09-18|COLLECT COD|FOB|lly. carefully ex|
-1728|105|8|2|23|23117.30|0.05|0.02|N|O|1996-09-08|1996-07-24|1996-09-20|NONE|FOB|ns. pending, final ac|
-1728|165|10|3|44|46867.04|0.08|0.07|N|O|1996-07-31|1996-06-22|1996-08-06|COLLECT COD|FOB|ide of the slyly blithe|
-1728|27|8|4|34|31518.68|0.08|0.05|N|O|1996-08-28|1996-07-20|1996-09-12|DELIVER IN PERSON|MAIL|special req|
-1728|199|2|5|31|34074.89|0.09|0.02|N|O|1996-07-26|1996-06-28|1996-08-14|NONE|REG AIR|kly sly theodolites.|
-1729|157|8|1|12|12685.80|0.08|0.04|A|F|1992-08-11|1992-07-24|1992-08-16|COLLECT COD|RAIL|y pending packages detect. carefully re|
-1730|166|5|1|41|43712.56|0.01|0.03|N|O|1998-08-11|1998-08-29|1998-09-02|TAKE BACK RETURN|TRUCK| instructions. unusual, even Tiresi|
-1730|162|3|2|15|15932.40|0.07|0.04|N|O|1998-09-07|1998-09-12|1998-09-30|TAKE BACK RETURN|AIR|pinto beans cajole. bravely bold|
-1730|162|1|3|9|9559.44|0.10|0.00|N|O|1998-09-18|1998-09-15|1998-09-21|DELIVER IN PERSON|FOB|gular dependencies wake. blithely final e|
-1730|10|7|4|40|36400.40|0.02|0.03|N|O|1998-10-02|1998-10-06|1998-10-03|NONE|SHIP|ven dinos slee|
-1730|141|4|5|43|44769.02|0.04|0.06|N|O|1998-10-26|1998-10-22|1998-11-02|DELIVER IN PERSON|TRUCK|ng deposits cajo|
-1731|184|5|1|36|39030.48|0.10|0.00|N|O|1996-04-18|1996-04-03|1996-04-29|TAKE BACK RETURN|MAIL|ngside of the even instruct|
-1731|139|10|2|7|7273.91|0.04|0.07|N|O|1996-04-11|1996-02-13|1996-04-30|DELIVER IN PERSON|REG AIR|fily quick asymptotes|
-1731|51|9|3|50|47552.50|0.05|0.04|N|O|1996-01-14|1996-03-13|1996-01-29|COLLECT COD|RAIL|ly slyly speci|
-1731|196|10|4|23|25212.37|0.10|0.04|N|O|1996-04-22|1996-02-25|1996-05-16|TAKE BACK RETURN|RAIL|rays? bold, express pac|
-1731|53|4|5|37|35262.85|0.10|0.05|N|O|1996-04-30|1996-03-17|1996-05-27|TAKE BACK RETURN|RAIL| beans use furiously slyly b|
-1731|124|7|6|41|41988.92|0.03|0.08|N|O|1996-04-05|1996-02-28|1996-05-01|TAKE BACK RETURN|RAIL|haggle across the blithely ironi|
-1732|5|6|1|50|45250.00|0.02|0.01|R|F|1993-12-05|1994-01-23|1993-12-20|TAKE BACK RETURN|FOB|fily final asymptotes according |
-1732|99|10|2|36|35967.24|0.01|0.03|A|F|1994-03-15|1994-02-09|1994-04-02|DELIVER IN PERSON|TRUCK|ve the accounts. slowly ironic multip|
-1732|161|8|3|41|43507.56|0.00|0.04|R|F|1994-02-20|1994-01-07|1994-02-27|TAKE BACK RETURN|AIR|quests sublate against the silent |
-1732|152|3|4|9|9469.35|0.04|0.04|A|F|1994-02-25|1994-01-29|1994-03-16|TAKE BACK RETURN|FOB|ular platelets. deposits wak|
-1732|169|8|5|25|26729.00|0.02|0.05|A|F|1994-02-15|1994-01-07|1994-02-21|COLLECT COD|REG AIR|nag slyly. even, special de|
-1732|73|1|6|16|15569.12|0.01|0.05|R|F|1994-01-07|1994-01-02|1994-01-25|COLLECT COD|SHIP|ix carefully at the furiously regular pac|
-1733|111|5|1|41|41455.51|0.08|0.01|N|O|1996-06-13|1996-07-08|1996-07-07|TAKE BACK RETURN|AIR|ess notornis. fur|
-1733|24|7|2|16|14784.32|0.00|0.04|N|O|1996-08-28|1996-07-25|1996-09-27|COLLECT COD|MAIL|slyly express deposits sleep abo|
-1733|120|10|3|29|29583.48|0.10|0.06|N|O|1996-07-16|1996-08-08|1996-07-28|NONE|TRUCK|ns detect among the special accounts. qu|
-1733|136|7|4|38|39372.94|0.01|0.03|N|O|1996-08-26|1996-07-23|1996-08-28|NONE|FOB| deposits |
-1733|34|5|5|22|20548.66|0.06|0.07|N|O|1996-07-16|1996-07-24|1996-07-30|COLLECT COD|AIR|gainst the final deposits. carefully final |
-1733|66|7|6|9|8694.54|0.06|0.08|N|O|1996-05-25|1996-07-23|1996-06-10|COLLECT COD|TRUCK|ven foxes was according to t|
-1733|146|9|7|13|13599.82|0.02|0.03|N|O|1996-08-03|1996-08-02|1996-08-18|NONE|MAIL|olites sleep furious|
-1734|155|3|1|38|40095.70|0.03|0.03|R|F|1994-08-09|1994-09-07|1994-08-12|COLLECT COD|FOB|ts doubt b|
-1734|118|2|2|4|4072.44|0.06|0.03|A|F|1994-08-20|1994-07-17|1994-08-25|DELIVER IN PERSON|AIR|final warhorses.|
-1735|156|7|1|43|45414.45|0.02|0.06|A|F|1993-01-14|1993-03-25|1993-02-02|DELIVER IN PERSON|FOB|iously after the |
-1735|139|5|2|49|50917.37|0.03|0.04|A|F|1992-12-31|1993-02-03|1993-01-25|TAKE BACK RETURN|TRUCK|y express accounts above the exp|
-1760|96|9|1|38|37851.42|0.09|0.03|N|O|1996-06-15|1996-06-29|1996-07-11|NONE|MAIL|tions. blithely regular orbits against the |
-1760|8|9|2|3|2724.00|0.00|0.06|N|O|1996-07-18|1996-07-01|1996-08-01|NONE|RAIL|lyly bold dolphins haggle carefully. sl|
-1760|137|8|3|44|45633.72|0.05|0.01|N|O|1996-06-11|1996-06-16|1996-07-02|COLLECT COD|REG AIR|instructions poach slyly ironic theodolites|
-1761|52|4|1|33|31417.65|0.09|0.03|R|F|1994-01-03|1994-01-23|1994-01-31|NONE|FOB|s. excuses a|
-1761|52|3|2|37|35225.85|0.02|0.07|R|F|1994-02-17|1994-03-08|1994-03-16|NONE|RAIL| integrate. quickly unusual|
-1761|49|6|3|37|35114.48|0.06|0.04|R|F|1994-01-02|1994-03-12|1994-01-25|DELIVER IN PERSON|TRUCK|regular packages wake after|
-1761|73|1|4|49|47680.43|0.06|0.07|R|F|1994-01-08|1994-03-03|1994-02-05|TAKE BACK RETURN|FOB|y even packages promise|
-1761|157|5|5|37|39114.55|0.03|0.04|R|F|1994-04-24|1994-03-14|1994-04-29|TAKE BACK RETURN|MAIL|express requests print blithely around the|
-1761|24|7|6|12|11088.24|0.01|0.05|A|F|1994-04-16|1994-03-08|1994-04-21|DELIVER IN PERSON|AIR| sleep furiously. deposits are acco|
-1761|1|6|7|13|11713.00|0.03|0.08|R|F|1994-03-06|1994-03-18|1994-03-22|DELIVER IN PERSON|TRUCK|ons boost fu|
-1762|26|5|1|15|13890.30|0.04|0.08|A|F|1994-12-18|1994-10-29|1995-01-17|TAKE BACK RETURN|REG AIR|old packages thrash. care|
-1762|50|3|2|39|37051.95|0.10|0.02|A|F|1994-09-12|1994-11-09|1994-10-08|DELIVER IN PERSON|MAIL| ironic platelets sleep along t|
-1762|32|8|3|7|6524.21|0.05|0.01|R|F|1994-09-03|1994-10-02|1994-09-10|NONE|REG AIR|uickly express packages wake slyly-- regul|
-1762|145|2|4|24|25083.36|0.03|0.03|A|F|1994-11-30|1994-11-02|1994-12-20|NONE|REG AIR|accounts solve alongside of the fluffily |
-1762|8|9|5|49|44492.00|0.08|0.05|A|F|1994-10-20|1994-11-02|1994-11-10|TAKE BACK RETURN|SHIP| packages sleep fluffily pen|
-1762|94|7|6|35|34793.15|0.05|0.05|A|F|1994-11-25|1994-10-21|1994-11-28|COLLECT COD|AIR|ind quickly. accounts ca|
-1762|73|3|7|47|45734.29|0.03|0.01|A|F|1994-11-02|1994-10-07|1994-11-08|NONE|SHIP| blithely brave|
-1763|12|9|1|22|20064.22|0.09|0.06|N|O|1997-01-17|1997-01-15|1997-02-03|TAKE BACK RETURN|SHIP|ld. fluffily final ideas boos|
-1763|157|5|2|43|45457.45|0.04|0.04|N|O|1996-11-04|1996-12-09|1996-11-28|DELIVER IN PERSON|FOB|r deposits integrate blithely pending, quic|
-1763|25|10|3|16|14800.32|0.06|0.02|N|O|1996-12-12|1996-12-04|1996-12-25|DELIVER IN PERSON|RAIL|ously pending asymptotes a|
-1763|61|6|4|44|42286.64|0.04|0.05|N|O|1996-12-04|1997-01-06|1996-12-25|DELIVER IN PERSON|REG AIR| instructions need to integrate deposits. |
-1763|147|4|5|13|13612.82|0.03|0.05|N|O|1996-11-23|1997-01-24|1996-12-05|TAKE BACK RETURN|SHIP|s sleep carefully. fluffily unusua|
-1763|143|4|6|3|3129.42|0.05|0.03|N|O|1996-12-10|1996-12-06|1997-01-04|TAKE BACK RETURN|FOB|ut the slyly pending deposi|
-1763|184|5|7|2|2168.36|0.05|0.07|N|O|1997-02-27|1996-12-04|1997-03-27|COLLECT COD|FOB|even pinto beans snooze fluffi|
-1764|121|2|1|20|20422.40|0.09|0.02|A|F|1992-06-09|1992-05-22|1992-07-06|COLLECT COD|MAIL|y quickly regular packages. car|
-1764|67|4|2|3|2901.18|0.07|0.07|R|F|1992-05-13|1992-06-07|1992-05-26|COLLECT COD|RAIL|es wake slowly. |
-1764|78|6|3|27|26407.89|0.07|0.04|A|F|1992-05-06|1992-05-11|1992-05-23|COLLECT COD|TRUCK|ly final foxes wake blithely even requests|
-1765|161|2|1|36|38201.76|0.08|0.04|N|O|1996-03-02|1996-02-17|1996-03-14|DELIVER IN PERSON|SHIP|he blithely pending accou|
-1766|87|8|1|32|31586.56|0.08|0.01|N|O|1997-01-08|1996-11-11|1997-01-31|TAKE BACK RETURN|AIR|ess accounts. stealthily ironic accou|
-1766|34|10|2|12|11208.36|0.05|0.01|N|O|1996-10-28|1996-12-18|1996-11-15|DELIVER IN PERSON|AIR|heodolites above the final, regular acc|
-1766|111|1|3|1|1011.11|0.10|0.02|N|O|1997-01-21|1997-01-07|1997-02-19|NONE|TRUCK|ly blithely pending accounts. reg|
-1767|25|4|1|32|29600.64|0.08|0.04|A|F|1995-05-22|1995-05-14|1995-05-23|COLLECT COD|SHIP|to the bravely ironic requests i|
-1767|42|1|2|1|942.04|0.09|0.05|N|O|1995-06-23|1995-05-25|1995-07-03|TAKE BACK RETURN|RAIL|ing to the slyly fin|
-1767|174|5|3|24|25780.08|0.06|0.03|R|F|1995-03-16|1995-04-29|1995-04-11|DELIVER IN PERSON|RAIL|luffy theodolites need to detect furi|
-1767|23|8|4|50|46151.00|0.01|0.02|R|F|1995-05-29|1995-04-14|1995-06-15|NONE|REG AIR|y unusual foxe|
-1767|52|10|5|40|38082.00|0.06|0.00|R|F|1995-04-16|1995-05-06|1995-04-21|TAKE BACK RETURN|AIR|ep. accounts nag blithely fu|
-1792|88|9|1|9|8892.72|0.09|0.04|R|F|1994-02-28|1993-12-11|1994-03-12|TAKE BACK RETURN|AIR|final packages s|
-1792|9|6|2|5|4545.00|0.04|0.02|R|F|1994-02-13|1994-01-03|1994-02-28|DELIVER IN PERSON|TRUCK|ely regular accounts are slyly. pending, bo|
-1792|9|2|3|8|7272.00|0.01|0.04|A|F|1994-02-21|1994-01-26|1994-02-27|DELIVER IN PERSON|RAIL|nts. fluffily special instructions integr|
-1792|191|3|4|45|49103.55|0.00|0.01|A|F|1994-02-27|1993-12-24|1994-03-07|DELIVER IN PERSON|MAIL|ests are. ironic, regular asy|
-1792|199|2|5|35|38471.65|0.06|0.05|R|F|1994-01-31|1994-01-20|1994-02-17|NONE|FOB|e against the quic|
-1793|48|5|1|29|27493.16|0.01|0.06|R|F|1992-10-24|1992-09-20|1992-11-23|NONE|MAIL|ar excuses. |
-1793|126|9|2|4|4104.48|0.07|0.05|A|F|1992-07-28|1992-08-26|1992-08-21|COLLECT COD|RAIL|nic foxes along the even|
-1793|131|7|3|6|6186.78|0.01|0.05|R|F|1992-09-21|1992-09-05|1992-10-01|DELIVER IN PERSON|REG AIR|uctions; depo|
-1793|118|8|4|4|4072.44|0.00|0.08|R|F|1992-09-27|1992-09-21|1992-10-07|DELIVER IN PERSON|AIR|equests nod ac|
-1793|25|6|5|42|38850.84|0.03|0.03|A|F|1992-10-13|1992-10-02|1992-11-06|NONE|RAIL|uctions sleep carefully special, fl|
-1794|168|9|1|36|38453.76|0.09|0.08|N|O|1997-11-07|1997-11-01|1997-11-18|TAKE BACK RETURN|FOB|ely fluffily ironi|
-1794|95|8|2|3|2985.27|0.02|0.03|N|O|1997-11-15|1997-12-16|1997-11-20|DELIVER IN PERSON|FOB| sentiments according to the q|
-1794|117|8|3|23|23393.53|0.08|0.04|N|O|1997-10-13|1997-11-30|1997-10-28|TAKE BACK RETURN|AIR|usly unusual theodolites doze about |
-1794|85|6|4|34|33492.72|0.06|0.08|N|O|1997-09-29|1997-11-13|1997-10-07|TAKE BACK RETURN|SHIP|rs above the accoun|
-1794|117|4|5|47|47804.17|0.10|0.06|N|O|1998-01-15|1997-11-30|1998-02-14|DELIVER IN PERSON|TRUCK| haggle slyly. furiously express orbit|
-1794|91|3|6|37|36670.33|0.01|0.01|N|O|1998-01-12|1997-12-21|1998-01-17|DELIVER IN PERSON|MAIL|ackages. pinto|
-1795|137|8|1|44|45633.72|0.08|0.08|A|F|1994-04-28|1994-05-24|1994-05-27|NONE|AIR|ites sleep carefully slyly p|
-1795|114|5|2|34|34479.74|0.08|0.00|A|F|1994-04-24|1994-06-01|1994-05-08|DELIVER IN PERSON|SHIP|closely regular instructions wake. |
-1795|168|3|3|25|26704.00|0.07|0.01|A|F|1994-05-18|1994-05-22|1994-05-20|TAKE BACK RETURN|RAIL|he always express accounts ca|
-1795|125|8|4|32|32803.84|0.03|0.06|R|F|1994-05-10|1994-04-21|1994-05-17|DELIVER IN PERSON|SHIP| asymptotes across the bold,|
-1795|163|8|5|11|11694.76|0.08|0.02|R|F|1994-06-19|1994-04-24|1994-07-02|TAKE BACK RETURN|TRUCK|slyly. special pa|
-1796|10|1|1|28|25480.28|0.08|0.04|A|F|1992-12-01|1993-01-01|1992-12-24|DELIVER IN PERSON|FOB|y quickly ironic accounts.|
-1796|185|6|2|8|8681.44|0.00|0.08|R|F|1993-01-07|1993-01-04|1993-01-10|NONE|SHIP|slyly bold accounts are furiously agains|
-1797|31|7|1|17|15827.51|0.01|0.02|N|O|1996-08-06|1996-07-11|1996-08-29|NONE|TRUCK| cajole carefully. unusual Tiresias e|
-1797|145|2|2|16|16722.24|0.01|0.00|N|O|1996-06-03|1996-07-21|1996-06-07|NONE|FOB|o beans wake regular accounts. blit|
-1797|12|9|3|21|19152.21|0.02|0.01|N|O|1996-08-05|1996-08-05|1996-08-06|DELIVER IN PERSON|AIR|ns. regular, regular deposit|
-1798|109|10|1|43|43391.30|0.01|0.08|N|O|1997-08-27|1997-10-23|1997-09-09|DELIVER IN PERSON|MAIL|ld packages sleep furiously. depend|
-1799|52|10|1|8|7616.40|0.04|0.08|R|F|1994-06-14|1994-05-27|1994-06-27|TAKE BACK RETURN|MAIL|ealms upon the special, ironic waters|
-1799|27|10|2|42|38934.84|0.02|0.02|R|F|1994-04-05|1994-04-28|1994-04-09|DELIVER IN PERSON|FOB|es pending |
-1824|120|10|1|45|45905.40|0.03|0.02|R|F|1994-08-21|1994-06-21|1994-09-19|NONE|RAIL|ent Tiresias. quickly express |
-1824|69|4|2|40|38762.40|0.10|0.03|A|F|1994-05-08|1994-07-24|1994-06-06|NONE|FOB|es mold furiously final instructions. s|
-1825|156|1|1|43|45414.45|0.05|0.05|A|F|1994-02-18|1994-02-19|1994-03-02|TAKE BACK RETURN|RAIL| accounts breach fluffily spe|
-1825|148|5|2|39|40877.46|0.00|0.00|R|F|1994-04-01|1994-01-12|1994-04-21|DELIVER IN PERSON|REG AIR|ual, bold ideas haggle above the quickly ir|
-1825|17|4|3|7|6419.07|0.04|0.03|A|F|1994-01-02|1994-01-30|1994-01-30|TAKE BACK RETURN|REG AIR|fully ironic requests. requests cajole ex|
-1825|121|10|4|23|23485.76|0.05|0.01|R|F|1994-01-08|1994-02-08|1994-01-19|NONE|MAIL| wake express, even r|
-1825|178|9|5|33|35579.61|0.04|0.04|A|F|1993-12-07|1994-03-01|1993-12-16|TAKE BACK RETURN|RAIL|about the ne|
-1826|27|10|1|4|3708.08|0.06|0.00|R|F|1992-07-05|1992-06-12|1992-08-04|DELIVER IN PERSON|MAIL|alongside of the quickly unusual re|
-1826|68|3|2|9|8712.54|0.07|0.07|R|F|1992-07-12|1992-07-11|1992-07-15|DELIVER IN PERSON|TRUCK| blithely special|
-1826|176|4|3|14|15066.38|0.05|0.01|A|F|1992-04-28|1992-05-31|1992-05-25|COLLECT COD|TRUCK|uriously bold pinto beans are carefully ag|
-1826|180|9|4|6|6481.08|0.05|0.04|R|F|1992-06-30|1992-05-17|1992-07-30|DELIVER IN PERSON|RAIL|kages. blithely silent|
-1826|135|1|5|46|47615.98|0.05|0.06|R|F|1992-05-02|1992-06-25|1992-05-26|TAKE BACK RETURN|FOB|ously? quickly pe|
-1826|108|3|6|43|43348.30|0.02|0.03|A|F|1992-07-28|1992-06-14|1992-08-03|NONE|MAIL|ss tithes use even ideas. fluffily final t|
-1827|90|1|1|47|46534.23|0.00|0.01|N|O|1996-08-01|1996-08-07|1996-08-23|TAKE BACK RETURN|RAIL|. pending courts about the even e|
-1827|154|9|2|48|50599.20|0.03|0.05|N|O|1996-08-28|1996-09-15|1996-09-01|COLLECT COD|RAIL|oxes. special, final asymptote|
-1827|200|1|3|37|40707.40|0.01|0.07|N|O|1996-07-20|1996-08-18|1996-08-08|DELIVER IN PERSON|REG AIR|ously ironic theodolites serve quickly af|
-1827|127|10|4|4|4108.48|0.04|0.04|N|O|1996-07-22|1996-09-10|1996-08-11|DELIVER IN PERSON|RAIL|special requests. blithely|
-1827|80|10|5|24|23521.92|0.00|0.08|N|O|1996-08-07|1996-09-01|1996-09-04|DELIVER IN PERSON|SHIP|al gifts! re|
-1827|21|2|6|7|6447.14|0.10|0.02|N|O|1996-08-28|1996-08-07|1996-08-31|DELIVER IN PERSON|AIR|egular foxes|
-1827|6|7|7|38|34428.00|0.05|0.01|N|O|1996-10-17|1996-08-29|1996-11-07|TAKE BACK RETURN|SHIP| blithely. express, bo|
-1828|100|4|1|33|33003.30|0.05|0.04|R|F|1994-06-27|1994-06-10|1994-07-24|COLLECT COD|FOB|s boost carefully. pending d|
-1828|13|3|2|40|36520.40|0.08|0.07|R|F|1994-05-05|1994-07-02|1994-05-19|COLLECT COD|REG AIR|s use above the quietly fin|
-1828|196|7|3|11|12058.09|0.07|0.08|R|F|1994-07-21|1994-05-28|1994-08-13|DELIVER IN PERSON|FOB| wake blithely |
-1828|8|3|4|45|40860.00|0.02|0.05|R|F|1994-05-15|1994-05-29|1994-05-28|COLLECT COD|RAIL| accounts run slyly |
-1828|79|7|5|14|13706.98|0.01|0.08|A|F|1994-05-20|1994-06-02|1994-05-25|TAKE BACK RETURN|SHIP|. final packages along the carefully bold|
-1829|150|7|1|12|12601.80|0.05|0.06|A|F|1994-08-23|1994-07-13|1994-09-04|DELIVER IN PERSON|FOB|ges wake furiously express pinto|
-1829|5|6|2|11|9955.00|0.04|0.05|A|F|1994-05-18|1994-06-13|1994-06-07|COLLECT COD|MAIL|ding orbits|
-1829|104|9|3|49|49200.90|0.09|0.08|A|F|1994-08-26|1994-08-01|1994-09-16|NONE|TRUCK|ound the quickly |
-1829|153|4|4|14|14744.10|0.03|0.06|A|F|1994-08-15|1994-06-08|1994-08-30|TAKE BACK RETURN|AIR|regular deposits alongside of the flu|
-1829|166|5|5|6|6396.96|0.02|0.07|A|F|1994-08-09|1994-08-05|1994-09-05|DELIVER IN PERSON|MAIL|s haggle! slyl|
-1829|115|5|6|36|36543.96|0.09|0.04|R|F|1994-06-10|1994-06-23|1994-06-22|NONE|FOB|ackages-- express requests sleep; pen|
-1830|120|4|1|38|38764.56|0.00|0.07|R|F|1995-04-20|1995-05-22|1995-04-24|TAKE BACK RETURN|TRUCK|ely even a|
-1830|25|10|2|9|8325.18|0.05|0.07|R|F|1995-03-09|1995-05-24|1995-03-14|NONE|SHIP|st furiously among |
-1830|82|3|3|36|35354.88|0.07|0.07|R|F|1995-04-21|1995-04-14|1995-05-10|DELIVER IN PERSON|SHIP| slowly unusual orbits. carefull|
-1831|136|2|1|9|9325.17|0.02|0.03|A|F|1993-12-17|1994-01-27|1993-12-26|NONE|TRUCK|mptotes. furiously regular dolphins al|
-1831|48|9|2|9|8532.36|0.07|0.06|R|F|1994-03-22|1994-01-07|1994-04-06|COLLECT COD|MAIL|ent deposits. regular saute|
-1831|115|5|3|17|17256.87|0.02|0.08|R|F|1994-01-18|1994-02-12|1994-01-30|TAKE BACK RETURN|MAIL|s boost ironic foxe|
-1831|95|8|4|23|22887.07|0.06|0.02|R|F|1993-12-21|1994-02-08|1994-01-04|NONE|SHIP|ests. express pinto beans abou|
-1856|55|10|1|10|9550.50|0.05|0.07|R|F|1992-05-11|1992-05-20|1992-06-02|TAKE BACK RETURN|FOB|he furiously even theodolites. account|
-1856|97|10|2|47|46863.23|0.07|0.07|R|F|1992-03-22|1992-06-09|1992-04-17|DELIVER IN PERSON|FOB|ingly blithe theodolites. slyly pending |
-1856|117|7|3|20|20342.20|0.04|0.06|R|F|1992-05-04|1992-05-06|1992-05-11|DELIVER IN PERSON|MAIL|ost carefully. slyly bold accounts|
-1856|150|1|4|22|23103.30|0.08|0.02|A|F|1992-05-02|1992-05-26|1992-05-20|TAKE BACK RETURN|REG AIR|platelets detect slyly regular packages. ca|
-1856|190|1|5|14|15262.66|0.01|0.01|A|F|1992-04-14|1992-05-02|1992-05-11|COLLECT COD|SHIP|ans are even requests. deposits caj|
-1856|23|6|6|36|33228.72|0.03|0.05|A|F|1992-06-19|1992-05-12|1992-06-28|TAKE BACK RETURN|TRUCK|ly even foxes kindle blithely even realm|
-1856|130|3|7|42|43265.46|0.04|0.00|R|F|1992-05-23|1992-06-06|1992-06-19|COLLECT COD|RAIL|usly final deposits|
-1857|174|5|1|15|16112.55|0.10|0.03|R|F|1993-04-05|1993-02-28|1993-04-13|COLLECT COD|RAIL|egular, regular inst|
-1857|167|6|2|40|42686.40|0.10|0.00|R|F|1993-02-15|1993-03-08|1993-02-21|NONE|AIR|slyly close d|
-1857|119|3|3|8|8152.88|0.01|0.07|R|F|1993-01-27|1993-04-04|1993-02-20|TAKE BACK RETURN|AIR|slyly about the fluffily silent req|
-1857|100|3|4|41|41004.10|0.07|0.07|A|F|1993-04-16|1993-02-16|1993-04-18|NONE|REG AIR| the slyly|
-1858|14|8|1|33|30162.33|0.01|0.02|N|O|1997-12-28|1998-02-03|1998-01-13|NONE|RAIL|tect along the slyly final|
-1859|75|6|1|18|17551.26|0.10|0.00|N|O|1997-08-08|1997-06-30|1997-08-26|TAKE BACK RETURN|SHIP|e carefully a|
-1859|188|9|2|36|39174.48|0.02|0.01|N|O|1997-05-05|1997-07-08|1997-05-25|TAKE BACK RETURN|REG AIR|regular requests. carefully unusual theo|
-1859|158|10|3|5|5290.75|0.06|0.03|N|O|1997-06-20|1997-05-20|1997-07-19|TAKE BACK RETURN|AIR|across the p|
-1859|191|2|4|21|22914.99|0.00|0.03|N|O|1997-08-06|1997-05-29|1997-08-26|TAKE BACK RETURN|REG AIR|lar packages wake quickly exp|
-1859|46|3|5|11|10406.44|0.06|0.06|N|O|1997-07-15|1997-06-05|1997-07-29|TAKE BACK RETURN|SHIP|ffily ironic pac|
-1859|105|8|6|12|12061.20|0.08|0.03|N|O|1997-05-22|1997-06-08|1997-06-07|COLLECT COD|TRUCK|es. unusual, silent request|
-1860|113|4|1|9|9117.99|0.04|0.04|N|O|1996-08-03|1996-05-31|1996-08-04|DELIVER IN PERSON|TRUCK|c realms print carefully car|
-1861|68|5|1|7|6776.42|0.08|0.05|A|F|1994-01-14|1994-04-03|1994-01-16|COLLECT COD|RAIL|s foxes. slyly|
-1861|27|8|2|31|28737.62|0.10|0.05|R|F|1994-01-29|1994-03-07|1994-02-15|TAKE BACK RETURN|RAIL|arefully unusual|
-1861|24|9|3|23|21252.46|0.00|0.08|A|F|1994-04-09|1994-03-04|1994-04-11|DELIVER IN PERSON|MAIL|in packages sleep silent dolphins; sly|
-1861|116|6|4|38|38612.18|0.10|0.05|R|F|1994-02-26|1994-02-05|1994-03-01|NONE|RAIL|pending deposits cajole quic|
-1861|16|3|5|2|1832.02|0.03|0.08|R|F|1994-04-26|1994-03-15|1994-05-15|TAKE BACK RETURN|MAIL|e final, regular requests. carefully |
-1862|30|5|1|41|38131.23|0.10|0.00|N|O|1998-06-05|1998-05-17|1998-07-04|COLLECT COD|FOB| carefully along|
-1862|166|7|2|37|39447.92|0.06|0.02|N|O|1998-04-15|1998-05-15|1998-05-14|TAKE BACK RETURN|MAIL|l deposits. carefully even dep|
-1862|104|1|3|26|26106.60|0.02|0.01|N|O|1998-03-25|1998-05-17|1998-04-17|TAKE BACK RETURN|TRUCK|g carefully: thinly ironic deposits af|
-1863|63|2|1|48|46226.88|0.09|0.04|A|F|1993-10-10|1993-12-09|1993-10-19|NONE|FOB|ans hinder furiou|
-1863|157|2|2|48|50743.20|0.04|0.08|A|F|1993-11-08|1993-11-05|1993-12-08|COLLECT COD|AIR|onic theodolites alongside of the pending a|
-1888|98|10|1|27|26948.43|0.03|0.06|R|F|1994-02-13|1994-01-16|1994-02-25|NONE|REG AIR|. carefully special dolphins sle|
-1888|74|5|2|38|37014.66|0.03|0.03|R|F|1993-11-29|1994-01-16|1993-12-08|TAKE BACK RETURN|TRUCK|dazzle carefull|
-1888|80|1|3|49|48023.92|0.07|0.05|A|F|1994-02-27|1994-01-14|1994-03-28|DELIVER IN PERSON|FOB|lar accounts haggle carefu|
-1888|19|10|4|9|8271.09|0.01|0.04|A|F|1994-02-09|1994-01-22|1994-02-19|NONE|AIR| packages are blithely. carefu|
-1888|160|1|5|4|4240.64|0.03|0.06|R|F|1993-12-28|1993-12-19|1994-01-11|COLLECT COD|FOB|lphins. ironically special theodolit|
-1888|53|8|6|48|45746.40|0.08|0.08|R|F|1994-02-28|1993-12-16|1994-03-15|COLLECT COD|TRUCK|ar ideas cajole. regular p|
-1888|167|6|7|50|53358.00|0.04|0.07|R|F|1993-12-22|1994-01-10|1994-01-06|DELIVER IN PERSON|FOB|ependencies affix blithely regular warhors|
-1889|152|4|1|41|43138.15|0.10|0.02|N|O|1997-06-15|1997-05-10|1997-07-08|NONE|AIR|s! furiously pending r|
-1889|172|3|2|13|13938.21|0.05|0.00|N|O|1997-06-12|1997-04-28|1997-06-23|NONE|REG AIR|to the regular accounts. carefully express|
-1889|138|9|3|36|37372.68|0.05|0.07|N|O|1997-05-19|1997-06-14|1997-05-23|NONE|SHIP|l pinto beans kindle |
-1889|168|5|4|5|5340.80|0.02|0.07|N|O|1997-06-26|1997-06-09|1997-07-21|COLLECT COD|AIR|ording to the blithely silent r|
-1890|141|8|1|26|27069.64|0.03|0.07|N|O|1997-04-02|1997-03-13|1997-04-22|DELIVER IN PERSON|FOB|ngage. slyly ironic |
-1890|100|1|2|43|43004.30|0.07|0.03|N|O|1996-12-30|1997-01-31|1997-01-19|DELIVER IN PERSON|FOB|p ironic, express accounts. fu|
-1890|59|1|3|24|23017.20|0.06|0.04|N|O|1997-02-09|1997-02-10|1997-02-12|COLLECT COD|MAIL|is wake carefully above the even id|
-1890|68|9|4|43|41626.58|0.09|0.04|N|O|1997-04-08|1997-02-19|1997-04-30|TAKE BACK RETURN|FOB|lyly. instructions across the furiously|
-1890|122|3|5|45|45995.40|0.08|0.05|N|O|1997-04-15|1997-03-16|1997-04-19|COLLECT COD|FOB|he carefully regular sauternes. ironic fret|
-1890|181|2|6|16|17298.88|0.08|0.02|N|O|1997-02-13|1997-02-18|1997-03-12|TAKE BACK RETURN|TRUCK|ged pinto beans. regular, regular id|
-1890|121|4|7|10|10211.20|0.01|0.04|N|O|1996-12-24|1997-02-19|1997-01-01|DELIVER IN PERSON|AIR|. even, unusual inst|
-1891|77|8|1|45|43968.15|0.07|0.04|A|F|1994-12-20|1995-01-16|1995-01-05|NONE|RAIL|ests along|
-1891|184|5|2|18|19515.24|0.06|0.00|A|F|1995-01-24|1995-01-29|1995-02-14|NONE|RAIL| foxes above the carefu|
-1891|198|9|3|15|16472.85|0.03|0.00|R|F|1995-03-11|1995-03-05|1995-03-18|TAKE BACK RETURN|MAIL| accounts are furiou|
-1892|113|7|1|48|48629.28|0.02|0.01|A|F|1994-06-16|1994-06-16|1994-06-28|NONE|RAIL|tornis detect regul|
-1892|43|2|2|35|33006.40|0.04|0.08|R|F|1994-04-05|1994-05-09|1994-05-03|NONE|MAIL|hes nod furiously around the instruc|
-1892|134|5|3|37|38262.81|0.10|0.03|R|F|1994-04-11|1994-06-04|1994-04-24|TAKE BACK RETURN|SHIP|nts. slyly regular asymptot|
-1892|197|9|4|14|15360.66|0.06|0.07|R|F|1994-04-08|1994-06-12|1994-04-27|DELIVER IN PERSON|FOB|furiously about the furiously|
-1893|99|1|1|43|42960.87|0.10|0.00|N|O|1998-01-25|1998-01-06|1998-02-14|COLLECT COD|SHIP|he carefully regular |
-1893|148|9|2|49|51358.86|0.03|0.05|N|O|1998-01-19|1998-01-28|1998-02-02|TAKE BACK RETURN|FOB|y final foxes bo|
-1893|45|6|3|3|2835.12|0.03|0.02|N|O|1998-02-10|1998-01-18|1998-02-25|DELIVER IN PERSON|MAIL|gular, even ideas. fluffily bol|
-1893|101|6|4|18|18019.80|0.07|0.06|N|O|1998-01-24|1998-01-12|1998-02-13|TAKE BACK RETURN|RAIL|g packages. fluffily final reques|
-1893|53|4|5|6|5718.30|0.10|0.02|N|O|1998-01-23|1997-12-22|1998-02-09|DELIVER IN PERSON|TRUCK|ar accounts use. daringly ironic packag|
-1894|169|10|1|40|42766.40|0.03|0.07|R|F|1992-06-07|1992-05-11|1992-07-01|DELIVER IN PERSON|FOB|ily furiously bold packages. flu|
-1895|161|6|1|43|45629.88|0.09|0.07|R|F|1994-07-26|1994-07-19|1994-08-11|NONE|AIR| carefully eve|
-1920|96|7|1|24|23906.16|0.04|0.05|N|O|1998-09-27|1998-08-23|1998-10-15|DELIVER IN PERSON|AIR|thely. bold, pend|
-1920|51|6|2|31|29482.55|0.05|0.06|N|O|1998-08-01|1998-08-30|1998-08-17|COLLECT COD|SHIP|lly. ideas wa|
-1920|18|2|3|6|5508.06|0.01|0.05|N|O|1998-10-01|1998-08-20|1998-10-24|COLLECT COD|SHIP|l ideas boost slyly pl|
-1920|84|5|4|50|49204.00|0.09|0.06|N|O|1998-10-03|1998-08-04|1998-10-29|DELIVER IN PERSON|MAIL|e blithely unusual foxes. brave packages|
-1920|34|10|5|14|13076.42|0.08|0.05|N|O|1998-10-22|1998-08-10|1998-10-27|DELIVER IN PERSON|AIR|ickly ironic d|
-1921|21|10|1|9|8289.18|0.08|0.00|R|F|1994-02-01|1994-03-20|1994-03-01|DELIVER IN PERSON|FOB|to beans. even excuses integrate specia|
-1921|140|6|2|21|21842.94|0.02|0.06|R|F|1994-02-08|1994-03-28|1994-02-15|COLLECT COD|FOB|ckly regula|
-1921|71|2|3|27|26218.89|0.00|0.04|A|F|1994-04-26|1994-04-07|1994-04-30|TAKE BACK RETURN|FOB|ing pinto beans above the pend|
-1922|10|5|1|13|11830.13|0.05|0.03|N|O|1996-10-24|1996-09-21|1996-11-15|NONE|SHIP|quests. furiously|
-1923|37|8|1|9|8433.27|0.01|0.08|N|O|1997-08-29|1997-09-13|1997-09-07|NONE|FOB|lites. ironic instructions integrate bravel|
-1923|178|8|2|23|24797.91|0.07|0.05|N|O|1997-09-08|1997-08-11|1997-09-14|TAKE BACK RETURN|MAIL|aggle carefully. furiously permanent|
-1923|180|1|3|11|11881.98|0.03|0.03|N|O|1997-07-12|1997-09-04|1997-08-01|TAKE BACK RETURN|REG AIR|ages wake slyly about the furiously regular|
-1923|193|5|4|49|53566.31|0.06|0.05|N|O|1997-07-21|1997-08-08|1997-07-26|NONE|AIR|de of the carefully expre|
-1923|184|5|5|25|27104.50|0.10|0.08|N|O|1997-08-18|1997-08-20|1997-09-12|DELIVER IN PERSON|TRUCK|the ideas: slyly pendin|
-1923|37|3|6|50|46851.50|0.03|0.03|N|O|1997-11-04|1997-08-08|1997-11-25|NONE|TRUCK|uickly along the bold courts. bold the|
-1924|73|1|1|7|6811.49|0.06|0.07|N|O|1997-01-01|1996-12-02|1997-01-08|COLLECT COD|SHIP|osits. even accounts nag furious|
-1924|18|8|2|47|43146.47|0.02|0.06|N|O|1996-11-24|1996-10-18|1996-12-13|COLLECT COD|REG AIR|silent requests cajole blithely final pack|
-1924|57|8|3|40|38282.00|0.04|0.08|N|O|1996-10-31|1996-11-30|1996-11-21|NONE|REG AIR|ains sleep carefully|
-1924|34|5|4|31|28954.93|0.03|0.03|N|O|1996-09-20|1996-10-19|1996-10-19|DELIVER IN PERSON|SHIP| the slyly regular foxes. ruthle|
-1924|36|7|5|17|15912.51|0.04|0.05|N|O|1996-12-31|1996-11-12|1997-01-25|COLLECT COD|TRUCK|e carefully theodolites. ironically ironic |
-1924|76|4|6|15|14641.05|0.02|0.04|N|O|1997-01-04|1996-11-13|1997-01-27|NONE|SHIP|he package|
-1924|40|1|7|21|19740.84|0.09|0.03|N|O|1996-09-21|1996-11-12|1996-10-02|TAKE BACK RETURN|AIR| blithely reg|
-1925|184|5|1|50|54209.00|0.01|0.02|R|F|1992-04-12|1992-04-23|1992-05-08|TAKE BACK RETURN|TRUCK|usual pinto|
-1925|135|1|2|35|36229.55|0.06|0.06|R|F|1992-05-11|1992-04-10|1992-05-14|TAKE BACK RETURN|AIR|counts. carefully ironic packages boost ab|
-1925|116|10|3|40|40644.40|0.08|0.08|A|F|1992-05-17|1992-05-20|1992-06-08|TAKE BACK RETURN|AIR|e carefully regul|
-1925|30|5|4|17|15810.51|0.06|0.02|R|F|1992-05-18|1992-04-06|1992-06-16|TAKE BACK RETURN|MAIL|instructions sleep. pinto bea|
-1926|51|9|1|24|22825.20|0.06|0.05|N|O|1996-05-04|1996-03-14|1996-06-01|DELIVER IN PERSON|RAIL|e theodolites.|
-1926|106|9|2|29|29176.90|0.09|0.08|N|O|1996-02-26|1996-03-14|1996-03-14|TAKE BACK RETURN|TRUCK|es. dependencies according to the fl|
-1926|178|6|3|10|10781.70|0.02|0.03|N|O|1996-05-23|1996-03-02|1996-06-04|NONE|AIR|usly bold accounts. express accounts|
-1926|68|9|4|13|12584.78|0.04|0.02|N|O|1996-04-26|1996-04-13|1996-05-08|DELIVER IN PERSON|MAIL|eans wake bli|
-1926|40|1|5|29|27261.16|0.06|0.00|N|O|1996-02-29|1996-03-13|1996-03-24|DELIVER IN PERSON|MAIL|hily unusual packages are fluffily am|
-1927|68|5|1|3|2904.18|0.00|0.05|N|O|1995-10-06|1995-12-08|1995-11-05|COLLECT COD|FOB|ccounts affi|
-1927|73|2|2|15|14596.05|0.08|0.08|N|O|1995-12-25|1995-12-26|1995-12-31|COLLECT COD|RAIL| carefully regular requests sleep car|
-1927|65|10|3|6|5790.36|0.05|0.05|N|O|1995-11-29|1995-11-20|1995-12-08|TAKE BACK RETURN|TRUCK|furiously even wat|
-1952|53|8|1|7|6671.35|0.04|0.05|A|F|1994-05-06|1994-06-11|1994-05-12|NONE|RAIL|about the express, even requ|
-1952|142|5|2|6|6252.84|0.06|0.05|A|F|1994-05-09|1994-05-21|1994-05-26|DELIVER IN PERSON|AIR|packages haggle. |
-1953|128|1|1|25|25703.00|0.07|0.06|A|F|1994-01-07|1994-01-28|1994-01-29|TAKE BACK RETURN|RAIL|ular, regular i|
-1953|14|5|2|35|31990.35|0.06|0.06|R|F|1994-02-03|1994-02-25|1994-02-14|DELIVER IN PERSON|FOB|among the fur|
-1954|152|7|1|31|32616.65|0.06|0.06|N|O|1997-08-18|1997-07-07|1997-09-03|DELIVER IN PERSON|RAIL|against the packages. bold, ironic e|
-1954|182|3|2|1|1082.18|0.03|0.01|N|O|1997-09-16|1997-07-08|1997-10-07|COLLECT COD|MAIL|te. furiously final deposits hag|
-1954|199|2|3|11|12091.09|0.07|0.07|N|O|1997-08-07|1997-07-23|1997-08-25|DELIVER IN PERSON|TRUCK|y carefully ironi|
-1954|159|4|4|12|12709.80|0.02|0.08|N|O|1997-07-19|1997-07-04|1997-08-06|COLLECT COD|AIR|ongside of the slyly unusual requests. reg|
-1954|170|7|5|29|31034.93|0.08|0.08|N|O|1997-08-25|1997-07-15|1997-09-02|DELIVER IN PERSON|RAIL|use thinly furiously regular asy|
-1954|177|8|6|13|14003.21|0.00|0.07|N|O|1997-06-15|1997-08-22|1997-06-20|TAKE BACK RETURN|MAIL|y ironic instructions cajole|
-1954|194|5|7|49|53615.31|0.05|0.06|N|O|1997-06-04|1997-08-29|1997-06-14|COLLECT COD|TRUCK|eans. final pinto beans sleep furiousl|
-1955|137|3|1|32|33188.16|0.02|0.02|A|F|1992-07-05|1992-06-29|1992-08-03|TAKE BACK RETURN|TRUCK|g to the carefully sile|
-1955|18|8|2|2|1836.02|0.03|0.01|R|F|1992-07-06|1992-07-06|1992-08-01|COLLECT COD|TRUCK|ickly aroun|
-1955|158|6|3|41|43384.15|0.08|0.06|A|F|1992-08-01|1992-06-04|1992-08-07|COLLECT COD|AIR| carefully against the furiously reg|
-1955|9|4|4|16|14544.00|0.03|0.07|A|F|1992-04-30|1992-06-23|1992-05-23|TAKE BACK RETURN|FOB|odolites eat s|
-1955|159|10|5|11|11650.65|0.09|0.01|A|F|1992-06-03|1992-07-04|1992-06-07|NONE|REG AIR|ously quickly pendi|
-1956|177|8|1|8|8617.36|0.02|0.04|A|F|1992-12-25|1992-11-24|1993-01-12|TAKE BACK RETURN|AIR|efully about the ironic, ironic de|
-1956|103|6|2|16|16049.60|0.00|0.05|R|F|1992-11-11|1992-11-11|1992-11-30|NONE|FOB|es cajole blithely. pen|
-1956|139|5|3|39|40526.07|0.08|0.02|A|F|1992-09-24|1992-11-26|1992-10-15|DELIVER IN PERSON|REG AIR|r theodolites sleep above the b|
-1956|29|10|4|11|10219.22|0.10|0.00|A|F|1992-12-19|1992-10-29|1993-01-07|TAKE BACK RETURN|AIR| the braids slee|
-1956|155|10|5|16|16882.40|0.08|0.02|R|F|1992-09-28|1992-10-21|1992-09-30|TAKE BACK RETURN|FOB| wake after the |
-1957|79|9|1|50|48953.50|0.09|0.05|N|O|1998-08-08|1998-09-28|1998-08-27|COLLECT COD|FOB|gainst the re|
-1957|119|3|2|31|31592.41|0.10|0.08|N|O|1998-08-13|1998-08-31|1998-08-16|NONE|REG AIR|express packages maintain fluffi|
-1958|73|2|1|9|8757.63|0.01|0.05|N|O|1995-12-08|1995-12-17|1995-12-18|DELIVER IN PERSON|REG AIR|ickly. slyly bold |
-1958|176|7|2|29|31208.93|0.05|0.06|N|O|1996-01-19|1995-12-05|1996-02-14|COLLECT COD|SHIP|d pinto beans|
-1958|102|3|3|4|4008.40|0.04|0.02|N|O|1995-10-24|1995-12-09|1995-10-28|DELIVER IN PERSON|AIR|he slyly even dependencies |
-1958|83|4|4|38|37357.04|0.09|0.07|N|O|1995-10-09|1995-11-26|1995-11-05|COLLECT COD|TRUCK|yly. slyly regular courts use silentl|
-1958|101|8|5|31|31034.10|0.08|0.01|N|O|1995-10-31|1995-11-12|1995-11-07|TAKE BACK RETURN|TRUCK|r deposits c|
-1958|17|4|6|44|40348.44|0.08|0.04|N|O|1995-12-17|1995-11-30|1996-01-15|TAKE BACK RETURN|RAIL|c theodolites after the unusual deposit|
-1958|39|5|7|29|27231.87|0.02|0.05|N|O|1995-10-14|1995-11-06|1995-11-01|NONE|REG AIR|final requests nag according to the |
-1959|169|10|1|46|49181.36|0.04|0.00|N|O|1997-05-05|1997-03-03|1997-05-24|TAKE BACK RETURN|AIR| furiously ex|
-1959|120|7|2|15|15301.80|0.08|0.07|N|O|1997-01-20|1997-02-18|1997-02-08|DELIVER IN PERSON|MAIL| quickly sp|
-1984|53|5|1|45|42887.25|0.03|0.04|N|O|1998-04-09|1998-06-11|1998-05-01|COLLECT COD|AIR|p. quickly final ideas sle|
-1984|70|7|2|35|33952.45|0.01|0.07|N|O|1998-05-18|1998-05-04|1998-06-01|COLLECT COD|RAIL|tes. quickly pending packages haggle boldl|
-1985|28|1|1|33|30624.66|0.10|0.03|R|F|1994-12-04|1994-11-01|1994-12-05|DELIVER IN PERSON|FOB|s are express packages. pendin|
-1985|21|6|2|50|46051.00|0.04|0.02|R|F|1994-09-30|1994-10-18|1994-10-12|COLLECT COD|AIR|ate carefully. carefully|
-1985|134|10|3|20|20682.60|0.07|0.03|R|F|1994-10-29|1994-11-12|1994-11-27|NONE|TRUCK|regular requests. furiously express|
-1985|199|10|4|30|32975.70|0.05|0.07|R|F|1994-09-06|1994-10-10|1994-09-26|NONE|RAIL|uickly. instr|
-1985|124|9|5|42|43013.04|0.05|0.05|R|F|1994-10-25|1994-11-03|1994-11-19|DELIVER IN PERSON|SHIP| patterns? final requests after the sp|
-1985|20|7|6|2|1840.04|0.02|0.00|A|F|1994-11-25|1994-10-09|1994-12-25|TAKE BACK RETURN|FOB| silent inst|
-1986|92|3|1|12|11905.08|0.06|0.05|A|F|1994-08-17|1994-06-28|1994-09-02|COLLECT COD|RAIL|sleep furiously fluffily final|
-1986|105|8|2|10|10051.00|0.10|0.03|R|F|1994-05-14|1994-06-21|1994-06-02|COLLECT COD|REG AIR|yly into the carefully even |
-1986|63|2|3|14|13482.84|0.04|0.02|R|F|1994-07-14|1994-06-19|1994-08-08|NONE|SHIP|the packages. pending, unusual|
-1987|16|6|1|7|6412.07|0.03|0.03|A|F|1994-07-30|1994-07-06|1994-08-29|NONE|REG AIR| regular a|
-1988|72|1|1|36|34994.52|0.09|0.04|N|O|1996-01-21|1995-11-24|1996-01-27|NONE|RAIL|gular theodolites. |
-1988|199|3|2|19|20884.61|0.08|0.08|N|O|1996-02-03|1995-12-10|1996-02-14|COLLECT COD|FOB|lly about the slyly thin instructions. f|
-1988|54|6|3|8|7632.40|0.06|0.01|N|O|1995-10-20|1995-11-11|1995-11-18|DELIVER IN PERSON|AIR|le quickly ac|
-1988|36|2|4|27|25272.81|0.08|0.00|N|O|1996-01-27|1995-12-24|1996-02-24|TAKE BACK RETURN|TRUCK|uests. regular requests are according to t|
-1988|79|8|5|26|25455.82|0.08|0.04|N|O|1996-01-25|1995-12-15|1996-01-26|COLLECT COD|SHIP| ironic dolphins haggl|
-1988|86|7|6|9|8874.72|0.08|0.03|N|O|1995-12-26|1996-01-02|1996-01-25|DELIVER IN PERSON|MAIL|lar platelets. slyly ironic packa|
-1989|10|7|1|47|42770.47|0.10|0.02|R|F|1994-06-21|1994-05-27|1994-06-22|TAKE BACK RETURN|REG AIR|final deposits s|
-1990|101|2|1|46|46050.60|0.01|0.07|R|F|1994-12-29|1995-03-14|1995-01-13|NONE|TRUCK|ar sentiments.|
-1991|110|3|1|39|39394.29|0.06|0.02|A|F|1993-01-01|1992-11-29|1993-01-10|TAKE BACK RETURN|TRUCK|ckages? carefully bold depos|
-1991|53|1|2|49|46699.45|0.08|0.06|R|F|1992-10-19|1992-11-29|1992-10-25|NONE|SHIP|nd the ideas affi|
-1991|174|5|3|6|6445.02|0.02|0.01|A|F|1992-11-02|1992-10-08|1992-11-14|TAKE BACK RETURN|REG AIR|hes nag slyly|
-1991|138|9|4|6|6228.78|0.10|0.06|A|F|1992-11-21|1992-11-03|1992-11-27|NONE|RAIL|uickly blithely final de|
-1991|60|8|5|49|47042.94|0.06|0.00|R|F|1992-09-10|1992-11-30|1992-10-07|NONE|AIR|quests cajole blithely|
-2016|147|4|1|2|2094.28|0.02|0.07|N|O|1996-10-12|1996-11-09|1996-10-31|DELIVER IN PERSON|TRUCK|carefully according to the |
-2016|63|8|2|15|14445.90|0.04|0.05|N|O|1996-09-24|1996-10-05|1996-10-21|TAKE BACK RETURN|MAIL|uests haggle carefully furiously regul|
-2016|122|7|3|8|8176.96|0.09|0.02|N|O|1996-09-19|1996-10-21|1996-10-13|TAKE BACK RETURN|SHIP|mptotes haggle ideas. packages wake flu|
-2017|103|4|1|49|49151.90|0.10|0.06|N|O|1998-05-26|1998-07-01|1998-06-06|COLLECT COD|TRUCK| after the unusual instructions. sly|
-2017|71|2|2|14|13594.98|0.07|0.04|N|O|1998-06-28|1998-06-15|1998-07-11|NONE|TRUCK|ily final w|
-2017|84|5|3|11|10824.88|0.05|0.02|N|O|1998-05-22|1998-07-13|1998-05-26|TAKE BACK RETURN|TRUCK|gside of the slyly dogged dolp|
-2018|195|6|1|2|2190.38|0.02|0.07|N|O|1995-06-25|1995-06-20|1995-07-04|NONE|TRUCK|ly ironic accounts against the slyly sly|
-2018|129|10|2|23|23669.76|0.05|0.01|R|F|1995-05-05|1995-05-12|1995-05-22|TAKE BACK RETURN|RAIL|ingly even theodolites s|
-2019|4|9|1|31|28024.00|0.07|0.03|R|F|1992-11-18|1992-12-26|1992-11-24|DELIVER IN PERSON|FOB|l ideas across the slowl|
-2019|52|7|2|18|17136.90|0.04|0.03|R|F|1993-01-24|1992-12-22|1993-02-02|NONE|MAIL|are carefully furiously regular requ|
-2020|34|10|1|50|46701.50|0.06|0.01|R|F|1993-07-12|1993-08-28|1993-08-02|COLLECT COD|TRUCK|ts against the pending ideas serve along|
-2020|176|4|2|40|43046.80|0.09|0.00|A|F|1993-10-17|1993-09-14|1993-10-29|TAKE BACK RETURN|RAIL|ently across the|
-2020|14|4|3|30|27420.30|0.07|0.04|A|F|1993-09-08|1993-08-11|1993-09-29|TAKE BACK RETURN|AIR|ly about the blithely ironic foxes. bold|
-2020|61|8|4|27|25948.62|0.05|0.06|A|F|1993-07-14|1993-09-02|1993-08-03|NONE|FOB|e of the bold foxes haggle |
-2021|85|6|1|7|6895.56|0.08|0.04|N|O|1995-10-17|1995-09-29|1995-10-20|NONE|MAIL| accounts boost blithely. blithely reg|
-2021|166|3|2|19|20257.04|0.04|0.05|N|O|1995-08-14|1995-09-05|1995-08-23|NONE|RAIL| above the slyly fl|
-2022|169|8|1|38|40628.08|0.00|0.08|R|F|1992-07-05|1992-04-20|1992-07-13|TAKE BACK RETURN|REG AIR| against the express accounts wake ca|
-2022|55|3|2|38|36291.90|0.05|0.04|R|F|1992-06-17|1992-05-15|1992-06-28|COLLECT COD|SHIP|instructions dazzle carefull|
-2022|49|10|3|48|45553.92|0.10|0.02|A|F|1992-06-14|1992-06-04|1992-07-12|DELIVER IN PERSON|SHIP|counts. slyly enticing accounts are during |
-2022|182|3|4|16|17314.88|0.05|0.03|R|F|1992-06-23|1992-05-22|1992-07-07|NONE|TRUCK|ages wake slyly care|
-2022|100|1|5|36|36003.60|0.05|0.02|R|F|1992-03-24|1992-05-07|1992-04-13|NONE|MAIL|ly after the foxes. regular, final inst|
-2022|129|2|6|20|20582.40|0.08|0.08|A|F|1992-03-31|1992-04-17|1992-04-02|NONE|SHIP|r deposits kindle |
-2022|78|9|7|13|12714.91|0.06|0.08|R|F|1992-04-04|1992-05-30|1992-04-21|NONE|FOB| orbits haggle fluffily fl|
-2023|127|10|1|9|9244.08|0.05|0.04|R|F|1992-06-04|1992-06-30|1992-06-10|NONE|AIR|ly regular pinto beans poa|
-2023|38|4|2|2|1876.06|0.01|0.00|R|F|1992-08-27|1992-07-16|1992-08-29|DELIVER IN PERSON|RAIL|ing packages. fluffily silen|
-2023|19|6|3|25|22975.25|0.10|0.03|A|F|1992-07-19|1992-07-07|1992-08-15|NONE|REG AIR| wake furiously among the slyly final|
-2023|185|6|4|9|9766.62|0.02|0.00|A|F|1992-07-23|1992-07-04|1992-08-20|TAKE BACK RETURN|AIR|nts maintain blithely alongside of the|
-2023|20|10|5|22|20240.44|0.04|0.06|A|F|1992-06-15|1992-07-13|1992-06-21|TAKE BACK RETURN|SHIP|ronic attainments. |
-2023|43|2|6|29|27348.16|0.02|0.06|A|F|1992-08-29|1992-07-28|1992-09-18|COLLECT COD|RAIL|usual instructions. bli|
-2023|134|10|7|50|51706.50|0.00|0.03|R|F|1992-06-20|1992-07-04|1992-06-23|DELIVER IN PERSON|FOB|its! carefully ex|
-2048|35|1|1|7|6545.21|0.06|0.01|R|F|1993-12-07|1994-01-31|1994-01-05|TAKE BACK RETURN|REG AIR|lent platelets boost deposits. carefully sp|
-2048|8|5|2|5|4540.00|0.04|0.04|A|F|1994-01-18|1994-02-01|1994-01-29|TAKE BACK RETURN|TRUCK|affix carefully against |
-2048|101|2|3|12|12013.20|0.01|0.05|R|F|1994-01-28|1994-01-19|1994-02-08|NONE|AIR| even theodoli|
-2048|97|1|4|11|10967.99|0.10|0.03|R|F|1993-12-20|1994-01-19|1994-01-04|TAKE BACK RETURN|MAIL|totes. idly ironic packages nag|
-2049|189|10|1|25|27229.50|0.08|0.00|N|O|1996-03-31|1996-02-29|1996-04-15|DELIVER IN PERSON|MAIL| excuses above the |
-2049|35|1|2|31|28985.93|0.10|0.05|N|O|1995-12-25|1996-02-25|1995-12-29|TAKE BACK RETURN|MAIL| packages are slyly alongside|
-2049|67|6|3|18|17407.08|0.05|0.05|N|O|1996-01-09|1996-01-22|1996-01-25|TAKE BACK RETURN|AIR| sleep fluffily. dependencies use never|
-2049|6|7|4|39|35334.00|0.02|0.05|N|O|1996-01-17|1996-01-21|1996-02-03|TAKE BACK RETURN|MAIL|the even pinto beans |
-2049|126|1|5|30|30783.60|0.04|0.06|N|O|1995-12-16|1996-02-04|1995-12-22|NONE|TRUCK|ial accounts are among the furiously perma|
-2049|84|5|6|17|16729.36|0.07|0.00|N|O|1996-02-04|1996-03-01|1996-02-24|NONE|FOB|al, regular foxes. pending, |
-2050|73|2|1|47|45734.29|0.05|0.03|A|F|1994-08-25|1994-07-18|1994-09-15|DELIVER IN PERSON|TRUCK|tside the blithely pending packages eat f|
-2050|152|3|2|48|50503.20|0.05|0.01|A|F|1994-09-30|1994-08-23|1994-10-29|COLLECT COD|AIR| final packages. pinto|
-2050|113|4|3|41|41537.51|0.10|0.04|A|F|1994-06-08|1994-08-27|1994-06-23|NONE|AIR| final theodolites. depende|
-2050|32|8|4|11|10252.33|0.02|0.01|A|F|1994-07-27|1994-08-18|1994-08-02|DELIVER IN PERSON|REG AIR|ns. bold, final ideas cajole among the fi|
-2050|168|9|5|16|17090.56|0.07|0.01|R|F|1994-08-17|1994-07-28|1994-09-05|DELIVER IN PERSON|REG AIR|al accounts. closely even |
-2050|49|2|6|29|27522.16|0.00|0.05|A|F|1994-09-23|1994-08-01|1994-10-23|TAKE BACK RETURN|MAIL|oxes alongsid|
-2050|48|5|7|25|23701.00|0.10|0.00|R|F|1994-08-18|1994-07-04|1994-09-04|TAKE BACK RETURN|RAIL|y according to |
-2051|25|6|1|43|39775.86|0.08|0.04|N|O|1996-04-22|1996-06-16|1996-04-28|COLLECT COD|RAIL|ounts sleep fluffily even requ|
-2051|130|1|2|48|49446.24|0.01|0.02|N|O|1996-05-04|1996-06-14|1996-05-19|NONE|TRUCK|unts. pending platelets believe about|
-2052|68|7|1|50|48403.00|0.09|0.08|R|F|1992-06-22|1992-06-03|1992-07-19|DELIVER IN PERSON|AIR|wake after the decoy|
-2052|135|1|2|35|36229.55|0.09|0.05|A|F|1992-05-29|1992-05-24|1992-06-11|NONE|TRUCK|ts according t|
-2052|43|2|3|16|15088.64|0.01|0.08|A|F|1992-06-30|1992-07-09|1992-07-12|NONE|SHIP|y final deposits cajole according |
-2052|96|7|4|47|46816.23|0.08|0.01|A|F|1992-06-18|1992-05-16|1992-07-02|TAKE BACK RETURN|REG AIR|final requests. stealt|
-2053|101|4|1|20|20022.00|0.09|0.00|A|F|1995-04-25|1995-04-12|1995-05-13|NONE|TRUCK|ly ironic foxes haggle slyly speci|
-2053|33|4|2|34|31723.02|0.07|0.00|A|F|1995-03-15|1995-03-20|1995-04-09|TAKE BACK RETURN|TRUCK|ions. unusual dependencies|
-2053|65|2|3|46|44392.76|0.01|0.03|R|F|1995-04-01|1995-04-02|1995-04-18|NONE|RAIL|tions. furiously even requests hagg|
-2053|121|6|4|31|31654.72|0.06|0.08|R|F|1995-03-23|1995-03-13|1995-04-16|DELIVER IN PERSON|SHIP|ts. fluffily final mul|
-2054|113|4|1|11|11144.21|0.03|0.05|R|F|1992-08-13|1992-08-26|1992-08-22|NONE|AIR|ular accou|
-2054|120|7|2|31|31623.72|0.05|0.08|A|F|1992-08-18|1992-09-04|1992-08-24|NONE|FOB|se bold, regular accounts. unusual depos|
-2054|121|2|3|32|32675.84|0.06|0.00|A|F|1992-06-23|1992-07-08|1992-07-22|NONE|FOB| packages thrash. carefully final|
-2054|174|3|4|14|15038.38|0.10|0.05|R|F|1992-06-25|1992-09-05|1992-07-14|DELIVER IN PERSON|SHIP|uickly final|
-2054|6|1|5|40|36240.00|0.08|0.06|R|F|1992-06-23|1992-08-09|1992-07-04|TAKE BACK RETURN|RAIL|n pinto beans. ironic courts are iro|
-2054|134|10|6|17|17580.21|0.08|0.01|A|F|1992-06-09|1992-08-28|1992-06-16|NONE|AIR|ges nag acc|
-2054|11|1|7|4|3644.04|0.00|0.08|R|F|1992-08-12|1992-08-31|1992-08-15|DELIVER IN PERSON|AIR|lyly careful requests wake fl|
-2055|45|6|1|15|14175.60|0.04|0.06|A|F|1993-09-15|1993-10-06|1993-10-07|NONE|REG AIR|furiously bold |
-2055|9|10|2|15|13635.00|0.06|0.05|R|F|1993-10-30|1993-11-21|1993-11-22|COLLECT COD|RAIL|gular foxes. b|
-2055|135|1|3|12|12421.56|0.00|0.02|A|F|1993-10-26|1993-11-23|1993-11-22|COLLECT COD|TRUCK|al pains. acco|
-2055|134|10|4|16|16546.08|0.02|0.02|A|F|1993-11-16|1993-11-12|1993-11-28|NONE|TRUCK|arefully daringly regular accounts.|
-2080|7|4|1|5|4535.00|0.08|0.05|R|F|1993-08-26|1993-08-07|1993-09-02|DELIVER IN PERSON|TRUCK|refully unusual theo|
-2080|197|9|2|39|42790.41|0.07|0.04|A|F|1993-08-22|1993-09-09|1993-08-23|COLLECT COD|FOB|ic deposits haggle slyly carefully eve|
-2081|89|10|1|26|25716.08|0.03|0.08|N|O|1997-10-21|1997-10-03|1997-11-10|NONE|FOB|among the slyly express accounts. silen|
-2081|149|2|2|13|13638.82|0.07|0.05|N|O|1997-08-23|1997-08-22|1997-09-09|TAKE BACK RETURN|MAIL|fter the even deposi|
-2081|13|10|3|32|29216.32|0.09|0.07|N|O|1997-09-05|1997-09-26|1997-10-03|TAKE BACK RETURN|SHIP|e. final, regular dependencies sleep slyly!|
-2081|85|6|4|23|22656.84|0.03|0.08|N|O|1997-07-06|1997-09-11|1997-07-21|TAKE BACK RETURN|MAIL|ual requests wake blithely above the|
-2081|113|7|5|19|19249.09|0.02|0.06|N|O|1997-10-01|1997-08-12|1997-10-18|COLLECT COD|SHIP|s affix sometimes express requests. quickly|
-2081|142|9|6|31|32306.34|0.03|0.06|N|O|1997-09-19|1997-09-13|1997-09-27|NONE|AIR| silent, spe|
-2082|75|3|1|36|35102.52|0.00|0.00|R|F|1995-01-20|1995-03-18|1995-01-31|COLLECT COD|MAIL|haggle furiously silent pinto beans|
-2082|105|10|2|12|12061.20|0.08|0.05|A|F|1995-01-27|1995-02-11|1995-02-07|NONE|FOB| ironic instructions. carefull|
-2083|24|3|1|37|34188.74|0.07|0.00|R|F|1993-09-07|1993-09-30|1993-09-18|TAKE BACK RETURN|MAIL|ng the special foxes wake packages. f|
-2084|182|3|1|42|45451.56|0.03|0.05|A|F|1993-03-29|1993-05-05|1993-04-22|COLLECT COD|REG AIR|y fluffily even foxes. |
-2084|180|10|2|23|24844.14|0.09|0.08|A|F|1993-06-05|1993-05-26|1993-06-06|DELIVER IN PERSON|AIR|es against |
-2084|136|2|3|37|38336.81|0.07|0.05|A|F|1993-07-16|1993-04-20|1993-08-06|NONE|AIR|y careful courts.|
-2084|94|8|4|9|8946.81|0.02|0.02|A|F|1993-03-18|1993-06-08|1993-03-30|NONE|TRUCK|heaves boost slyly after the pla|
-2084|27|10|5|28|25956.56|0.07|0.02|R|F|1993-05-04|1993-05-14|1993-05-31|COLLECT COD|TRUCK|cajole quickly carefu|
-2084|115|9|6|15|15226.65|0.09|0.04|A|F|1993-06-23|1993-04-25|1993-07-23|COLLECT COD|SHIP|tithes. bravely pendi|
-2084|194|6|7|34|37202.46|0.09|0.02|R|F|1993-06-20|1993-05-28|1993-06-25|DELIVER IN PERSON|RAIL| carefully ironic requests. fluffil|
-2085|41|8|1|45|42346.80|0.00|0.07|R|F|1994-02-27|1994-01-11|1994-03-29|TAKE BACK RETURN|MAIL|. carefully e|
-2086|60|1|1|22|21121.32|0.03|0.07|R|F|1994-12-04|1994-12-16|1994-12-20|DELIVER IN PERSON|RAIL|idly busy acc|
-2086|141|10|2|32|33316.48|0.04|0.06|A|F|1994-11-15|1995-01-05|1994-12-09|TAKE BACK RETURN|TRUCK|e carefully along th|
-2086|105|6|3|44|44224.40|0.02|0.01|A|F|1994-12-04|1994-11-30|1994-12-21|DELIVER IN PERSON|FOB|latelets s|
-2086|84|5|4|27|26570.16|0.02|0.00|A|F|1994-11-04|1995-01-14|1994-11-25|COLLECT COD|REG AIR|theodolites haggle blithely blithe p|
-2086|156|1|5|33|34852.95|0.04|0.00|A|F|1995-02-06|1994-11-25|1995-02-15|NONE|SHIP| slyly regular foxes. un|
-2086|200|3|6|20|22004.00|0.01|0.03|R|F|1994-11-30|1994-12-28|1994-12-07|COLLECT COD|FOB|lithely ironic acc|
-2086|156|8|7|7|7393.05|0.04|0.05|R|F|1994-12-27|1994-12-10|1995-01-05|COLLECT COD|RAIL| beans haggle car|
-2087|127|8|1|1|1027.12|0.05|0.04|N|O|1998-03-27|1998-03-24|1998-04-18|DELIVER IN PERSON|REG AIR|the quickly idle acco|
-2087|168|3|2|46|49135.36|0.10|0.03|N|O|1998-02-24|1998-04-02|1998-03-04|DELIVER IN PERSON|AIR|ter the dolphins.|
-2087|62|3|3|1|962.06|0.02|0.05|N|O|1998-05-27|1998-04-11|1998-06-12|COLLECT COD|REG AIR|hely final acc|
-2087|59|1|4|6|5754.30|0.03|0.08|N|O|1998-04-23|1998-03-27|1998-05-18|DELIVER IN PERSON|REG AIR|dazzle after the slyly si|
-2112|71|2|1|18|17479.26|0.02|0.05|N|O|1997-05-02|1997-03-16|1997-05-25|TAKE BACK RETURN|TRUCK|lphins solve ideas. even, special reque|
-2113|123|8|1|40|40924.80|0.04|0.06|N|O|1998-01-16|1997-12-11|1998-02-06|TAKE BACK RETURN|TRUCK|bout the quickly ironic t|
-2113|112|2|2|24|24290.64|0.03|0.02|N|O|1998-02-19|1998-01-08|1998-03-16|COLLECT COD|MAIL|kly regular accounts hinder about the|
-2114|168|9|1|50|53408.00|0.05|0.05|A|F|1995-02-05|1995-03-18|1995-02-13|COLLECT COD|RAIL|pecial pinto bean|
-2114|186|7|2|26|28240.68|0.02|0.02|A|F|1995-04-30|1995-04-16|1995-05-28|NONE|SHIP|ar asymptotes sleep |
-2114|162|1|3|25|26554.00|0.07|0.01|A|F|1995-02-15|1995-03-13|1995-02-22|COLLECT COD|AIR|unts. regular, express accounts wake. b|
-2115|196|8|1|27|29597.13|0.06|0.03|N|O|1998-09-01|1998-07-29|1998-09-04|NONE|AIR|de of the carefully bold accounts |
-2115|184|5|2|43|46619.74|0.06|0.02|N|O|1998-07-14|1998-07-25|1998-07-24|COLLECT COD|FOB| carefully pending requests alongs|
-2115|51|3|3|3|2853.15|0.03|0.04|N|O|1998-07-23|1998-07-30|1998-08-14|DELIVER IN PERSON|FOB|quickly ironic dolphin|
-2115|49|10|4|47|44604.88|0.06|0.07|N|O|1998-08-29|1998-07-30|1998-09-05|TAKE BACK RETURN|REG AIR|regular accounts integrate brav|
-2115|199|3|5|13|14289.47|0.04|0.00|N|O|1998-08-07|1998-08-06|1998-08-13|DELIVER IN PERSON|REG AIR|into beans. even accounts abou|
-2116|131|2|1|2|2062.26|0.00|0.02|R|F|1994-10-16|1994-11-24|1994-11-09|DELIVER IN PERSON|TRUCK|r theodolites use blithely about the ir|
-2116|140|1|2|47|48886.58|0.10|0.06|R|F|1994-09-01|1994-11-18|1994-09-25|COLLECT COD|MAIL|iously ironic dependencies around the iro|
-2116|184|5|3|11|11925.98|0.03|0.05|R|F|1994-09-15|1994-10-21|1994-09-21|NONE|FOB| pinto beans. final, final sauternes play |
-2117|165|2|1|36|38345.76|0.10|0.01|N|O|1997-08-06|1997-07-15|1997-08-07|DELIVER IN PERSON|SHIP|ronic accounts wake|
-2117|61|6|2|19|18260.14|0.04|0.00|N|O|1997-07-30|1997-06-18|1997-08-13|DELIVER IN PERSON|REG AIR|s between the slyly regula|
-2117|58|3|3|43|41196.15|0.04|0.03|N|O|1997-06-27|1997-06-12|1997-07-22|DELIVER IN PERSON|SHIP| foxes sleep furiously |
-2117|91|4|4|24|23786.16|0.00|0.07|N|O|1997-06-15|1997-05-27|1997-06-18|COLLECT COD|SHIP|thely slyly pending platelets. ironic, |
-2117|147|8|5|3|3141.42|0.02|0.05|N|O|1997-05-05|1997-07-20|1997-05-26|TAKE BACK RETURN|TRUCK|tes cajole|
-2117|1|4|6|27|24327.00|0.09|0.08|N|O|1997-06-30|1997-06-27|1997-07-11|TAKE BACK RETURN|REG AIR| the carefully ironic ideas|
-2118|160|1|1|24|25443.84|0.10|0.03|N|O|1997-01-06|1996-12-14|1997-01-14|TAKE BACK RETURN|RAIL|about the slyly bold depende|
-2118|184|5|2|4|4336.72|0.08|0.01|N|O|1996-10-25|1996-11-10|1996-11-22|COLLECT COD|AIR|theodolites affix according |
-2118|145|4|3|11|11496.54|0.05|0.04|N|O|1996-12-23|1996-12-20|1997-01-01|COLLECT COD|RAIL|y ironic accounts sleep upon the packages. |
-2119|102|7|1|36|36075.60|0.04|0.00|N|O|1996-11-10|1996-10-25|1996-12-03|TAKE BACK RETURN|RAIL|ly bold foxes. ironic accoun|
-2144|92|6|1|33|32738.97|0.00|0.07|R|F|1994-04-04|1994-06-20|1994-04-23|NONE|AIR| ironic excuses haggle final dependencies. |
-2144|51|9|2|46|43748.30|0.03|0.08|R|F|1994-04-08|1994-04-29|1994-05-07|COLLECT COD|SHIP| foxes haggle blithel|
-2144|4|9|3|29|26216.00|0.00|0.07|R|F|1994-05-03|1994-05-16|1994-06-01|DELIVER IN PERSON|FOB|ns wake carefully carefully ironic|
-2144|158|9|4|10|10581.50|0.00|0.04|R|F|1994-06-16|1994-05-03|1994-07-05|COLLECT COD|AIR| furiously unusual ideas. carefull|
-2145|78|8|1|13|12714.91|0.04|0.05|A|F|1992-11-12|1992-12-13|1992-12-07|TAKE BACK RETURN|MAIL|alongside of the slyly final|
-2145|154|6|2|6|6324.90|0.05|0.01|A|F|1992-10-10|1992-11-29|1992-10-14|NONE|AIR|s. fluffily express accounts sleep. slyl|
-2146|57|5|1|42|40196.10|0.10|0.01|A|F|1992-09-21|1992-11-02|1992-09-23|NONE|AIR|ns according to the doggedly |
-2146|157|5|2|6|6342.90|0.07|0.05|A|F|1993-01-03|1992-10-24|1993-01-24|DELIVER IN PERSON|RAIL|ing to the requests. dependencies boost |
-2146|25|8|3|14|12950.28|0.03|0.01|R|F|1992-09-16|1992-10-16|1992-09-20|COLLECT COD|SHIP|ecial, express a|
-2146|26|9|4|31|28706.62|0.02|0.00|A|F|1993-01-04|1992-10-24|1993-01-15|DELIVER IN PERSON|TRUCK|lly even deposit|
-2146|169|4|5|28|29936.48|0.02|0.05|R|F|1993-01-03|1992-10-17|1993-01-08|COLLECT COD|MAIL|r accounts sleep furio|
-2146|71|9|6|32|31074.24|0.07|0.03|R|F|1993-01-10|1992-10-19|1993-02-05|COLLECT COD|TRUCK|y regular foxes wake among the final|
-2146|25|6|7|39|36075.78|0.07|0.06|R|F|1993-01-05|1992-11-06|1993-01-14|DELIVER IN PERSON|TRUCK|uickly regular excuses detect. regular c|
-2147|29|8|1|50|46451.00|0.04|0.06|R|F|1992-11-18|1992-11-30|1992-11-30|NONE|RAIL|al accounts. even, even foxes wake|
-2147|101|2|2|4|4004.40|0.01|0.04|A|F|1992-09-27|1992-11-15|1992-10-22|NONE|AIR|mong the blithely special|
-2147|44|7|3|34|32097.36|0.10|0.04|R|F|1992-11-29|1992-11-08|1992-12-22|TAKE BACK RETURN|REG AIR|egular deposits hang car|
-2147|11|8|4|11|10021.11|0.06|0.07|A|F|1992-09-27|1992-11-16|1992-10-16|NONE|AIR| the fluffily|
-2148|116|6|1|21|21338.31|0.09|0.01|R|F|1995-05-28|1995-05-26|1995-06-15|NONE|FOB|deposits ag|
-2149|19|9|1|12|11028.12|0.05|0.07|R|F|1993-06-01|1993-05-06|1993-06-11|TAKE BACK RETURN|TRUCK|riously bl|
-2149|99|10|2|10|9990.90|0.06|0.01|R|F|1993-06-09|1993-04-17|1993-06-16|DELIVER IN PERSON|TRUCK|eposits sleep above|
-2149|49|2|3|47|44604.88|0.00|0.04|R|F|1993-06-27|1993-05-12|1993-07-11|COLLECT COD|AIR|hely final depo|
-2149|129|8|4|18|18524.16|0.06|0.00|A|F|1993-04-05|1993-05-11|1993-04-23|DELIVER IN PERSON|REG AIR|uriously final pac|
-2149|60|5|5|22|21121.32|0.06|0.04|R|F|1993-05-24|1993-04-23|1993-06-20|TAKE BACK RETURN|SHIP|ptotes sleep along the blithely ir|
-2150|78|7|1|26|25429.82|0.00|0.03|A|F|1994-06-21|1994-08-05|1994-06-23|NONE|TRUCK|. always unusual packages|
-2150|18|8|2|29|26622.29|0.04|0.03|A|F|1994-09-02|1994-08-04|1994-10-02|TAKE BACK RETURN|RAIL|y ironic theodolites. foxes ca|
-2150|107|2|3|29|29205.90|0.04|0.08|R|F|1994-06-10|1994-07-31|1994-06-26|COLLECT COD|RAIL|arefully final att|
-2150|54|6|4|39|37207.95|0.05|0.02|R|F|1994-07-31|1994-08-17|1994-08-11|TAKE BACK RETURN|TRUCK|ess accounts nag. unusual asymptotes haggl|
-2150|183|4|5|35|37911.30|0.01|0.01|A|F|1994-09-27|1994-08-17|1994-10-13|COLLECT COD|RAIL|refully pending dependen|
-2150|7|10|6|12|10884.00|0.09|0.03|A|F|1994-08-27|1994-08-22|1994-09-18|COLLECT COD|AIR|press platelets haggle until the slyly fi|
-2151|167|2|1|23|24544.68|0.06|0.02|N|O|1996-11-20|1996-12-17|1996-11-30|DELIVER IN PERSON|AIR| silent dependencies about the slyl|
-2151|15|9|2|29|26535.29|0.00|0.02|N|O|1997-03-04|1996-12-27|1997-03-21|TAKE BACK RETURN|SHIP| bold packages acro|
-2151|165|2|3|49|52192.84|0.07|0.01|N|O|1997-01-20|1997-02-09|1997-02-18|NONE|FOB| packages. f|
-2151|18|5|4|28|25704.28|0.10|0.08|N|O|1996-12-11|1996-12-26|1996-12-12|DELIVER IN PERSON|AIR|y special packages. carefully ironic instru|
-2176|191|4|1|38|41465.22|0.02|0.08|R|F|1992-11-29|1993-01-14|1992-12-22|DELIVER IN PERSON|REG AIR|lithely ironic pinto beans. furious|
-2176|95|8|2|14|13931.26|0.00|0.06|A|F|1992-11-17|1993-01-07|1992-12-03|DELIVER IN PERSON|SHIP|ely ironic platelets |
-2176|160|1|3|25|26504.00|0.02|0.02|R|F|1993-02-23|1993-01-05|1993-03-07|COLLECT COD|RAIL| ruthless deposits according to the ent|
-2176|143|6|4|2|2086.28|0.05|0.06|A|F|1993-02-26|1993-01-08|1993-03-23|DELIVER IN PERSON|AIR|s pinto beans|
-2177|129|10|1|45|46310.40|0.02|0.01|N|O|1997-02-11|1997-02-27|1997-02-17|NONE|SHIP|. theodolites haggle carefu|
-2177|139|5|2|27|28056.51|0.04|0.08|N|O|1997-01-29|1997-03-20|1997-02-04|DELIVER IN PERSON|SHIP|even, regula|
-2177|81|2|3|23|22564.84|0.07|0.05|N|O|1997-01-28|1997-03-02|1997-02-13|DELIVER IN PERSON|AIR|he silent foxes. iro|
-2177|55|3|4|34|32471.70|0.05|0.07|N|O|1997-02-03|1997-04-10|1997-02-21|COLLECT COD|REG AIR|tes are doggedly quickly|
-2177|57|9|5|46|44024.30|0.09|0.05|N|O|1997-05-10|1997-02-23|1997-05-28|COLLECT COD|RAIL|ending asymptotes.|
-2177|122|7|6|11|11243.32|0.02|0.04|N|O|1997-03-20|1997-03-07|1997-04-09|DELIVER IN PERSON|MAIL|gainst the ca|
-2178|157|2|1|15|15857.25|0.10|0.01|N|O|1997-03-27|1997-03-10|1997-04-18|NONE|REG AIR|l accounts. quickly expr|
-2178|16|10|2|27|24732.27|0.01|0.02|N|O|1997-02-26|1997-02-19|1997-03-25|NONE|MAIL| across the ironic reques|
-2178|5|2|3|40|36200.00|0.00|0.03|N|O|1997-03-17|1997-02-09|1997-04-15|COLLECT COD|RAIL|foxes are slowly regularly specia|
-2178|78|6|4|3|2934.21|0.07|0.07|N|O|1997-04-07|1997-01-23|1997-04-18|COLLECT COD|MAIL| permanentl|
-2179|130|9|1|22|22662.86|0.05|0.08|N|O|1996-11-16|1996-11-03|1996-11-25|DELIVER IN PERSON|FOB|lphins cajole acr|
-2179|139|5|2|20|20782.60|0.03|0.01|N|O|1996-09-30|1996-11-10|1996-10-30|NONE|REG AIR|ncies. fin|
-2179|104|9|3|5|5020.50|0.03|0.02|N|O|1996-11-09|1996-10-08|1996-11-11|DELIVER IN PERSON|REG AIR|ts haggle blithely. ironic, careful theodol|
-2179|6|3|4|24|21744.00|0.04|0.04|N|O|1996-10-26|1996-11-05|1996-11-16|COLLECT COD|RAIL| cajole carefully. |
-2179|108|5|5|7|7056.70|0.00|0.02|N|O|1996-10-24|1996-11-14|1996-11-21|TAKE BACK RETURN|RAIL|gular dependencies. ironic packages haggle|
-2180|16|3|1|31|28396.31|0.06|0.04|N|O|1996-10-20|1996-11-21|1996-11-06|COLLECT COD|REG AIR|n requests are furiously at the quickly|
-2180|193|7|2|39|42634.41|0.01|0.00|N|O|1997-01-03|1996-10-29|1997-01-25|NONE|RAIL|ep furiously furiously final request|
-2180|197|9|3|24|26332.56|0.03|0.00|N|O|1997-01-03|1996-10-24|1997-01-19|NONE|SHIP|uriously f|
-2180|111|5|4|47|47522.17|0.07|0.02|N|O|1996-09-23|1996-12-08|1996-10-12|NONE|FOB|pending, regular ideas. iron|
-2180|143|2|5|23|23992.22|0.02|0.06|N|O|1996-11-08|1996-10-25|1996-11-28|NONE|TRUCK|ggle alongside of the fluffily speci|
-2180|55|6|6|48|45842.40|0.09|0.03|N|O|1996-12-30|1996-11-22|1997-01-16|DELIVER IN PERSON|RAIL|nic instructions haggle careful|
-2181|178|9|1|4|4312.68|0.05|0.04|N|O|1995-09-25|1995-11-12|1995-09-28|COLLECT COD|FOB|tes. slyly silent packages use along th|
-2181|88|9|2|46|45451.68|0.00|0.02|N|O|1995-11-28|1995-10-17|1995-12-26|COLLECT COD|AIR|osits. final packages sleep|
-2181|91|2|3|15|14866.35|0.08|0.05|N|O|1995-10-05|1995-10-27|1995-11-03|DELIVER IN PERSON|FOB|e above the fluffily regul|
-2181|55|10|4|28|26741.40|0.04|0.05|N|O|1995-12-21|1995-10-23|1996-01-04|TAKE BACK RETURN|AIR|s excuses sleep car|
-2181|96|7|5|9|8964.81|0.06|0.07|N|O|1996-01-05|1995-12-05|1996-01-08|COLLECT COD|TRUCK|ward the quietly even requests. ir|
-2182|132|8|1|27|27867.51|0.02|0.07|R|F|1994-05-10|1994-07-04|1994-06-04|DELIVER IN PERSON|SHIP|en platele|
-2182|190|1|2|3|3270.57|0.05|0.03|R|F|1994-04-20|1994-07-04|1994-04-24|TAKE BACK RETURN|SHIP|y bold theodolites wi|
-2182|94|6|3|34|33799.06|0.02|0.03|R|F|1994-05-28|1994-06-02|1994-06-10|COLLECT COD|MAIL| slow tithes. ironi|
-2182|7|4|4|12|10884.00|0.04|0.07|A|F|1994-05-08|1994-06-02|1994-05-09|COLLECT COD|REG AIR|ments are fu|
-2182|179|9|5|37|39929.29|0.06|0.02|A|F|1994-04-08|1994-06-29|1994-04-18|TAKE BACK RETURN|TRUCK|ges. blithely ironic|
-2183|71|1|1|29|28161.03|0.05|0.01|N|O|1996-07-21|1996-08-24|1996-08-15|TAKE BACK RETURN|RAIL|ly unusual deposits sleep carefully|
-2183|52|3|2|25|23801.25|0.06|0.02|N|O|1996-07-06|1996-08-21|1996-08-05|NONE|RAIL|he quickly f|
-2208|58|3|1|48|45986.40|0.08|0.07|A|F|1995-05-13|1995-06-30|1995-05-20|COLLECT COD|MAIL|sits. idly permanent request|
-2208|97|1|2|11|10967.99|0.08|0.01|A|F|1995-05-06|1995-07-19|1995-05-22|COLLECT COD|TRUCK|ding waters lose. furiously regu|
-2208|74|4|3|41|39936.87|0.08|0.02|N|O|1995-08-18|1995-06-19|1995-09-05|COLLECT COD|RAIL|nd the furious, express dependencies.|
-2208|43|2|4|50|47152.00|0.07|0.07|N|F|1995-06-11|1995-05-31|1995-06-29|TAKE BACK RETURN|FOB|al foxes will hav|
-2208|30|5|5|43|39991.29|0.03|0.06|A|F|1995-05-10|1995-06-02|1995-06-09|TAKE BACK RETURN|MAIL|es. accounts cajole. fi|
-2208|167|2|6|18|19208.88|0.02|0.08|R|F|1995-06-06|1995-06-10|1995-06-11|TAKE BACK RETURN|TRUCK|packages are quickly bold de|
-2208|7|2|7|45|40815.00|0.00|0.08|A|F|1995-05-05|1995-06-10|1995-05-11|NONE|SHIP|e fluffily regular theodolites caj|
-2209|23|2|1|40|36920.80|0.05|0.01|R|F|1992-11-01|1992-09-25|1992-11-08|DELIVER IN PERSON|SHIP|ully special sheaves serve|
-2209|103|4|2|10|10031.00|0.00|0.02|R|F|1992-09-02|1992-09-24|1992-09-21|DELIVER IN PERSON|AIR|players. carefully reg|
-2209|64|1|3|11|10604.66|0.01|0.01|A|F|1992-07-12|1992-08-24|1992-08-10|DELIVER IN PERSON|REG AIR|express, regular pinto be|
-2209|181|2|4|39|42166.02|0.08|0.07|R|F|1992-11-04|1992-09-02|1992-11-11|TAKE BACK RETURN|MAIL|ly around the final packages. deposits ca|
-2209|124|7|5|24|24578.88|0.08|0.06|R|F|1992-08-09|1992-08-18|1992-08-25|COLLECT COD|AIR| along the bol|
-2209|178|7|6|7|7547.19|0.09|0.07|A|F|1992-08-18|1992-09-09|1992-09-12|DELIVER IN PERSON|AIR| quickly regular pack|
-2210|78|7|1|36|35210.52|0.10|0.00|A|F|1992-03-04|1992-03-24|1992-03-21|DELIVER IN PERSON|AIR| requests wake enticingly final|
-2211|48|1|1|25|23701.00|0.04|0.01|A|F|1994-10-09|1994-08-04|1994-11-03|TAKE BACK RETURN|RAIL|deas. carefully special theodolites along|
-2211|140|6|2|40|41605.60|0.09|0.06|A|F|1994-09-30|1994-09-10|1994-10-26|NONE|MAIL|posits among the express dolphins|
-2211|160|2|3|25|26504.00|0.00|0.07|A|F|1994-08-13|1994-08-17|1994-08-16|NONE|AIR|ly regular, express|
-2211|85|6|4|23|22656.84|0.03|0.02|R|F|1994-10-05|1994-09-13|1994-10-17|DELIVER IN PERSON|AIR|ependencies |
-2211|135|1|5|3|3105.39|0.02|0.04|A|F|1994-08-28|1994-09-10|1994-09-06|TAKE BACK RETURN|SHIP|pendencies after the regular f|
-2211|187|8|6|18|19569.24|0.05|0.08|A|F|1994-08-31|1994-09-07|1994-09-22|NONE|TRUCK|c grouches. slyly express pinto |
-2211|79|9|7|3|2937.21|0.06|0.05|R|F|1994-09-21|1994-08-10|1994-10-19|TAKE BACK RETURN|RAIL|y slyly final|
-2212|71|10|1|18|17479.26|0.07|0.06|R|F|1994-06-22|1994-06-18|1994-06-25|TAKE BACK RETURN|FOB| cajole. final, pending ideas should are bl|
-2213|118|8|1|20|20362.20|0.01|0.00|A|F|1993-01-21|1993-04-14|1993-01-29|COLLECT COD|REG AIR|iously express accounts; |
-2213|60|1|2|4|3840.24|0.09|0.05|R|F|1993-04-15|1993-04-15|1993-05-05|COLLECT COD|SHIP| affix carefully furiously |
-2213|70|5|3|1|970.07|0.05|0.05|A|F|1993-04-25|1993-04-06|1993-04-28|TAKE BACK RETURN|AIR|s along the ironic reques|
-2213|174|3|4|39|41892.63|0.09|0.05|A|F|1993-05-12|1993-04-07|1993-05-23|TAKE BACK RETURN|SHIP|the blithely |
-2213|38|9|5|43|40335.29|0.04|0.03|A|F|1993-04-18|1993-03-11|1993-05-11|TAKE BACK RETURN|RAIL|r packages are along the carefully bol|
-2213|48|5|6|41|38869.64|0.01|0.00|R|F|1993-01-31|1993-03-31|1993-02-28|COLLECT COD|FOB| carefully pend|
-2213|64|9|7|3|2892.18|0.02|0.04|A|F|1993-03-09|1993-03-17|1993-04-07|TAKE BACK RETURN|AIR|o wake. ironic platel|
-2214|76|5|1|27|26353.89|0.04|0.04|N|O|1998-05-31|1998-06-07|1998-06-19|DELIVER IN PERSON|REG AIR|x fluffily along the even packages-- |
-2214|194|5|2|50|54709.50|0.00|0.02|N|O|1998-07-06|1998-06-16|1998-07-16|TAKE BACK RETURN|MAIL|accounts. blith|
-2214|113|7|3|42|42550.62|0.04|0.08|N|O|1998-05-26|1998-07-13|1998-06-22|COLLECT COD|FOB|ons. deposi|
-2214|196|9|4|22|24116.18|0.01|0.01|N|O|1998-05-30|1998-07-02|1998-06-09|DELIVER IN PERSON|RAIL|t the blithely|
-2215|73|1|1|33|32111.31|0.00|0.00|N|O|1996-07-19|1996-08-10|1996-07-30|COLLECT COD|RAIL|dolites cajole b|
-2215|33|9|2|30|27990.90|0.01|0.00|N|O|1996-08-15|1996-09-10|1996-08-25|NONE|FOB|ckages caj|
-2215|57|5|3|30|28711.50|0.07|0.03|N|O|1996-09-09|1996-07-20|1996-09-28|COLLECT COD|TRUCK|against the carefu|
-2215|146|3|4|20|20922.80|0.02|0.02|N|O|1996-09-09|1996-08-10|1996-09-19|NONE|MAIL| unusual deposits haggle carefully. ide|
-2240|164|3|1|6|6384.96|0.01|0.00|A|F|1992-06-23|1992-05-17|1992-07-20|COLLECT COD|AIR|ymptotes boost. furiously bold p|
-2240|28|1|2|37|34336.74|0.03|0.07|R|F|1992-03-16|1992-05-31|1992-04-05|COLLECT COD|FOB| quickly after the packages? blithely si|
-2240|53|5|3|39|37168.95|0.08|0.06|A|F|1992-05-22|1992-05-10|1992-06-08|NONE|FOB|y orbits. final depos|
-2240|86|7|4|10|9860.80|0.09|0.00|A|F|1992-05-25|1992-04-14|1992-06-23|DELIVER IN PERSON|REG AIR|are across the ironic packages.|
-2240|161|10|5|29|30773.64|0.02|0.06|A|F|1992-03-29|1992-05-08|1992-04-09|COLLECT COD|MAIL|lyly even ideas w|
-2240|81|2|6|32|31394.56|0.06|0.06|R|F|1992-04-11|1992-04-18|1992-04-22|NONE|MAIL|ss thinly deposits. blithely bold package|
-2240|78|7|7|24|23473.68|0.04|0.05|R|F|1992-05-13|1992-04-09|1992-05-14|DELIVER IN PERSON|FOB|ng the silent accounts. slyly ironic t|
-2241|5|6|1|25|22625.00|0.00|0.08|R|F|1993-08-11|1993-07-23|1993-09-01|DELIVER IN PERSON|MAIL| final deposits use fluffily. even f|
-2241|195|8|2|38|41617.22|0.04|0.06|A|F|1993-08-04|1993-07-31|1993-08-06|TAKE BACK RETURN|TRUCK| silent, unusual d|
-2241|97|10|3|48|47860.32|0.08|0.04|A|F|1993-05-14|1993-07-30|1993-05-26|TAKE BACK RETURN|RAIL|ss accounts engage furiously. slyly even re|
-2241|167|4|4|19|20276.04|0.10|0.00|A|F|1993-06-01|1993-08-05|1993-06-07|TAKE BACK RETURN|TRUCK| are furiously quickl|
-2241|82|3|5|2|1964.16|0.04|0.03|A|F|1993-08-16|1993-08-02|1993-08-24|NONE|REG AIR|, express deposits. pear|
-2241|116|3|6|22|22354.42|0.02|0.08|R|F|1993-08-13|1993-06-15|1993-08-16|DELIVER IN PERSON|TRUCK|, ironic depen|
-2241|142|3|7|9|9379.26|0.09|0.03|A|F|1993-05-14|1993-07-12|1993-05-29|NONE|AIR|lyly final |
-2242|123|4|1|15|15346.80|0.09|0.08|N|O|1997-08-04|1997-09-21|1997-08-11|COLLECT COD|FOB|its. carefully express packages cajole. bli|
-2243|127|8|1|10|10271.20|0.04|0.06|N|O|1995-07-26|1995-07-18|1995-08-03|NONE|RAIL|express, daring foxes affix fur|
-2244|51|6|1|3|2853.15|0.02|0.02|A|F|1993-04-30|1993-03-15|1993-05-19|TAKE BACK RETURN|FOB| beans for the regular platel|
-2244|193|6|2|16|17491.04|0.01|0.06|R|F|1993-02-12|1993-03-09|1993-02-28|COLLECT COD|FOB|rate around the reques|
-2245|76|7|1|44|42947.08|0.03|0.03|A|F|1993-06-12|1993-06-10|1993-06-16|NONE|TRUCK|refully even sheaves|
-2245|74|3|2|28|27273.96|0.05|0.03|R|F|1993-08-19|1993-07-27|1993-09-04|COLLECT COD|TRUCK|e requests sleep furiou|
-2245|86|7|3|33|32540.64|0.03|0.01|R|F|1993-06-26|1993-06-11|1993-07-17|TAKE BACK RETURN|AIR|ing to the carefully ruthless accounts|
-2245|189|10|4|14|15248.52|0.02|0.04|R|F|1993-05-06|1993-07-21|1993-05-19|DELIVER IN PERSON|RAIL|nts. always unusual dep|
-2245|80|8|5|33|32342.64|0.03|0.07|R|F|1993-06-16|1993-06-05|1993-07-07|NONE|MAIL| across the express reques|
-2246|53|4|1|22|20967.10|0.02|0.01|N|O|1996-07-25|1996-08-03|1996-08-24|DELIVER IN PERSON|SHIP|ructions wake carefully fina|
-2246|104|5|2|43|43176.30|0.07|0.06|N|O|1996-08-25|1996-08-23|1996-09-19|DELIVER IN PERSON|AIR|ainst the ironic theodolites haggle fi|
-2246|18|8|3|11|10098.11|0.10|0.00|N|O|1996-06-21|1996-07-24|1996-07-18|TAKE BACK RETURN|TRUCK|quests alongside o|
-2246|163|8|4|13|13821.08|0.08|0.05|N|O|1996-09-15|1996-07-21|1996-10-08|DELIVER IN PERSON|AIR|equests. fluffily special epitaphs use|
-2247|172|2|1|12|12866.04|0.02|0.07|A|F|1992-09-06|1992-09-18|1992-09-26|NONE|MAIL|final accounts. requests across the furiou|
-2272|90|1|1|18|17821.62|0.04|0.00|R|F|1993-08-01|1993-07-06|1993-08-25|NONE|MAIL|ons along the blithely e|
-2272|34|10|2|40|37361.20|0.07|0.00|A|F|1993-04-25|1993-07-12|1993-05-15|DELIVER IN PERSON|FOB|lithely ir|
-2272|56|4|3|36|34417.80|0.03|0.02|A|F|1993-05-25|1993-05-23|1993-06-09|TAKE BACK RETURN|RAIL|about the ironic packages; quickly iron|
-2272|138|4|4|30|31143.90|0.09|0.07|A|F|1993-07-27|1993-05-15|1993-08-13|NONE|RAIL|quests at the foxes haggle evenly pack|
-2272|76|4|5|12|11712.84|0.03|0.03|A|F|1993-04-19|1993-05-14|1993-04-23|NONE|RAIL| accounts cajole. quickly b|
-2273|184|5|1|34|36862.12|0.02|0.03|N|O|1997-01-08|1997-02-02|1997-01-23|COLLECT COD|MAIL| furiously carefully bold de|
-2273|85|6|2|35|34477.80|0.00|0.05|N|O|1997-01-02|1997-01-19|1997-01-14|NONE|REG AIR|arefully f|
-2273|95|8|3|8|7960.72|0.00|0.04|N|O|1996-12-15|1997-02-27|1997-01-10|NONE|FOB|dependencies. slyly ir|
-2273|161|6|4|20|21223.20|0.06|0.04|N|O|1997-03-05|1997-02-25|1997-04-01|NONE|RAIL|cuses. quickly enticing requests wake |
-2273|162|7|5|18|19118.88|0.07|0.00|N|O|1996-12-16|1997-01-21|1997-01-03|COLLECT COD|TRUCK| beans. doggedly final packages wake|
-2273|155|7|6|16|16882.40|0.10|0.03|N|O|1997-01-10|1997-02-03|1997-02-01|TAKE BACK RETURN|RAIL|furiously above the ironic requests. |
-2273|20|1|7|7|6440.14|0.05|0.05|N|O|1997-02-19|1997-01-22|1997-02-21|TAKE BACK RETURN|TRUCK|ts. furiou|
-2274|12|6|1|18|16416.18|0.04|0.03|R|F|1993-09-06|1993-12-03|1993-09-22|COLLECT COD|SHIP|usly final re|
-2274|111|8|2|23|23255.53|0.04|0.03|R|F|1993-10-28|1993-11-03|1993-11-05|NONE|MAIL|kly special warhorse|
-2274|129|10|3|18|18524.16|0.03|0.06|R|F|1993-09-28|1993-11-22|1993-10-12|DELIVER IN PERSON|SHIP| express packages. even accounts hagg|
-2275|34|5|1|30|28020.90|0.08|0.05|R|F|1993-01-10|1992-11-21|1993-01-22|NONE|REG AIR|re slyly slyly special idea|
-2275|91|4|2|11|10901.99|0.08|0.03|A|F|1993-01-16|1992-12-10|1993-01-25|COLLECT COD|REG AIR|ost across the never express instruction|
-2276|119|9|1|5|5095.55|0.07|0.08|N|O|1996-05-09|1996-06-18|1996-05-13|DELIVER IN PERSON|FOB|ias instea|
-2276|135|1|2|13|13456.69|0.08|0.04|N|O|1996-07-24|1996-06-18|1996-08-16|COLLECT COD|RAIL|arefully ironic foxes cajole q|
-2276|171|2|3|27|28921.59|0.07|0.08|N|O|1996-07-30|1996-06-10|1996-07-31|DELIVER IN PERSON|RAIL|the carefully unusual accoun|
-2276|109|6|4|38|38345.80|0.06|0.03|N|O|1996-07-07|1996-06-28|1996-07-17|COLLECT COD|RAIL|ans. pinto beans boost c|
-2276|153|5|5|50|52657.50|0.03|0.05|N|O|1996-07-13|1996-06-25|1996-07-22|DELIVER IN PERSON|REG AIR| accounts dete|
-2276|6|9|6|4|3624.00|0.10|0.03|N|O|1996-07-05|1996-06-30|1996-08-04|COLLECT COD|FOB|s. deposits |
-2277|137|8|1|38|39410.94|0.03|0.07|R|F|1995-04-23|1995-03-25|1995-05-20|TAKE BACK RETURN|TRUCK|fully bold|
-2277|8|1|2|2|1816.00|0.10|0.08|A|F|1995-02-01|1995-02-04|1995-03-02|TAKE BACK RETURN|AIR|endencies sleep idly pending p|
-2277|198|10|3|4|4392.76|0.05|0.06|R|F|1995-04-27|1995-03-16|1995-04-29|TAKE BACK RETURN|SHIP|. quickly unusual deposi|
-2277|159|4|4|31|32833.65|0.02|0.00|R|F|1995-03-07|1995-03-19|1995-03-26|TAKE BACK RETURN|MAIL|ic instructions detect ru|
-2278|45|2|1|36|34021.44|0.04|0.05|N|O|1998-06-04|1998-06-06|1998-06-30|NONE|TRUCK|y ironic pinto beans br|
-2278|45|2|2|50|47252.00|0.02|0.00|N|O|1998-08-09|1998-07-08|1998-09-05|DELIVER IN PERSON|RAIL|into beans. blit|
-2278|97|9|3|22|21935.98|0.03|0.00|N|O|1998-05-15|1998-07-14|1998-06-04|TAKE BACK RETURN|REG AIR|ep regular accounts. blithely even|
-2279|14|5|1|12|10968.12|0.07|0.08|A|F|1993-05-10|1993-03-25|1993-06-02|COLLECT COD|REG AIR|lets across the excuses nag quickl|
-2279|41|2|2|38|35759.52|0.08|0.07|R|F|1993-06-09|1993-04-06|1993-06-26|COLLECT COD|TRUCK|s above the furiously express dep|
-2279|4|7|3|3|2712.00|0.09|0.04|A|F|1993-05-31|1993-05-07|1993-06-05|COLLECT COD|REG AIR|ing foxes above the even accounts use slyly|
-2279|52|4|4|42|39986.10|0.02|0.00|R|F|1993-02-28|1993-04-25|1993-03-02|TAKE BACK RETURN|REG AIR| above the furiously ironic deposits. |
-2279|169|8|5|9|9622.44|0.05|0.04|R|F|1993-05-21|1993-03-29|1993-06-17|DELIVER IN PERSON|MAIL|ns cajole after the final platelets. s|
-2279|147|10|6|12|12565.68|0.02|0.00|R|F|1993-05-04|1993-04-26|1993-05-28|DELIVER IN PERSON|FOB|ccounts. slyl|
-2279|119|9|7|32|32611.52|0.05|0.05|A|F|1993-04-20|1993-05-22|1993-05-18|DELIVER IN PERSON|RAIL|re quickly. furiously ironic ide|
-2304|200|2|1|42|46208.40|0.00|0.01|A|F|1994-01-20|1994-03-04|1994-02-05|COLLECT COD|RAIL|quests are blithely alongside of|
-2304|19|9|2|48|44112.48|0.00|0.00|R|F|1994-02-12|1994-02-16|1994-03-10|COLLECT COD|REG AIR| deposits cajole blithely e|
-2304|48|9|3|3|2844.12|0.00|0.05|R|F|1994-03-19|1994-03-04|1994-03-20|DELIVER IN PERSON|AIR|l excuses after the ev|
-2305|174|4|1|3|3222.51|0.00|0.01|A|F|1993-03-24|1993-04-05|1993-03-29|NONE|AIR|kages haggle quickly across the blithely |
-2305|60|8|2|39|37442.34|0.07|0.00|R|F|1993-04-16|1993-04-17|1993-04-22|COLLECT COD|MAIL|ms after the foxes |
-2305|102|3|3|32|32067.20|0.03|0.06|A|F|1993-04-02|1993-03-18|1993-04-03|NONE|AIR| haggle caref|
-2305|112|3|4|17|17205.87|0.00|0.05|A|F|1993-02-21|1993-03-30|1993-03-19|TAKE BACK RETURN|MAIL| carefully alongside of |
-2305|155|7|5|26|27433.90|0.06|0.07|A|F|1993-05-14|1993-02-28|1993-06-04|NONE|SHIP|arefully final theodo|
-2305|51|3|6|7|6657.35|0.06|0.00|R|F|1993-05-15|1993-04-25|1993-06-09|DELIVER IN PERSON|RAIL|gular deposits boost about the foxe|
-2306|196|9|1|50|54809.50|0.09|0.01|N|O|1995-07-27|1995-09-26|1995-08-06|DELIVER IN PERSON|FOB|y quickly |
-2306|149|2|2|39|40916.46|0.04|0.00|N|O|1995-09-07|1995-09-13|1995-10-03|COLLECT COD|SHIP|f the slyly unusual accounts. furiousl|
-2306|178|6|3|35|37735.95|0.01|0.07|N|O|1995-08-18|1995-08-30|1995-08-20|TAKE BACK RETURN|RAIL|raids along the furiously unusual asympto|
-2306|119|3|4|21|21401.31|0.06|0.01|N|O|1995-10-07|1995-09-18|1995-10-17|COLLECT COD|MAIL| ironic pinto |
-2306|142|9|5|42|43769.88|0.04|0.07|N|O|1995-09-05|1995-08-25|1995-09-28|COLLECT COD|MAIL|furiously final acco|
-2306|124|5|6|29|29699.48|0.00|0.03|N|O|1995-11-01|1995-09-01|1995-11-22|DELIVER IN PERSON|REG AIR|uld have to mold. s|
-2306|176|4|7|19|20447.23|0.07|0.01|N|O|1995-11-17|1995-09-06|1995-11-30|DELIVER IN PERSON|AIR|tainments nag furiously carefull|
-2307|142|9|1|24|25011.36|0.10|0.05|R|F|1993-10-07|1993-08-05|1993-10-20|COLLECT COD|AIR|stealthily special packages nag a|
-2307|140|6|2|2|2080.28|0.01|0.00|A|F|1993-09-21|1993-08-22|1993-10-03|COLLECT COD|SHIP|ously. furiously furious requ|
-2307|34|10|3|7|6538.21|0.07|0.04|R|F|1993-08-03|1993-09-04|1993-08-28|DELIVER IN PERSON|AIR|ven instructions wake fluffily |
-2307|165|6|4|19|20238.04|0.08|0.06|R|F|1993-10-23|1993-09-09|1993-11-09|TAKE BACK RETURN|TRUCK|olites haggle furiously around the |
-2307|143|4|5|7|7301.98|0.01|0.06|R|F|1993-09-01|1993-08-08|1993-09-29|NONE|AIR| packages cajo|
-2308|118|9|1|24|24434.64|0.06|0.04|R|F|1993-02-23|1992-12-24|1993-03-10|NONE|MAIL|ts sleep. busy excuses along the s|
-2308|56|1|2|36|34417.80|0.05|0.06|A|F|1992-11-11|1992-11-27|1992-11-23|NONE|MAIL|ong the pending hockey players. blithe|
-2309|170|7|1|14|14982.38|0.10|0.03|N|O|1996-01-01|1995-10-22|1996-01-23|NONE|AIR|asymptotes. furiously pending acco|
-2309|169|8|2|1|1069.16|0.01|0.05|N|O|1995-12-08|1995-11-03|1995-12-31|COLLECT COD|RAIL|eposits alongside of the final re|
-2309|15|2|3|5|4575.05|0.01|0.00|N|O|1995-12-10|1995-10-29|1996-01-06|TAKE BACK RETURN|SHIP|s. requests wake blithely specia|
-2309|139|10|4|46|47799.98|0.08|0.04|N|O|1995-10-02|1995-10-30|1995-10-30|NONE|REG AIR|sly according to the carefully |
-2309|137|3|5|9|9334.17|0.00|0.07|N|O|1995-12-21|1995-10-10|1996-01-20|COLLECT COD|AIR|ding, unusual instructions. dep|
-2309|195|8|6|21|22998.99|0.09|0.00|N|O|1995-11-05|1995-11-07|1995-11-22|NONE|AIR|unts around the dolphins ar|
-2309|138|4|7|48|49830.24|0.03|0.05|N|O|1995-10-21|1995-11-21|1995-11-09|NONE|MAIL|ccounts. id|
-2310|58|6|1|36|34489.80|0.03|0.03|N|O|1996-10-09|1996-10-28|1996-10-29|TAKE BACK RETURN|RAIL|iously against the slyly special accounts|
-2310|171|2|2|6|6427.02|0.07|0.01|N|O|1996-11-08|1996-12-09|1996-12-07|COLLECT COD|REG AIR|e slyly about the quickly ironic theodo|
-2310|42|1|3|48|45217.92|0.08|0.02|N|O|1996-10-04|1996-11-20|1996-10-25|TAKE BACK RETURN|FOB|ep slyly alongside of the |
-2311|141|8|1|18|18740.52|0.01|0.01|N|F|1995-06-11|1995-06-18|1995-07-02|NONE|FOB| fluffily even patterns haggle blithely. re|
-2311|122|1|2|49|50083.88|0.09|0.02|R|F|1995-05-14|1995-07-11|1995-05-20|COLLECT COD|FOB|ideas sleep|
-2311|54|5|3|15|14310.75|0.08|0.04|N|O|1995-06-23|1995-06-06|1995-07-09|COLLECT COD|AIR|ve the blithely pending accounts. furio|
-2311|90|1|4|42|41583.78|0.01|0.06|R|F|1995-06-03|1995-06-27|1995-06-11|DELIVER IN PERSON|MAIL|gle furiously. bold |
-2311|47|10|5|1|947.04|0.05|0.02|A|F|1995-06-07|1995-06-20|1995-06-10|NONE|AIR|ptotes. furiously regular theodolite|
-2311|12|9|6|32|29184.32|0.01|0.03|N|O|1995-07-19|1995-06-26|1995-07-26|NONE|RAIL|sts along the slyly|
-2336|193|5|1|20|21863.80|0.01|0.03|N|O|1996-03-12|1996-02-25|1996-03-18|NONE|REG AIR|across the fi|
-2337|45|2|1|49|46306.96|0.06|0.05|N|O|1997-08-08|1997-08-15|1997-08-31|TAKE BACK RETURN|FOB| along the packages. furiously p|
-2338|52|7|1|30|28561.50|0.07|0.06|N|O|1997-12-10|1997-10-15|1997-12-11|TAKE BACK RETURN|REG AIR|ould have to nag quickly|
-2339|192|3|1|22|24028.18|0.03|0.03|A|F|1994-01-06|1994-03-06|1994-01-10|NONE|FOB| furiously above |
-2339|30|5|2|28|26040.84|0.00|0.00|R|F|1994-01-25|1994-01-22|1994-01-28|DELIVER IN PERSON|RAIL|e bold, even packag|
-2339|117|4|3|13|13222.43|0.06|0.08|R|F|1994-03-10|1994-02-18|1994-03-20|TAKE BACK RETURN|REG AIR|ges. blithely special depend|
-2340|138|4|1|9|9343.17|0.08|0.02|N|O|1996-05-01|1996-02-24|1996-05-16|COLLECT COD|RAIL|. carefully ironic|
-2340|193|5|2|21|22956.99|0.06|0.02|N|O|1996-01-17|1996-03-04|1996-01-29|DELIVER IN PERSON|SHIP| asymptotes. unusual theo|
-2341|47|10|1|12|11364.48|0.08|0.03|R|F|1993-06-06|1993-07-08|1993-06-17|DELIVER IN PERSON|FOB|. quickly final deposits sl|
-2341|71|10|2|37|35929.59|0.07|0.08|A|F|1993-09-23|1993-07-25|1993-10-14|DELIVER IN PERSON|RAIL|was blithel|
-2341|195|8|3|8|8761.52|0.03|0.07|R|F|1993-06-08|1993-07-09|1993-06-10|COLLECT COD|FOB|ns affix above the iron|
-2342|42|1|1|12|11304.48|0.00|0.08|N|O|1996-07-31|1996-07-26|1996-08-14|NONE|TRUCK|print blithely even deposits. carefull|
-2342|117|1|2|24|24410.64|0.10|0.06|N|O|1996-09-30|1996-07-22|1996-10-28|TAKE BACK RETURN|AIR|nstructions c|
-2342|170|1|3|50|53508.50|0.10|0.01|N|O|1996-08-28|1996-07-18|1996-09-22|COLLECT COD|RAIL|cial asymptotes pr|
-2342|36|7|4|1|936.03|0.04|0.06|N|O|1996-08-31|1996-08-09|1996-09-07|DELIVER IN PERSON|REG AIR|ffily. unusual pinto beans wake c|
-2342|27|2|5|22|20394.44|0.08|0.01|N|O|1996-08-10|1996-08-02|1996-08-31|DELIVER IN PERSON|AIR|s. ironic |
-2343|110|1|1|27|27272.97|0.00|0.00|N|O|1995-11-10|1995-11-17|1995-12-10|TAKE BACK RETURN|SHIP|old theodolites.|
-2343|66|1|2|35|33812.10|0.03|0.06|N|O|1995-10-24|1995-11-09|1995-10-26|COLLECT COD|TRUCK|ges haggle furiously carefully regular req|
-2343|179|7|3|21|22662.57|0.00|0.03|N|O|1995-09-07|1995-10-26|1995-10-07|TAKE BACK RETURN|RAIL|osits. unusual theodolites boost furio|
-2368|152|3|1|16|16834.40|0.04|0.03|R|F|1993-10-31|1993-10-22|1993-11-06|NONE|REG AIR|telets wake carefully iro|
-2368|14|5|2|32|29248.32|0.03|0.00|R|F|1993-09-23|1993-10-07|1993-09-27|COLLECT COD|TRUCK|gular courts use blithely around the|
-2368|149|6|3|39|40916.46|0.08|0.03|R|F|1993-09-03|1993-09-20|1993-09-28|COLLECT COD|RAIL|ng the doggedly ironic requests are blithe|
-2368|156|8|4|17|17954.55|0.10|0.08|A|F|1993-10-03|1993-09-27|1993-10-05|NONE|FOB|fily. slyly final ideas alongside o|
-2369|24|7|1|30|27720.60|0.05|0.04|N|O|1997-04-23|1997-02-12|1997-05-21|COLLECT COD|REG AIR|pecial deposits sleep. blithely unusual w|
-2369|169|10|2|47|50250.52|0.10|0.02|N|O|1997-01-02|1997-02-18|1997-01-13|COLLECT COD|RAIL| to the regular dep|
-2370|46|3|1|3|2838.12|0.03|0.07|R|F|1994-03-24|1994-03-26|1994-04-15|COLLECT COD|SHIP|ly regular Tiresia|
-2370|2|5|2|24|21648.00|0.00|0.05|A|F|1994-05-15|1994-04-09|1994-06-12|NONE|REG AIR|final depen|
-2370|61|2|3|32|30753.92|0.05|0.02|A|F|1994-04-24|1994-03-03|1994-05-15|DELIVER IN PERSON|MAIL|ies since the final deposits|
-2370|6|3|4|21|19026.00|0.04|0.01|R|F|1994-02-01|1994-02-19|1994-02-09|TAKE BACK RETURN|MAIL|ecial dependencies must have to |
-2371|159|4|1|37|39188.55|0.05|0.05|N|O|1998-02-11|1998-03-24|1998-02-27|DELIVER IN PERSON|TRUCK|s boost fluffil|
-2371|35|1|2|21|19635.63|0.00|0.05|N|O|1998-04-14|1998-02-14|1998-04-18|COLLECT COD|AIR|gle furiously regu|
-2371|101|4|3|11|11012.10|0.05|0.02|N|O|1998-02-25|1998-04-06|1998-03-23|TAKE BACK RETURN|TRUCK|requests. regular pinto beans wake. car|
-2371|43|6|4|33|31120.32|0.05|0.08|N|O|1998-03-30|1998-02-06|1998-04-05|DELIVER IN PERSON|AIR|deas are. express r|
-2371|165|2|5|22|23433.52|0.02|0.05|N|O|1998-03-26|1998-03-19|1998-04-16|DELIVER IN PERSON|REG AIR|y daring accounts. regular ins|
-2371|86|7|6|39|38457.12|0.05|0.03|N|O|1998-04-01|1998-03-13|1998-04-27|NONE|REG AIR|tructions. regular, stealthy packages wak|
-2371|36|2|7|32|29952.96|0.07|0.07|N|O|1998-02-15|1998-04-03|1998-02-23|NONE|REG AIR|the ruthless accounts. |
-2372|43|4|1|42|39607.68|0.08|0.02|N|O|1998-01-04|1998-01-02|1998-02-02|COLLECT COD|REG AIR|lar packages. regular|
-2372|3|10|2|17|15351.00|0.07|0.01|N|O|1997-12-17|1998-01-17|1997-12-25|NONE|RAIL|xcuses. slyly ironic theod|
-2372|164|1|3|12|12769.92|0.04|0.04|N|O|1998-03-21|1997-12-21|1998-04-12|DELIVER IN PERSON|SHIP|lyly according to|
-2372|122|1|4|4|4088.48|0.00|0.07|N|O|1997-12-14|1997-12-28|1997-12-16|TAKE BACK RETURN|REG AIR|e carefully blithely even epitaphs. r|
-2372|20|7|5|5|4600.10|0.02|0.04|N|O|1998-02-08|1998-01-18|1998-03-02|TAKE BACK RETURN|RAIL|ets against the |
-2372|189|10|6|11|11980.98|0.02|0.06|N|O|1998-02-14|1998-01-18|1998-03-10|TAKE BACK RETURN|FOB| silent, pending de|
-2372|57|8|7|19|18183.95|0.01|0.06|N|O|1997-12-26|1998-02-19|1998-01-02|COLLECT COD|SHIP| beans haggle sometimes|
-2373|191|5|1|17|18550.23|0.02|0.01|R|F|1994-03-29|1994-05-19|1994-04-20|COLLECT COD|AIR|auternes. blithely even pinto bea|
-2373|136|2|2|3|3108.39|0.08|0.08|R|F|1994-05-15|1994-06-10|1994-06-04|COLLECT COD|TRUCK|dependencies wake ironical|
-2373|141|8|3|29|30193.06|0.05|0.02|A|F|1994-06-01|1994-05-14|1994-06-17|NONE|TRUCK|yly silent ideas affix furiousl|
-2373|91|5|4|5|4955.45|0.10|0.01|R|F|1994-06-02|1994-05-03|1994-06-21|NONE|REG AIR|uffily blithely ironic requests|
-2374|118|2|1|41|41742.51|0.07|0.00|A|F|1994-01-27|1993-12-11|1994-02-12|TAKE BACK RETURN|RAIL|heodolites. requests|
-2374|160|2|2|24|25443.84|0.07|0.08|A|F|1994-02-02|1994-01-12|1994-02-04|DELIVER IN PERSON|TRUCK|. requests are above t|
-2374|61|8|3|2|1922.12|0.06|0.02|R|F|1993-12-30|1994-01-24|1994-01-02|COLLECT COD|FOB|, unusual ideas. deposits cajole quietl|
-2374|74|5|4|28|27273.96|0.04|0.08|R|F|1994-02-19|1993-12-16|1994-03-15|COLLECT COD|MAIL|ets cajole fu|
-2374|1|2|5|25|22525.00|0.08|0.00|A|F|1993-11-26|1993-12-15|1993-12-10|COLLECT COD|RAIL|refully pending d|
-2375|168|9|1|3|3204.48|0.02|0.08|N|O|1997-02-14|1996-12-25|1997-02-22|COLLECT COD|RAIL|slyly across the furiously e|
-2375|132|8|2|9|9289.17|0.09|0.02|N|O|1997-02-17|1996-12-27|1997-02-27|DELIVER IN PERSON|MAIL|ly against the packages. bold pinto bean|
-2375|47|4|3|26|24623.04|0.02|0.06|N|O|1997-03-18|1997-02-02|1997-03-29|TAKE BACK RETURN|TRUCK|rate across the|
-2375|5|8|4|5|4525.00|0.01|0.00|N|O|1997-01-31|1997-01-25|1997-02-22|COLLECT COD|REG AIR|final packages cajole according to the furi|
-2375|88|9|5|42|41499.36|0.01|0.08|N|O|1997-01-24|1997-02-15|1997-02-07|DELIVER IN PERSON|FOB|apades. idea|
-2375|126|7|6|20|20522.40|0.09|0.08|N|O|1996-12-01|1996-12-26|1996-12-19|TAKE BACK RETURN|SHIP|ckages! blithely enticing deposi|
-2400|103|6|1|48|48148.80|0.01|0.02|N|O|1998-10-07|1998-08-30|1998-11-03|DELIVER IN PERSON|MAIL|fore the car|
-2400|90|1|2|1|990.09|0.04|0.07|N|O|1998-08-18|1998-09-12|1998-09-11|NONE|MAIL|silent deposits serve furious|
-2400|53|5|3|23|21920.15|0.02|0.08|N|O|1998-08-05|1998-08-28|1998-08-30|NONE|SHIP|tions. fluffily ironic platelets cajole c|
-2400|17|7|4|23|21091.23|0.09|0.04|N|O|1998-10-04|1998-10-04|1998-10-31|NONE|RAIL|ages lose carefully around the regula|
-2401|182|3|1|39|42205.02|0.00|0.03|N|O|1997-09-29|1997-10-21|1997-10-17|DELIVER IN PERSON|FOB|ould affix |
-2401|3|8|2|49|44247.00|0.05|0.07|N|O|1997-09-02|1997-09-11|1997-09-13|TAKE BACK RETURN|AIR|lites cajole carefully |
-2402|86|7|1|43|42401.44|0.03|0.08|N|O|1996-09-17|1996-11-20|1996-09-22|DELIVER IN PERSON|RAIL|slyly slyly blithe sheaves|
-2402|152|4|2|24|25251.60|0.02|0.05|N|O|1996-11-21|1996-10-19|1996-11-29|DELIVER IN PERSON|SHIP|as; blithely ironic requ|
-2403|83|4|1|34|33424.72|0.04|0.07|N|O|1998-05-30|1998-06-19|1998-06-05|NONE|REG AIR| slyly bold re|
-2403|152|4|2|19|19990.85|0.08|0.07|N|O|1998-04-20|1998-07-02|1998-05-13|DELIVER IN PERSON|FOB|sits. ironic in|
-2403|193|4|3|27|29516.13|0.05|0.03|N|O|1998-07-27|1998-07-08|1998-08-03|NONE|SHIP|deposits sleep slyly special theodolit|
-2403|31|2|4|30|27930.90|0.05|0.06|N|O|1998-08-08|1998-06-17|1998-08-20|NONE|TRUCK|ackages sleep furiously pendin|
-2404|147|10|1|36|37697.04|0.07|0.00|N|O|1997-03-27|1997-05-16|1997-04-06|COLLECT COD|REG AIR|s nag furi|
-2404|36|2|2|1|936.03|0.02|0.04|N|O|1997-05-22|1997-06-06|1997-05-28|DELIVER IN PERSON|MAIL|from the final orbits? even pinto beans hag|
-2404|18|5|3|41|37638.41|0.02|0.06|N|O|1997-06-12|1997-05-03|1997-07-12|NONE|AIR| dolphins are|
-2404|57|8|4|19|18183.95|0.09|0.03|N|O|1997-05-07|1997-05-24|1997-05-24|TAKE BACK RETURN|SHIP|cuses. quickly even in|
-2404|4|9|5|18|16272.00|0.00|0.04|N|O|1997-06-25|1997-05-06|1997-07-02|NONE|RAIL|packages. even requests according to |
-2405|89|10|1|18|17803.44|0.09|0.07|N|O|1997-01-23|1997-03-10|1997-02-03|COLLECT COD|REG AIR|carefully ironic accounts. slyly |
-2405|27|10|2|30|27810.60|0.10|0.08|N|O|1997-03-24|1997-03-10|1997-04-14|TAKE BACK RETURN|AIR|y final deposits are slyly caref|
-2405|17|8|3|49|44933.49|0.00|0.06|N|O|1996-12-24|1997-03-23|1997-01-01|TAKE BACK RETURN|FOB|cial requests. ironic, regu|
-2405|177|7|4|23|24774.91|0.08|0.05|N|O|1996-12-28|1997-01-29|1997-01-07|NONE|AIR|t wake blithely blithely regular idea|
-2406|170|5|1|18|19263.06|0.07|0.05|N|O|1997-02-17|1996-12-25|1997-02-19|COLLECT COD|MAIL|azzle furiously careful|
-2406|41|8|2|40|37641.60|0.02|0.07|N|O|1997-01-09|1996-12-02|1997-01-16|NONE|SHIP|gular accounts caj|
-2406|50|1|3|16|15200.80|0.07|0.03|N|O|1996-10-31|1996-11-28|1996-11-08|TAKE BACK RETURN|SHIP| special accou|
-2406|146|9|4|34|35568.76|0.07|0.06|N|O|1996-12-01|1996-12-07|1996-12-16|NONE|AIR|hinly even accounts are slyly q|
-2406|187|8|5|25|27179.50|0.08|0.02|N|O|1996-12-03|1996-12-14|1996-12-26|COLLECT COD|MAIL|al, regular in|
-2406|59|4|6|22|21099.10|0.05|0.02|N|O|1996-11-22|1997-01-17|1996-12-15|NONE|TRUCK|hely even foxes unwind furiously aga|
-2406|60|2|7|30|28801.80|0.07|0.07|N|O|1997-01-17|1997-01-12|1997-01-22|TAKE BACK RETURN|TRUCK| final pinto beans han|
-2407|64|3|1|14|13496.84|0.04|0.02|N|O|1998-10-10|1998-08-25|1998-10-27|NONE|FOB|l dependencies s|
-2407|166|7|2|9|9595.44|0.07|0.05|N|O|1998-08-06|1998-08-11|1998-08-20|TAKE BACK RETURN|TRUCK|ts. special deposits are closely.|
-2407|131|2|3|39|40214.07|0.02|0.02|N|O|1998-08-20|1998-09-12|1998-08-22|DELIVER IN PERSON|MAIL|iously final deposits solv|
-2407|91|4|4|10|9910.90|0.01|0.07|N|O|1998-08-14|1998-09-10|1998-08-29|COLLECT COD|FOB| pending instructions. theodolites x-|
-2407|198|1|5|14|15374.66|0.04|0.05|N|O|1998-09-24|1998-08-18|1998-10-06|DELIVER IN PERSON|FOB|tructions wake stealt|
-2407|71|9|6|18|17479.26|0.04|0.01|N|O|1998-10-03|1998-08-30|1998-10-19|TAKE BACK RETURN|MAIL| wake carefully. fluffily |
-2407|161|8|7|7|7428.12|0.07|0.03|N|O|1998-09-11|1998-08-15|1998-09-30|TAKE BACK RETURN|MAIL|totes are carefully accordin|
-2432|50|3|1|30|28501.50|0.03|0.02|N|O|1996-09-05|1996-10-10|1996-10-05|TAKE BACK RETURN|TRUCK| requests wake alongside of|
-2432|162|3|2|8|8497.28|0.07|0.01|N|O|1996-10-16|1996-10-01|1996-11-13|COLLECT COD|RAIL|s about the bold, close deposit|
-2432|109|2|3|13|13118.30|0.07|0.06|N|O|1996-09-03|1996-10-10|1996-10-03|NONE|RAIL|arefully about the caref|
-2432|13|4|4|14|12782.14|0.00|0.06|N|O|1996-08-18|1996-09-04|1996-08-27|TAKE BACK RETURN|RAIL|riously regular packages. p|
-2433|87|8|1|39|38496.12|0.01|0.04|R|F|1994-11-20|1994-09-23|1994-12-10|DELIVER IN PERSON|SHIP|ly final asy|
-2433|134|5|2|20|20682.60|0.05|0.06|A|F|1994-12-09|1994-10-20|1994-12-15|COLLECT COD|REG AIR|lithely blithely final ide|
-2433|157|2|3|38|40171.70|0.08|0.03|A|F|1994-10-15|1994-10-23|1994-11-06|DELIVER IN PERSON|SHIP|. slyly regular requests sle|
-2433|121|6|4|43|43908.16|0.01|0.05|A|F|1994-10-16|1994-10-23|1994-11-08|DELIVER IN PERSON|RAIL|ular requests. slyly even pa|
-2433|108|1|5|3|3024.30|0.06|0.02|A|F|1994-11-08|1994-09-24|1994-11-17|COLLECT COD|AIR|usly pending depos|
-2434|95|6|1|1|995.09|0.01|0.06|N|O|1997-08-02|1997-05-28|1997-08-19|TAKE BACK RETURN|MAIL| furiously express packages. ironic, pend|
-2434|127|10|2|39|40057.68|0.09|0.05|N|O|1997-06-10|1997-06-08|1997-07-03|COLLECT COD|RAIL|r deposits sleep furiou|
-2434|130|3|3|28|28843.64|0.02|0.05|N|O|1997-06-28|1997-06-26|1997-07-15|COLLECT COD|RAIL|ven theodolites around the slyly|
-2434|168|9|4|49|52339.84|0.00|0.05|N|O|1997-08-08|1997-07-23|1997-08-27|DELIVER IN PERSON|FOB| after the requests haggle bold, fina|
-2435|39|10|1|8|7512.24|0.08|0.03|A|F|1993-06-08|1993-04-04|1993-06-29|COLLECT COD|SHIP|e fluffily quickly final accounts. care|
-2435|49|2|2|43|40808.72|0.03|0.08|A|F|1993-03-27|1993-05-20|1993-04-18|DELIVER IN PERSON|TRUCK|alongside of the s|
-2435|12|9|3|24|21888.24|0.07|0.08|R|F|1993-03-14|1993-05-20|1993-03-26|DELIVER IN PERSON|SHIP|s. carefully regular d|
-2435|156|4|4|22|23235.30|0.02|0.05|R|F|1993-05-23|1993-04-14|1993-06-04|NONE|SHIP|e final, final deposits. carefully regular|
-2435|72|2|5|3|2916.21|0.07|0.07|R|F|1993-06-01|1993-03-25|1993-06-27|DELIVER IN PERSON|FOB| final accounts ar|
-2435|46|9|6|17|16082.68|0.02|0.02|A|F|1993-06-05|1993-05-05|1993-06-14|NONE|TRUCK|cajole aft|
-2435|121|10|7|8|8168.96|0.07|0.02|R|F|1993-05-03|1993-04-02|1993-05-17|COLLECT COD|SHIP|ng the fluffily special foxes nag |
-2436|155|6|1|48|50647.20|0.04|0.02|N|O|1995-10-22|1995-10-22|1995-11-16|DELIVER IN PERSON|FOB|he furiously |
-2436|117|7|2|18|18307.98|0.05|0.03|N|O|1995-10-14|1995-11-21|1995-11-12|TAKE BACK RETURN|TRUCK|y ironic accounts. furiously even packa|
-2436|164|3|3|6|6384.96|0.06|0.08|N|O|1995-10-25|1995-11-30|1995-11-24|DELIVER IN PERSON|RAIL|odolites. ep|
-2437|94|6|1|46|45728.14|0.07|0.04|A|F|1993-08-12|1993-06-16|1993-08-29|NONE|RAIL|e of the bold, dogged requests|
-2437|190|1|2|26|28344.94|0.00|0.04|A|F|1993-06-25|1993-05-22|1993-07-07|DELIVER IN PERSON|REG AIR|lyly regular accounts.|
-2437|2|7|3|23|20746.00|0.01|0.00|A|F|1993-08-15|1993-06-28|1993-08-23|TAKE BACK RETURN|SHIP|s deposits. pendi|
-2437|116|10|4|12|12193.32|0.03|0.08|A|F|1993-04-27|1993-07-01|1993-05-18|TAKE BACK RETURN|FOB|thely regular deposits. ironic fray|
-2437|17|7|5|29|26593.29|0.02|0.06|A|F|1993-05-12|1993-06-10|1993-05-25|NONE|FOB|ress dolphins. furiously fin|
-2437|19|3|6|10|9190.10|0.10|0.06|A|F|1993-05-20|1993-06-23|1993-05-22|TAKE BACK RETURN|MAIL|unts. even, ironic pl|
-2438|165|2|1|45|47932.20|0.01|0.00|A|F|1993-10-27|1993-09-24|1993-11-02|COLLECT COD|REG AIR|en theodolites w|
-2438|13|4|2|31|28303.31|0.08|0.01|R|F|1993-10-16|1993-08-31|1993-11-10|COLLECT COD|REG AIR|t. slyly ironic sh|
-2438|68|7|3|10|9680.60|0.10|0.00|R|F|1993-08-18|1993-08-28|1993-09-08|NONE|SHIP|engage car|
-2438|161|8|4|27|28651.32|0.01|0.02|R|F|1993-07-27|1993-10-01|1993-08-06|TAKE BACK RETURN|FOB|inal accounts. slyly final reques|
-2438|166|3|5|28|29852.48|0.07|0.06|R|F|1993-11-05|1993-08-22|1993-11-22|TAKE BACK RETURN|TRUCK|ctions. bli|
-2438|149|6|6|23|24130.22|0.09|0.02|R|F|1993-10-06|1993-08-17|1993-10-16|DELIVER IN PERSON|MAIL|ely; blithely special pinto beans breach|
-2438|183|4|7|46|49826.28|0.02|0.05|R|F|1993-10-27|1993-08-30|1993-11-14|COLLECT COD|SHIP| ironic requests cajole f|
-2439|164|1|1|2|2128.32|0.09|0.03|N|O|1997-04-14|1997-06-11|1997-05-09|COLLECT COD|MAIL|courts boos|
-2439|144|5|2|5|5220.70|0.07|0.01|N|O|1997-04-23|1997-04-26|1997-04-28|DELIVER IN PERSON|FOB|ites. furiously|
-2439|195|7|3|33|36141.27|0.08|0.05|N|O|1997-06-01|1997-05-15|1997-06-07|TAKE BACK RETURN|FOB|asymptotes wake packages-- furiously|
-2464|49|8|1|10|9490.40|0.05|0.03|N|O|1998-02-04|1997-12-29|1998-02-16|TAKE BACK RETURN|RAIL|slyly final pinto bean|
-2464|101|6|2|20|20022.00|0.01|0.07|N|O|1997-12-26|1998-01-02|1998-01-24|DELIVER IN PERSON|FOB|sts. slyly close ideas shall h|
-2465|68|5|1|27|26137.62|0.05|0.02|N|O|1995-09-05|1995-09-07|1995-09-17|DELIVER IN PERSON|FOB|posits boost carefully unusual instructio|
-2465|51|3|2|34|32335.70|0.02|0.05|N|O|1995-10-02|1995-08-04|1995-10-09|COLLECT COD|RAIL|posits wake. regular package|
-2465|32|3|3|8|7456.24|0.10|0.00|N|O|1995-10-16|1995-08-26|1995-11-07|TAKE BACK RETURN|FOB|s across the express deposits wak|
-2465|148|7|4|45|47166.30|0.03|0.01|N|O|1995-09-27|1995-08-25|1995-10-06|NONE|TRUCK|y silent foxes. final pinto beans above |
-2465|47|4|5|50|47352.00|0.01|0.04|N|O|1995-09-01|1995-09-06|1995-09-18|TAKE BACK RETURN|TRUCK|the pending th|
-2465|124|5|6|20|20482.40|0.03|0.03|N|O|1995-08-16|1995-08-13|1995-09-02|COLLECT COD|FOB|uriously? furiously ironic excu|
-2466|186|7|1|16|17378.88|0.00|0.02|R|F|1994-04-20|1994-04-20|1994-05-09|COLLECT COD|FOB|to beans sl|
-2466|105|8|2|10|10051.00|0.00|0.00|A|F|1994-05-08|1994-04-06|1994-06-05|DELIVER IN PERSON|AIR|sly regular deposits. regular, regula|
-2466|14|1|3|29|26506.29|0.10|0.07|A|F|1994-06-11|1994-04-27|1994-07-10|DELIVER IN PERSON|FOB|ckages. bold requests nag carefully.|
-2466|11|8|4|29|26419.29|0.04|0.04|A|F|1994-04-01|1994-04-20|1994-04-23|DELIVER IN PERSON|MAIL|es boost fluffily ab|
-2466|79|10|5|30|29372.10|0.02|0.01|A|F|1994-04-11|1994-05-02|1994-05-02|DELIVER IN PERSON|REG AIR|. fluffily even pinto beans are idly. f|
-2466|173|2|6|19|20390.23|0.10|0.07|R|F|1994-06-12|1994-04-18|1994-07-12|NONE|MAIL|ccounts cajole a|
-2466|155|7|7|35|36930.25|0.10|0.00|A|F|1994-06-01|1994-05-27|1994-06-21|COLLECT COD|AIR| packages detect carefully: ironically sl|
-2467|133|9|1|7|7231.91|0.00|0.00|N|O|1995-07-28|1995-10-04|1995-08-27|NONE|REG AIR|gular packages cajole |
-2468|94|7|1|46|45728.14|0.00|0.04|N|O|1997-07-16|1997-08-09|1997-08-07|COLLECT COD|SHIP|unusual theodolites su|
-2468|21|10|2|43|39603.86|0.00|0.04|N|O|1997-08-17|1997-08-21|1997-08-30|DELIVER IN PERSON|FOB|uriously eve|
-2468|195|6|3|44|48188.36|0.00|0.03|N|O|1997-10-01|1997-08-02|1997-10-09|TAKE BACK RETURN|RAIL|egular, silent sheave|
-2468|82|3|4|5|4910.40|0.08|0.00|N|O|1997-06-28|1997-08-02|1997-07-22|NONE|MAIL| sleep fluffily acc|
-2468|159|7|5|18|19064.70|0.07|0.00|N|O|1997-07-25|1997-08-26|1997-08-14|DELIVER IN PERSON|REG AIR|cies. fluffily r|
-2469|166|1|1|11|11727.76|0.00|0.04|N|O|1997-02-09|1997-01-26|1997-02-16|NONE|TRUCK|ies wake carefully b|
-2469|114|1|2|16|16225.76|0.07|0.06|N|O|1997-02-19|1997-02-04|1997-03-18|NONE|MAIL|ing asymptotes |
-2469|11|5|3|48|43728.48|0.05|0.06|N|O|1997-01-11|1997-01-03|1997-01-15|TAKE BACK RETURN|AIR|riously even theodolites u|
-2469|88|9|4|35|34582.80|0.06|0.06|N|O|1997-02-04|1997-02-02|1997-02-17|DELIVER IN PERSON|RAIL|ld packages haggle regular frets. fluffily |
-2469|121|4|5|30|30633.60|0.09|0.01|N|O|1996-12-21|1997-01-29|1997-01-02|COLLECT COD|SHIP| accounts. regular theodolites affix fu|
-2469|104|5|6|49|49200.90|0.02|0.02|N|O|1997-03-03|1996-12-26|1997-03-13|NONE|AIR| requests are car|
-2469|127|10|7|8|8216.96|0.02|0.00|N|O|1997-03-15|1997-01-20|1997-04-13|NONE|TRUCK|s. regular|
-2470|110|5|1|12|12121.32|0.06|0.06|N|O|1997-07-12|1997-05-24|1997-07-17|TAKE BACK RETURN|FOB|l accounts. deposits nag daringly. express,|
-2470|100|4|2|50|50005.00|0.03|0.03|N|O|1997-06-02|1997-06-01|1997-06-09|COLLECT COD|AIR| packages |
-2470|64|3|3|10|9640.60|0.05|0.08|N|O|1997-06-20|1997-06-19|1997-06-24|TAKE BACK RETURN|FOB| ironic requests a|
-2470|162|3|4|30|31864.80|0.04|0.08|N|O|1997-08-04|1997-07-13|1997-08-14|DELIVER IN PERSON|AIR|s across the furiously fina|
-2471|84|5|1|37|36410.96|0.05|0.01|N|O|1998-05-28|1998-04-17|1998-06-08|COLLECT COD|TRUCK|ounts mold blithely carefully express depo|
-2496|141|8|1|38|39563.32|0.02|0.07|R|F|1994-03-26|1994-04-06|1994-04-23|COLLECT COD|RAIL| bold accounts. furi|
-2496|23|4|2|39|35997.78|0.03|0.00|R|F|1994-03-23|1994-02-18|1994-04-10|TAKE BACK RETURN|FOB|arefully special dependencies abo|
-2496|189|10|3|36|39210.48|0.09|0.04|R|F|1994-03-27|1994-03-15|1994-04-17|TAKE BACK RETURN|SHIP|ully ironic f|
-2496|24|9|4|30|27720.60|0.04|0.01|A|F|1994-01-27|1994-03-11|1994-01-31|DELIVER IN PERSON|RAIL|ake. ironic foxes cajole quickly. fu|
-2497|12|2|1|34|31008.34|0.02|0.03|R|F|1992-09-02|1992-10-19|1992-09-12|COLLECT COD|AIR|ronic accounts. p|
-2497|77|7|2|15|14656.05|0.09|0.02|A|F|1992-12-23|1992-11-20|1993-01-18|DELIVER IN PERSON|SHIP|sly against the|
-2497|34|5|3|28|26152.84|0.02|0.08|A|F|1992-12-02|1992-11-21|1992-12-04|DELIVER IN PERSON|REG AIR|ouches. special, regular requests|
-2497|144|5|4|48|50118.72|0.06|0.05|A|F|1992-09-29|1992-11-13|1992-10-19|TAKE BACK RETURN|AIR| even, regular requests across |
-2497|175|5|5|28|30104.76|0.04|0.05|A|F|1992-11-10|1992-09-30|1992-11-18|DELIVER IN PERSON|MAIL|hely bold ideas. unusual instructions ac|
-2497|71|2|6|19|18450.33|0.05|0.08|A|F|1992-11-10|1992-11-20|1992-12-05|TAKE BACK RETURN|TRUCK| instructions? carefully daring accounts|
-2498|143|2|1|48|50070.72|0.10|0.01|R|F|1993-11-25|1994-01-09|1993-12-24|DELIVER IN PERSON|RAIL|onic requests wake|
-2499|150|3|1|15|15752.25|0.04|0.06|N|O|1995-12-21|1995-12-06|1996-01-19|DELIVER IN PERSON|FOB| slyly across the slyly|
-2499|46|3|2|48|45409.92|0.09|0.03|N|O|1995-10-14|1995-12-12|1995-11-11|DELIVER IN PERSON|AIR|ronic ideas cajole quickly requests. caref|
-2499|133|9|3|31|32027.03|0.09|0.05|N|O|1995-12-09|1995-10-28|1996-01-05|COLLECT COD|AIR|to beans across the carefully ironic theodo|
-2499|159|7|4|39|41306.85|0.06|0.02|N|O|1995-10-26|1995-10-27|1995-11-07|TAKE BACK RETURN|SHIP|otes sublat|
-2499|130|9|5|6|6180.78|0.02|0.01|N|O|1995-11-19|1995-12-14|1995-12-08|NONE|SHIP|cording to the|
-2499|119|3|6|12|12229.32|0.04|0.05|N|O|1995-11-18|1995-12-13|1995-11-23|COLLECT COD|REG AIR|le furiously along the r|
-2500|192|3|1|40|43687.60|0.00|0.02|A|F|1992-09-02|1992-09-30|1992-09-06|DELIVER IN PERSON|SHIP|efully unusual dolphins s|
-2500|37|8|2|34|31859.02|0.06|0.02|R|F|1992-10-03|1992-11-11|1992-10-29|DELIVER IN PERSON|TRUCK| stealthy a|
-2500|80|10|3|41|40183.28|0.02|0.00|R|F|1992-09-02|1992-11-11|1992-09-06|DELIVER IN PERSON|RAIL|s could have to integrate after the |
-2500|69|8|4|17|16474.02|0.01|0.02|A|F|1992-09-30|1992-10-16|1992-10-05|DELIVER IN PERSON|REG AIR|encies-- ironic, even packages|
-2501|84|5|1|4|3936.32|0.10|0.06|N|O|1997-07-17|1997-07-27|1997-07-22|COLLECT COD|RAIL|quests. furiously final|
-2501|106|1|2|33|33201.30|0.01|0.04|N|O|1997-07-14|1997-08-09|1997-07-26|NONE|MAIL|leep furiously packages. even sauternes |
-2501|72|2|3|20|19441.40|0.10|0.06|N|O|1997-09-23|1997-07-01|1997-10-03|DELIVER IN PERSON|RAIL|equests. furiou|
-2501|58|10|4|26|24909.30|0.09|0.01|N|O|1997-07-15|1997-08-15|1997-07-28|DELIVER IN PERSON|SHIP|c accounts. express, iron|
-2502|163|4|1|33|35084.28|0.10|0.06|R|F|1993-08-12|1993-07-22|1993-09-04|COLLECT COD|REG AIR|have to print|
-2503|123|2|1|33|33762.96|0.06|0.01|R|F|1993-07-06|1993-08-14|1993-08-02|NONE|SHIP|nal courts integrate according to the|
-2503|65|10|2|28|27021.68|0.06|0.01|R|F|1993-08-08|1993-08-31|1993-08-10|NONE|SHIP|s wake quickly slyly |
-2503|46|7|3|50|47302.00|0.09|0.01|A|F|1993-09-22|1993-08-17|1993-09-29|DELIVER IN PERSON|TRUCK|s around the slyly |
-2503|91|5|4|27|26759.43|0.09|0.00|A|F|1993-07-12|1993-07-24|1993-07-22|DELIVER IN PERSON|TRUCK|lly even p|
-2503|48|5|5|3|2844.12|0.04|0.02|A|F|1993-07-10|1993-09-17|1993-07-19|TAKE BACK RETURN|TRUCK|s cajole. slyly close courts nod f|
-2503|128|7|6|39|40096.68|0.05|0.05|R|F|1993-10-11|1993-09-09|1993-10-16|NONE|MAIL|d carefully fluffily|
-2503|19|6|7|17|15623.17|0.09|0.08|R|F|1993-09-04|1993-07-31|1993-09-23|DELIVER IN PERSON|SHIP|c accounts haggle blithel|
-2528|1|2|1|10|9010.00|0.02|0.03|R|F|1994-12-12|1994-12-29|1994-12-28|COLLECT COD|REG AIR|ely. fluffily even re|
-2528|74|3|2|13|12662.91|0.00|0.03|A|F|1994-11-27|1995-01-20|1994-12-03|TAKE BACK RETURN|REG AIR|ggle furiously. slyly final asympt|
-2528|175|6|3|35|37630.95|0.10|0.00|R|F|1994-12-19|1995-02-04|1995-01-15|NONE|MAIL|, even excuses. even,|
-2528|65|4|4|37|35707.22|0.00|0.01|A|F|1994-12-25|1995-02-02|1994-12-31|COLLECT COD|AIR|ng the pending excuses haggle after the bl|
-2529|131|7|1|4|4124.52|0.07|0.07|N|O|1996-10-19|1996-11-18|1996-10-24|DELIVER IN PERSON|SHIP|al dependencies haggle slyly alongsi|
-2530|21|2|1|9|8289.18|0.09|0.03|R|F|1994-05-10|1994-04-30|1994-05-24|TAKE BACK RETURN|REG AIR|lyly ironic|
-2530|93|7|2|42|41709.78|0.04|0.08|R|F|1994-03-27|1994-05-20|1994-03-29|NONE|RAIL|ng platelets wake s|
-2530|108|1|3|8|8064.80|0.10|0.08|A|F|1994-05-02|1994-05-08|1994-05-24|DELIVER IN PERSON|MAIL|ial asymptotes snooze slyly regular |
-2531|148|7|1|9|9433.26|0.03|0.07|N|O|1996-07-27|1996-07-03|1996-08-01|DELIVER IN PERSON|AIR|t the dogged, un|
-2531|157|2|2|3|3171.45|0.07|0.06|N|O|1996-07-20|1996-06-20|1996-08-10|NONE|MAIL|he quickly ev|
-2531|86|7|3|20|19721.60|0.06|0.04|N|O|1996-07-18|1996-06-25|1996-07-29|TAKE BACK RETURN|TRUCK|into beans. furious|
-2531|191|5|4|36|39282.84|0.08|0.01|N|O|1996-06-11|1996-07-26|1996-06-27|NONE|MAIL|y ironic, bold packages. blithely e|
-2531|56|4|5|28|26769.40|0.03|0.07|N|O|1996-07-06|1996-07-31|1996-07-19|TAKE BACK RETURN|REG AIR|its. busily|
-2531|145|4|6|46|48076.44|0.10|0.08|N|O|1996-07-03|1996-06-27|1996-07-12|TAKE BACK RETURN|REG AIR|e final, bold pains. ir|
-2532|53|4|1|3|2859.15|0.06|0.07|N|O|1995-12-14|1995-11-28|1995-12-15|COLLECT COD|FOB|unusual sentiments. even pinto|
-2532|160|2|2|33|34985.28|0.06|0.05|N|O|1995-11-23|1996-01-04|1995-12-16|DELIVER IN PERSON|TRUCK|rve carefully slyly ironic accounts! fluf|
-2532|135|1|3|1|1035.13|0.00|0.06|N|O|1996-01-27|1995-11-23|1996-01-29|DELIVER IN PERSON|REG AIR|ely final ideas cajole despite the ca|
-2532|78|8|4|50|48903.50|0.02|0.02|N|O|1995-11-13|1996-01-01|1995-11-26|NONE|TRUCK|yly after the fluffily regul|
-2532|114|1|5|9|9126.99|0.09|0.04|N|O|1995-11-30|1995-11-23|1995-12-12|DELIVER IN PERSON|TRUCK|cial ideas haggle slyly pending request|
-2532|150|1|6|20|21003.00|0.09|0.05|N|O|1995-12-02|1995-11-26|1995-12-08|TAKE BACK RETURN|AIR|er the slyly pending|
-2533|54|9|1|36|34345.80|0.06|0.04|N|O|1997-06-10|1997-04-28|1997-07-01|NONE|REG AIR|ss requests sleep neve|
-2533|198|10|2|5|5490.95|0.10|0.04|N|O|1997-05-26|1997-06-02|1997-06-24|NONE|FOB|ccounts. ironic, special accounts boo|
-2533|183|4|3|37|40077.66|0.00|0.08|N|O|1997-05-10|1997-04-26|1997-05-28|COLLECT COD|SHIP| haggle carefully |
-2533|30|5|4|17|15810.51|0.06|0.02|N|O|1997-05-23|1997-05-10|1997-06-18|NONE|FOB|ackages. blith|
-2533|126|1|5|38|38992.56|0.09|0.00|N|O|1997-05-10|1997-06-02|1997-05-28|TAKE BACK RETURN|REG AIR|of the regular accounts. even packages caj|
-2533|184|5|6|20|21683.60|0.05|0.08|N|O|1997-07-04|1997-04-30|1997-07-05|COLLECT COD|FOB|thless excuses are b|
-2533|94|7|7|14|13917.26|0.06|0.04|N|O|1997-07-06|1997-05-08|1997-08-03|COLLECT COD|FOB|ut the pending, special depos|
-2534|139|5|1|29|30134.77|0.07|0.07|N|O|1996-08-09|1996-09-29|1996-08-11|COLLECT COD|TRUCK|ugouts haggle slyly. final|
-2534|27|6|2|49|45423.98|0.08|0.08|N|O|1996-09-01|1996-08-20|1996-09-06|NONE|SHIP|sometimes regular requests. blithely unus|
-2534|1|4|3|50|45050.00|0.10|0.06|N|O|1996-09-25|1996-10-07|1996-10-09|TAKE BACK RETURN|AIR|ideas. deposits use. slyly regular pa|
-2534|75|3|4|43|41928.01|0.09|0.02|N|O|1996-10-25|1996-09-30|1996-11-05|TAKE BACK RETURN|REG AIR|ngly final depos|
-2534|165|2|5|14|14912.24|0.05|0.02|N|O|1996-08-12|1996-09-26|1996-08-28|COLLECT COD|MAIL|eposits doze quickly final|
-2534|116|10|6|12|12193.32|0.02|0.02|N|O|1996-07-29|1996-10-12|1996-08-14|TAKE BACK RETURN|AIR|sual depos|
-2534|173|3|7|17|18243.89|0.02|0.07|N|O|1996-07-22|1996-09-15|1996-08-03|NONE|SHIP|riously regular |
-2535|199|2|1|5|5495.95|0.06|0.01|A|F|1993-09-07|1993-07-25|1993-09-29|DELIVER IN PERSON|REG AIR|, unusual reque|
-2535|39|5|2|12|11268.36|0.08|0.05|A|F|1993-07-17|1993-08-17|1993-07-31|TAKE BACK RETURN|FOB|uses sleep among the packages. excuses |
-2535|54|5|3|5|4770.25|0.09|0.06|R|F|1993-07-28|1993-08-14|1993-08-11|DELIVER IN PERSON|SHIP| across the express requests. silent, eve|
-2535|160|5|4|19|20143.04|0.01|0.02|A|F|1993-06-01|1993-08-01|1993-06-19|DELIVER IN PERSON|FOB|ructions. final requests|
-2535|174|3|5|25|26854.25|0.07|0.04|A|F|1993-07-19|1993-08-07|1993-07-27|NONE|REG AIR|ions believe ab|
-2560|169|10|1|41|43835.56|0.07|0.01|R|F|1992-10-23|1992-11-11|1992-11-22|NONE|SHIP| after the accounts. regular foxes are be|
-2560|4|9|2|27|24408.00|0.00|0.01|R|F|1992-12-03|1992-11-16|1992-12-30|NONE|MAIL| against the carefully|
-2560|46|5|3|31|29327.24|0.01|0.05|A|F|1992-11-14|1992-10-14|1992-12-11|DELIVER IN PERSON|AIR|to beans. blithely regular Tiresias int|
-2560|72|1|4|36|34994.52|0.01|0.02|A|F|1992-10-18|1992-10-30|1992-11-05|TAKE BACK RETURN|MAIL|accounts alongside of the excuses are |
-2560|42|1|5|9|8478.36|0.04|0.02|A|F|1992-10-23|1992-10-29|1992-11-02|COLLECT COD|REG AIR| deposits affix quickly. unusual, eve|
-2560|108|9|6|13|13105.30|0.03|0.06|A|F|1992-09-07|1992-10-21|1992-09-24|COLLECT COD|FOB|slyly final accoun|
-2561|25|4|1|32|29600.64|0.02|0.01|N|O|1998-01-05|1997-12-28|1998-01-26|DELIVER IN PERSON|REG AIR|bold packages wake slyly. slyly|
-2561|98|1|2|5|4990.45|0.07|0.04|N|O|1997-12-27|1998-01-23|1998-01-13|TAKE BACK RETURN|AIR|p ironic, regular pinto beans.|
-2561|173|4|3|47|50438.99|0.04|0.02|N|O|1997-11-19|1998-01-21|1997-12-03|DELIVER IN PERSON|REG AIR|larly pending t|
-2561|108|9|4|39|39315.90|0.08|0.06|N|O|1998-01-20|1997-12-16|1998-02-05|TAKE BACK RETURN|MAIL|equests are furiously against the|
-2561|150|3|5|2|2100.30|0.04|0.08|N|O|1998-03-14|1998-01-21|1998-03-27|DELIVER IN PERSON|TRUCK|s are. silently silent foxes sleep about|
-2561|51|6|6|14|13314.70|0.02|0.03|N|O|1998-03-07|1998-02-04|1998-03-21|COLLECT COD|RAIL|ep unusual, ironic accounts|
-2562|53|5|1|28|26685.40|0.04|0.03|R|F|1992-10-04|1992-09-24|1992-10-09|COLLECT COD|MAIL|ans haggle special, special packages. |
-2562|148|9|2|1|1048.14|0.01|0.06|R|F|1992-10-16|1992-09-18|1992-10-17|NONE|TRUCK| slyly final ideas haggle car|
-2562|66|7|3|25|24151.50|0.05|0.03|A|F|1992-11-23|1992-10-08|1992-12-19|DELIVER IN PERSON|REG AIR| accounts-- silent, unusual ideas a|
-2562|148|1|4|37|38781.18|0.08|0.03|R|F|1992-10-29|1992-10-06|1992-11-09|COLLECT COD|FOB|. slyly regular ideas according to the fl|
-2562|160|8|5|29|30744.64|0.05|0.08|A|F|1992-11-01|1992-09-29|1992-11-13|TAKE BACK RETURN|MAIL|eep against the furiously r|
-2562|50|7|6|17|16150.85|0.01|0.06|A|F|1992-10-15|1992-10-08|1992-10-26|DELIVER IN PERSON|TRUCK|lar pinto beans. blithely ev|
-2563|65|4|1|10|9650.60|0.07|0.04|A|F|1994-01-26|1993-12-19|1994-01-28|DELIVER IN PERSON|AIR|tealthily abo|
-2563|167|4|2|28|29880.48|0.04|0.03|R|F|1994-03-17|1994-02-04|1994-04-13|TAKE BACK RETURN|RAIL|hely regular depe|
-2563|119|9|3|39|39745.29|0.07|0.00|R|F|1994-02-10|1993-12-31|1994-02-19|COLLECT COD|FOB|lent requests should integrate; carefully e|
-2563|90|1|4|50|49504.50|0.01|0.01|A|F|1994-01-26|1994-01-03|1994-02-09|DELIVER IN PERSON|SHIP|ly regular, regular excuses. bold plate|
-2563|15|6|5|42|38430.42|0.06|0.08|R|F|1994-02-21|1994-02-14|1994-03-04|DELIVER IN PERSON|AIR|ymptotes nag furiously slyly even inst|
-2563|121|2|6|5|5105.60|0.10|0.00|R|F|1993-12-27|1993-12-19|1994-01-02|DELIVER IN PERSON|REG AIR| the quickly final theodolite|
-2564|112|3|1|4|4048.44|0.02|0.00|R|F|1994-11-12|1994-10-29|1994-12-04|NONE|MAIL|y express requests sleep furi|
-2565|144|5|1|42|43853.88|0.04|0.08|N|O|1998-04-07|1998-04-02|1998-05-04|NONE|AIR|ngly silent |
-2565|189|10|2|26|28318.68|0.05|0.08|N|O|1998-05-07|1998-04-09|1998-05-15|DELIVER IN PERSON|TRUCK| pinto beans about the slyly regula|
-2565|115|5|3|34|34513.74|0.06|0.06|N|O|1998-03-19|1998-04-12|1998-04-17|DELIVER IN PERSON|SHIP|nstructions was carefu|
-2565|17|7|4|25|22925.25|0.10|0.08|N|O|1998-06-27|1998-05-20|1998-07-13|DELIVER IN PERSON|RAIL|, express accounts. final id|
-2565|76|7|5|26|25377.82|0.08|0.03|N|O|1998-03-05|1998-04-11|1998-03-11|TAKE BACK RETURN|AIR|ites wake. ironic acco|
-2565|141|4|6|48|49974.72|0.08|0.07|N|O|1998-06-18|1998-05-06|1998-07-13|DELIVER IN PERSON|TRUCK|r instructions sleep qui|
-2566|148|5|1|19|19914.66|0.06|0.07|R|F|1992-12-21|1992-11-24|1992-12-22|DELIVER IN PERSON|MAIL|ests. silent|
-2566|181|2|2|42|45409.56|0.08|0.02|R|F|1992-12-20|1992-12-22|1992-12-29|COLLECT COD|MAIL|ously ironic accounts|
-2566|23|8|3|18|16614.36|0.09|0.02|A|F|1992-11-16|1992-12-24|1992-12-16|COLLECT COD|FOB| braids according t|
-2566|42|9|4|3|2826.12|0.05|0.02|A|F|1992-11-04|1992-12-30|1992-12-04|TAKE BACK RETURN|FOB|ckages are ironic Tiresias. furious|
-2566|22|3|5|9|8298.18|0.04|0.03|R|F|1992-12-14|1992-12-28|1992-12-16|NONE|FOB|blithely bold accounts? quickl|
-2566|128|3|6|1|1028.12|0.07|0.03|A|F|1992-10-28|1992-11-20|1992-11-22|TAKE BACK RETURN|AIR|theodolites wake pending|
-2567|26|9|1|39|36114.78|0.03|0.04|N|O|1998-05-10|1998-05-10|1998-05-21|NONE|SHIP|ns. furiously final dependencies cajo|
-2567|112|3|2|50|50605.50|0.06|0.05|N|O|1998-05-05|1998-04-18|1998-05-09|DELIVER IN PERSON|TRUCK|. carefully pending foxes are furi|
-2567|52|10|3|6|5712.30|0.03|0.06|N|O|1998-04-21|1998-04-14|1998-05-11|NONE|RAIL|s cajole regular, final acco|
-2567|158|6|4|50|52907.50|0.05|0.03|N|O|1998-03-27|1998-05-25|1998-04-23|DELIVER IN PERSON|FOB|pinto beans? r|
-2567|81|2|5|46|45129.68|0.07|0.02|N|O|1998-06-02|1998-04-30|1998-06-13|COLLECT COD|AIR|efully pending epitaphs. carefully reg|
-2567|100|3|6|32|32003.20|0.01|0.07|N|O|1998-05-24|1998-04-30|1998-06-14|NONE|RAIL| the even, iro|
-2567|135|6|7|43|44510.59|0.06|0.02|N|O|1998-05-11|1998-04-15|1998-05-29|NONE|RAIL|requests. final courts cajole |
-2592|90|1|1|7|6930.63|0.10|0.04|R|F|1993-03-13|1993-04-25|1993-04-01|NONE|REG AIR| carefully special theodolites integrate |
-2592|66|1|2|2|1932.12|0.10|0.00|A|F|1993-03-24|1993-04-05|1993-04-16|DELIVER IN PERSON|RAIL|side of the b|
-2593|105|2|1|37|37188.70|0.08|0.06|R|F|1993-12-14|1993-10-08|1994-01-04|NONE|SHIP|s wake bravel|
-2593|90|1|2|28|27722.52|0.08|0.03|A|F|1993-10-30|1993-10-18|1993-11-06|DELIVER IN PERSON|SHIP|y even escapades shall|
-2593|128|3|3|6|6168.72|0.04|0.05|A|F|1993-11-28|1993-10-04|1993-12-28|TAKE BACK RETURN|REG AIR|ular packages. re|
-2593|161|10|4|44|46691.04|0.02|0.08|A|F|1993-09-05|1993-10-23|1993-09-29|NONE|RAIL|ents impress furiously; unusual theodoli|
-2593|4|5|5|3|2712.00|0.03|0.00|A|F|1993-12-16|1993-11-01|1993-12-29|COLLECT COD|SHIP|the furiously |
-2593|175|6|6|1|1075.17|0.08|0.08|A|F|1993-11-23|1993-10-25|1993-12-04|DELIVER IN PERSON|RAIL| accounts wake slyly |
-2593|192|5|7|11|12014.09|0.00|0.07|R|F|1993-11-01|1993-11-19|1993-11-28|TAKE BACK RETURN|RAIL|express packages sleep bold re|
-2594|72|3|1|7|6804.49|0.06|0.02|R|F|1993-03-26|1993-03-05|1993-04-24|DELIVER IN PERSON|FOB|arls cajole |
-2594|124|9|2|13|13313.56|0.10|0.05|R|F|1993-02-06|1993-03-01|1993-02-23|TAKE BACK RETURN|TRUCK|fully special accounts use courts|
-2594|126|1|3|24|24626.88|0.03|0.00|A|F|1993-01-31|1993-03-10|1993-02-04|COLLECT COD|REG AIR|lar accounts sleep fur|
-2594|144|7|4|46|48030.44|0.00|0.08|R|F|1993-04-17|1993-03-06|1993-04-21|TAKE BACK RETURN|SHIP|beans. instructions across t|
-2595|61|2|1|42|40364.52|0.08|0.02|N|O|1996-03-24|1996-01-28|1996-04-10|DELIVER IN PERSON|MAIL|ggle furiou|
-2595|88|9|2|30|29642.40|0.05|0.01|N|O|1996-03-05|1996-02-23|1996-03-19|NONE|AIR|ctions. regula|
-2595|24|3|3|19|17556.38|0.01|0.05|N|O|1995-12-23|1996-03-02|1996-01-17|COLLECT COD|MAIL|ns are neve|
-2595|159|1|4|29|30715.35|0.07|0.05|N|O|1996-01-01|1996-02-13|1996-01-18|TAKE BACK RETURN|RAIL|ronic accounts haggle carefully fin|
-2595|86|7|5|30|29582.40|0.09|0.07|N|O|1996-03-16|1996-01-31|1996-04-05|TAKE BACK RETURN|FOB|. final orbits cajole |
-2595|82|3|6|31|30444.48|0.06|0.04|N|O|1996-02-07|1996-02-10|1996-03-05|DELIVER IN PERSON|AIR|tipliers w|
-2596|170|5|1|6|6421.02|0.05|0.01|N|O|1996-12-15|1996-11-02|1996-12-29|TAKE BACK RETURN|TRUCK|ily special re|
-2596|139|10|2|43|44682.59|0.07|0.03|N|O|1996-09-03|1996-10-26|1996-09-15|NONE|FOB|ial packages haggl|
-2596|39|5|3|19|17841.57|0.10|0.00|N|O|1996-09-02|1996-11-03|1996-09-06|COLLECT COD|AIR|ias mold! sp|
-2596|105|6|4|10|10051.00|0.06|0.05|N|O|1996-08-25|1996-11-05|1996-09-13|DELIVER IN PERSON|REG AIR| instructions shall have|
-2597|84|5|1|24|23617.92|0.07|0.00|A|F|1993-05-15|1993-03-06|1993-05-25|TAKE BACK RETURN|FOB|pending packages. enticingly fi|
-2598|7|4|1|12|10884.00|0.00|0.01|N|O|1996-06-17|1996-04-12|1996-06-24|COLLECT COD|TRUCK|express packages nag sly|
-2598|148|7|2|40|41925.60|0.07|0.02|N|O|1996-05-11|1996-05-19|1996-06-08|TAKE BACK RETURN|AIR|the enticing|
-2598|104|9|3|4|4016.40|0.03|0.03|N|O|1996-05-23|1996-05-13|1996-05-25|COLLECT COD|AIR| across the furiously fi|
-2598|23|2|4|19|17537.38|0.02|0.00|N|O|1996-04-09|1996-05-30|1996-04-17|TAKE BACK RETURN|RAIL|nic packages. even accounts|
-2598|106|3|5|12|12073.20|0.01|0.08|N|O|1996-04-14|1996-04-24|1996-04-21|TAKE BACK RETURN|REG AIR|eposits cajol|
-2599|101|4|1|11|11012.10|0.08|0.08|N|O|1997-02-01|1996-12-14|1997-02-27|TAKE BACK RETURN|FOB| express accoun|
-2599|42|5|2|26|24493.04|0.03|0.04|N|O|1996-11-08|1996-12-21|1996-11-24|TAKE BACK RETURN|AIR|nag carefully |
-2599|99|10|3|29|28973.61|0.09|0.03|N|O|1997-01-10|1996-12-10|1997-02-02|COLLECT COD|RAIL|ly express dolphins. special, |
-2624|63|10|1|15|14445.90|0.03|0.07|N|O|1997-02-28|1997-02-19|1997-03-21|DELIVER IN PERSON|AIR|le. quickly pending requests|
-2624|189|10|2|12|13070.16|0.07|0.00|N|O|1997-02-24|1997-02-22|1997-02-27|DELIVER IN PERSON|SHIP|er the quickly unu|
-2625|20|1|1|42|38640.84|0.02|0.04|R|F|1992-10-18|1992-11-17|1992-10-23|DELIVER IN PERSON|AIR| even accounts haggle furiously|
-2626|22|5|1|45|41490.90|0.09|0.04|N|O|1995-11-22|1995-11-01|1995-11-23|NONE|AIR|deposits wake blithely according to |
-2626|175|3|2|2|2150.34|0.05|0.07|N|O|1995-10-19|1995-11-09|1995-10-24|TAKE BACK RETURN|FOB|uffy accounts haggle furiously above|
-2626|154|2|3|40|42166.00|0.05|0.07|N|O|1995-09-28|1995-12-03|1995-10-10|NONE|REG AIR|eans. ironic deposits haggle. depo|
-2627|131|7|1|28|28871.64|0.09|0.02|R|F|1992-05-14|1992-05-09|1992-05-31|COLLECT COD|SHIP|ggedly final excuses nag packages. f|
-2628|106|9|1|44|44268.40|0.07|0.03|R|F|1994-01-11|1994-01-14|1994-01-13|DELIVER IN PERSON|SHIP|lyly final, pending ide|
-2628|106|9|2|14|14085.40|0.01|0.03|A|F|1994-01-28|1993-11-30|1994-02-20|TAKE BACK RETURN|SHIP|g the furiously unusual pi|
-2628|64|9|3|42|40490.52|0.00|0.00|A|F|1993-11-20|1994-01-04|1993-12-19|DELIVER IN PERSON|TRUCK|ld notornis alongside |
-2628|95|7|4|23|22887.07|0.08|0.04|A|F|1993-10-27|1994-01-08|1993-11-12|DELIVER IN PERSON|TRUCK|usual packages sleep about the fina|
-2628|90|1|5|50|49504.50|0.07|0.01|A|F|1994-01-13|1993-12-11|1994-01-14|NONE|AIR|posits serve carefully toward |
-2629|118|9|1|6|6108.66|0.06|0.05|N|O|1998-06-10|1998-05-29|1998-06-13|DELIVER IN PERSON|SHIP|dolites hinder bli|
-2629|124|7|2|31|31747.72|0.08|0.03|N|O|1998-05-24|1998-05-26|1998-06-10|COLLECT COD|AIR|ate blithely bold, regular deposits. bold|
-2629|128|9|3|29|29815.48|0.08|0.07|N|O|1998-07-09|1998-06-17|1998-07-12|TAKE BACK RETURN|AIR|eposits serve unusual, express i|
-2629|70|5|4|33|32012.31|0.06|0.03|N|O|1998-05-29|1998-05-14|1998-05-30|NONE|TRUCK|es. slowly express accounts are along the|
-2630|29|8|1|46|42734.92|0.05|0.03|R|F|1992-11-05|1992-12-17|1992-12-05|TAKE BACK RETURN|MAIL|uests cajole. e|
-2630|57|2|2|8|7656.40|0.09|0.07|A|F|1992-11-16|1993-01-01|1992-12-07|DELIVER IN PERSON|TRUCK|indle fluffily silent, ironic pi|
-2630|173|2|3|45|48292.65|0.08|0.07|A|F|1993-01-04|1993-01-11|1993-01-09|NONE|FOB|edly express ideas. carefully final |
-2630|162|9|4|29|30802.64|0.08|0.07|A|F|1992-12-03|1993-01-04|1992-12-12|DELIVER IN PERSON|SHIP|efully unusual dependencies. even i|
-2631|122|7|1|42|42929.04|0.00|0.03|A|F|1994-01-04|1993-12-01|1994-01-16|TAKE BACK RETURN|SHIP|ect carefully at the furiously final the|
-2631|67|4|2|4|3868.24|0.07|0.06|R|F|1993-11-03|1993-12-17|1993-11-05|COLLECT COD|AIR|special theodolites. a|
-2631|118|8|3|15|15271.65|0.06|0.05|A|F|1993-09-30|1993-11-06|1993-10-13|DELIVER IN PERSON|SHIP|y. furiously even pinto be|
-2656|181|2|1|10|10811.80|0.02|0.06|R|F|1993-06-28|1993-07-04|1993-07-12|TAKE BACK RETURN|TRUCK|s nag regularly about the deposits. slyly|
-2656|137|8|2|38|39410.94|0.07|0.02|A|F|1993-06-25|1993-06-04|1993-07-24|NONE|RAIL|structions wake along the furio|
-2656|2|5|3|19|17138.00|0.03|0.02|R|F|1993-08-03|1993-07-25|1993-08-20|TAKE BACK RETURN|MAIL|ts serve deposi|
-2656|110|3|4|40|40404.40|0.05|0.04|R|F|1993-06-09|1993-07-24|1993-06-21|DELIVER IN PERSON|RAIL|refully final pearls. final ideas wake. qu|
-2657|115|9|1|22|22332.42|0.02|0.03|N|O|1995-12-08|1995-12-28|1995-12-21|TAKE BACK RETURN|MAIL|r ideas. furiously special dolphins|
-2657|165|2|2|15|15977.40|0.08|0.05|N|O|1995-12-09|1995-12-16|1995-12-18|NONE|RAIL|ole carefully above the ironic ideas. b|
-2657|79|9|3|25|24476.75|0.02|0.04|N|O|1995-10-21|1995-12-12|1995-11-09|COLLECT COD|FOB|lly pinto beans. final |
-2657|55|7|4|11|10505.55|0.04|0.08|N|O|1995-11-19|1995-12-11|1995-11-24|COLLECT COD|TRUCK|ckly enticing requests. fur|
-2657|78|9|5|42|41078.94|0.06|0.03|N|O|1996-01-23|1995-11-22|1996-01-25|COLLECT COD|RAIL|ckly slyly even accounts. platelets x-ray|
-2657|194|7|6|31|33919.89|0.01|0.03|N|O|1995-11-10|1995-11-27|1995-12-06|COLLECT COD|RAIL|re blithely |
-2658|132|3|1|41|42317.33|0.05|0.04|N|O|1995-11-07|1995-11-04|1995-12-04|NONE|MAIL|eposits. furiously final theodolite|
-2658|29|4|2|22|20438.44|0.08|0.05|N|O|1995-11-12|1995-11-18|1995-11-14|DELIVER IN PERSON|TRUCK|ts cajole. pending packages affix|
-2658|18|5|3|13|11934.13|0.07|0.06|N|O|1995-10-24|1995-12-12|1995-11-14|COLLECT COD|FOB|s kindle blithely regular accounts.|
-2658|92|5|4|22|21825.98|0.04|0.04|N|O|1995-12-02|1995-11-03|1995-12-26|DELIVER IN PERSON|SHIP| dependencies. blithely pending foxes abou|
-2658|7|8|5|45|40815.00|0.03|0.01|N|O|1995-11-02|1995-11-08|1995-11-29|DELIVER IN PERSON|MAIL|e special requests. quickly ex|
-2658|147|4|6|27|28272.78|0.05|0.07|N|O|1995-09-26|1995-12-08|1995-09-30|NONE|AIR|ecial packages use abov|
-2659|42|1|1|28|26377.12|0.08|0.05|A|F|1994-03-17|1994-01-24|1994-03-19|NONE|FOB|idle tithes|
-2659|43|2|2|21|19803.84|0.00|0.00|A|F|1993-12-23|1994-02-10|1994-01-17|DELIVER IN PERSON|RAIL|y beyond the furiously even co|
-2659|135|1|3|24|24843.12|0.04|0.03|R|F|1994-03-28|1994-02-20|1994-04-05|DELIVER IN PERSON|REG AIR| haggle carefully |
-2659|119|6|4|2|2038.22|0.00|0.08|R|F|1994-02-19|1994-03-12|1994-02-21|NONE|MAIL|sts above the fluffily express fo|
-2659|7|4|5|9|8163.00|0.08|0.03|A|F|1994-02-07|1994-03-17|1994-03-04|DELIVER IN PERSON|AIR|ly final packages sleep ac|
-2660|48|7|1|17|16116.68|0.00|0.05|N|O|1995-08-18|1995-09-13|1995-09-17|NONE|SHIP|al pinto beans wake after the furious|
-2661|178|9|1|31|33423.27|0.03|0.02|N|O|1997-04-07|1997-03-10|1997-04-23|TAKE BACK RETURN|AIR|e ironicall|
-2661|103|8|2|22|22068.20|0.08|0.02|N|O|1997-03-14|1997-03-17|1997-04-08|COLLECT COD|REG AIR| foxes affix quickly ironic request|
-2661|67|6|3|11|10637.66|0.00|0.08|N|O|1997-04-14|1997-02-11|1997-05-05|TAKE BACK RETURN|FOB|equests are a|
-2661|137|8|4|41|42522.33|0.06|0.02|N|O|1997-03-06|1997-03-27|1997-03-15|DELIVER IN PERSON|AIR|iously ironically ironic requests. |
-2662|102|5|1|43|43090.30|0.09|0.07|N|O|1996-11-24|1996-11-04|1996-12-08|NONE|RAIL|. slyly specia|
-2662|128|9|2|8|8224.96|0.02|0.07|N|O|1996-09-10|1996-10-09|1996-09-21|TAKE BACK RETURN|REG AIR|ajole carefully. sp|
-2662|2|5|3|6|5412.00|0.02|0.00|N|O|1996-11-30|1996-09-20|1996-12-03|DELIVER IN PERSON|REG AIR|olites cajole quickly along the b|
-2662|30|1|4|34|31621.02|0.06|0.07|N|O|1996-10-04|1996-11-05|1996-10-19|NONE|SHIP|ding theodolites use carefully. p|
-2663|114|4|1|35|35493.85|0.02|0.01|N|O|1995-12-11|1995-10-16|1996-01-07|TAKE BACK RETURN|REG AIR|tect. slyly fina|
-2688|18|5|1|45|41310.45|0.08|0.08|R|F|1992-05-21|1992-04-14|1992-05-28|NONE|FOB|sits run carefully|
-2688|15|6|2|46|42090.46|0.01|0.01|R|F|1992-05-24|1992-04-01|1992-05-26|COLLECT COD|TRUCK|elets. regular reque|
-2688|89|10|3|30|29672.40|0.05|0.04|A|F|1992-04-18|1992-03-18|1992-05-18|TAKE BACK RETURN|RAIL|ithely final |
-2688|25|10|4|3|2775.06|0.00|0.03|R|F|1992-02-04|1992-03-18|1992-02-24|DELIVER IN PERSON|RAIL|e fluffily |
-2688|59|10|5|22|21099.10|0.02|0.05|R|F|1992-02-09|1992-04-09|1992-02-11|DELIVER IN PERSON|RAIL|press, ironic excuses wake carefully id|
-2688|149|10|6|42|44063.88|0.01|0.01|R|F|1992-04-29|1992-04-04|1992-05-17|TAKE BACK RETURN|FOB|lly even account|
-2689|6|1|1|45|40770.00|0.02|0.04|R|F|1992-04-29|1992-06-22|1992-04-30|COLLECT COD|SHIP|e quickly. carefully silent|
-2690|140|1|1|44|45766.16|0.05|0.06|N|O|1996-05-30|1996-05-19|1996-06-26|NONE|REG AIR|ly alongside of th|
-2690|51|2|2|50|47552.50|0.03|0.03|N|O|1996-06-13|1996-05-22|1996-06-14|DELIVER IN PERSON|MAIL| doubt careful|
-2690|125|6|3|45|46130.40|0.02|0.07|N|O|1996-05-23|1996-06-02|1996-05-29|DELIVER IN PERSON|MAIL|ounts. slyly regular dependencies wa|
-2690|195|6|4|12|13142.28|0.04|0.07|N|O|1996-07-18|1996-06-03|1996-07-25|NONE|AIR|nal, regular atta|
-2690|86|7|5|30|29582.40|0.01|0.08|N|O|1996-05-20|1996-06-01|1996-06-04|TAKE BACK RETURN|SHIP|d accounts above the express req|
-2690|189|10|6|3|3267.54|0.07|0.01|N|O|1996-07-04|1996-05-28|1996-07-06|TAKE BACK RETURN|RAIL|. final reques|
-2690|79|7|7|35|34267.45|0.05|0.06|N|O|1996-07-25|1996-05-14|1996-08-03|COLLECT COD|FOB|y silent pinto be|
-2691|91|3|1|11|10901.99|0.04|0.07|R|F|1992-06-21|1992-06-08|1992-07-09|COLLECT COD|FOB|leep alongside of the accounts. slyly ironi|
-2691|48|7|2|2|1896.08|0.00|0.07|R|F|1992-05-10|1992-06-04|1992-05-11|TAKE BACK RETURN|TRUCK|s cajole at the blithely ironic warthog|
-2691|162|3|3|16|16994.56|0.09|0.03|R|F|1992-06-11|1992-07-29|1992-06-29|NONE|RAIL|bove the even foxes. unusual theodoli|
-2691|166|3|4|1|1066.16|0.08|0.00|A|F|1992-08-11|1992-06-07|1992-08-16|NONE|SHIP|egular instructions b|
-2692|17|1|1|3|2751.03|0.10|0.04|N|O|1998-02-25|1998-01-29|1998-03-27|TAKE BACK RETURN|MAIL|equests. bold, even foxes haggle slyl|
-2692|114|1|2|21|21296.31|0.03|0.05|N|O|1998-03-11|1998-02-11|1998-03-19|NONE|SHIP|posits. final, express requests nag furi|
-2693|9|10|1|26|23634.00|0.04|0.00|N|O|1996-09-14|1996-10-07|1996-10-03|COLLECT COD|MAIL|cajole alo|
-2693|102|3|2|43|43090.30|0.03|0.04|N|O|1996-10-24|1996-10-24|1996-11-03|TAKE BACK RETURN|TRUCK|as are according to th|
-2694|153|1|1|30|31594.50|0.02|0.06|N|O|1996-06-20|1996-06-01|1996-07-15|NONE|TRUCK|oxes. never iro|
-2694|157|2|2|35|37000.25|0.07|0.03|N|O|1996-05-24|1996-06-01|1996-05-25|NONE|RAIL|atelets past the furiously final deposits |
-2694|19|3|3|15|13785.15|0.08|0.02|N|O|1996-06-30|1996-05-01|1996-07-25|TAKE BACK RETURN|REG AIR|e blithely even platelets. special wa|
-2694|20|10|4|12|11040.24|0.00|0.05|N|O|1996-04-24|1996-04-22|1996-05-14|DELIVER IN PERSON|RAIL|foxes atop the hockey pla|
-2694|108|9|5|10|10081.00|0.08|0.08|N|O|1996-06-23|1996-05-28|1996-06-27|COLLECT COD|REG AIR|fluffily fluffy accounts. even packages hi|
-2695|184|5|1|21|22767.78|0.07|0.00|N|O|1996-10-04|1996-11-02|1996-10-21|NONE|MAIL|y regular pinto beans. evenly regular packa|
-2695|19|9|2|44|40436.44|0.09|0.07|N|O|1996-10-05|1996-10-10|1996-11-01|NONE|MAIL|ts. busy platelets boost|
-2695|144|7|3|21|21926.94|0.02|0.07|N|O|1996-09-13|1996-09-25|1996-10-13|NONE|TRUCK|s. furiously ironic platelets ar|
-2695|58|6|4|16|15328.80|0.08|0.08|N|O|1996-11-16|1996-10-05|1996-11-22|NONE|TRUCK|its. theodolites sleep slyly|
-2695|86|7|5|40|39443.20|0.02|0.03|N|O|1996-11-02|1996-10-26|1996-11-14|NONE|FOB|ructions. pending|
-2720|45|6|1|5|4725.20|0.10|0.06|A|F|1993-06-24|1993-08-08|1993-07-08|NONE|FOB|ously ironic foxes thrash|
-2720|17|8|2|42|38514.42|0.09|0.03|R|F|1993-07-25|1993-07-23|1993-08-23|COLLECT COD|REG AIR|fter the inst|
-2720|120|1|3|50|51006.00|0.10|0.02|A|F|1993-08-10|1993-07-29|1993-09-06|NONE|SHIP|l requests. deposits nag furiously|
-2720|109|2|4|49|49445.90|0.06|0.02|A|F|1993-07-09|1993-07-14|1993-07-13|NONE|REG AIR| accounts. fluffily bold pack|
-2720|121|6|5|27|27570.24|0.04|0.00|R|F|1993-06-29|1993-08-06|1993-07-28|NONE|TRUCK|eas. carefully regular |
-2721|183|4|1|49|53075.82|0.00|0.08|N|O|1996-02-14|1996-04-26|1996-03-02|DELIVER IN PERSON|AIR|ounts poach carefu|
-2721|3|4|2|2|1806.00|0.02|0.05|N|O|1996-02-13|1996-03-14|1996-02-28|TAKE BACK RETURN|TRUCK| slyly final requests against |
-2722|124|7|1|21|21506.52|0.09|0.01|A|F|1994-07-29|1994-06-26|1994-08-09|NONE|RAIL|e carefully around the furiously ironic pac|
-2722|146|7|2|15|15692.10|0.05|0.03|R|F|1994-07-02|1994-06-01|1994-07-13|COLLECT COD|AIR|refully final asympt|
-2722|34|10|3|16|14944.48|0.04|0.06|R|F|1994-05-25|1994-06-09|1994-05-26|NONE|MAIL|ts besides the fluffy,|
-2723|13|7|1|47|42911.47|0.09|0.07|N|O|1995-12-05|1995-11-19|1995-12-11|TAKE BACK RETURN|AIR|furiously r|
-2723|32|3|2|10|9320.30|0.06|0.08|N|O|1995-11-27|1995-11-29|1995-12-12|DELIVER IN PERSON|MAIL|al, special r|
-2723|162|1|3|2|2124.32|0.10|0.01|N|O|1995-11-09|1995-11-10|1995-11-14|TAKE BACK RETURN|FOB| courts boost quickly about th|
-2723|82|3|4|12|11784.96|0.01|0.05|N|O|1995-12-24|1995-11-15|1996-01-17|DELIVER IN PERSON|RAIL|bold foxes are bold packages. regular, fin|
-2723|129|10|5|40|41164.80|0.09|0.05|N|O|1995-11-17|1995-11-22|1995-11-18|TAKE BACK RETURN|MAIL|unwind fluffily carefully regular realms.|
-2724|92|4|1|47|46628.23|0.09|0.01|A|F|1994-11-23|1994-11-13|1994-12-03|COLLECT COD|TRUCK|unusual patterns nag. special p|
-2724|147|8|2|21|21989.94|0.09|0.02|A|F|1994-11-25|1994-10-15|1994-12-07|COLLECT COD|RAIL|as. carefully regular dependencies wak|
-2724|50|3|3|22|20901.10|0.04|0.06|A|F|1994-09-19|1994-11-18|1994-10-17|TAKE BACK RETURN|TRUCK|express fo|
-2724|35|6|4|1|935.03|0.07|0.03|A|F|1994-12-26|1994-11-27|1995-01-07|NONE|MAIL|lyly carefully blithe theodolites-- pl|
-2724|149|2|5|29|30425.06|0.05|0.06|A|F|1995-01-10|1994-11-17|1995-02-04|COLLECT COD|MAIL|l requests hagg|
-2725|118|2|1|23|23416.53|0.10|0.08|R|F|1994-08-25|1994-06-22|1994-08-28|TAKE BACK RETURN|REG AIR|y regular deposits. brave foxes |
-2725|5|8|2|41|37105.00|0.01|0.00|R|F|1994-07-05|1994-06-29|1994-08-02|DELIVER IN PERSON|TRUCK|ns sleep furiously c|
-2725|189|10|3|15|16337.70|0.07|0.03|R|F|1994-08-06|1994-08-09|1994-08-15|TAKE BACK RETURN|AIR|? furiously regular a|
-2726|1|6|1|50|45050.00|0.00|0.06|R|F|1993-03-04|1993-01-29|1993-03-28|COLLECT COD|TRUCK| furiously bold theodolites|
-2727|151|6|1|3|3153.45|0.03|0.01|N|O|1998-06-18|1998-06-06|1998-06-23|NONE|RAIL| the carefully regular foxes u|
-2752|31|2|1|41|38172.23|0.02|0.05|A|F|1994-03-02|1994-01-31|1994-03-06|DELIVER IN PERSON|AIR|tructions hag|
-2752|7|2|2|29|26303.00|0.02|0.04|R|F|1994-01-22|1994-01-08|1994-01-28|COLLECT COD|TRUCK|gly blithely re|
-2752|56|7|3|4|3824.20|0.08|0.00|A|F|1993-12-14|1994-02-13|1994-01-05|DELIVER IN PERSON|TRUCK|telets haggle. regular, final |
-2752|24|7|4|40|36960.80|0.09|0.06|A|F|1994-01-24|1994-01-18|1994-02-22|DELIVER IN PERSON|MAIL|into beans are after the sly|
-2752|126|5|5|22|22574.64|0.03|0.04|A|F|1994-03-20|1994-02-08|1994-04-01|TAKE BACK RETURN|TRUCK|equests nag. regular dependencies are furio|
-2752|170|5|6|21|22473.57|0.09|0.05|R|F|1994-01-01|1994-01-24|1994-01-24|COLLECT COD|SHIP| along the quickly |
-2752|199|10|7|38|41769.22|0.08|0.00|R|F|1994-02-23|1993-12-23|1994-03-24|DELIVER IN PERSON|SHIP|es boost. slyly silent ideas|
-2753|13|3|1|6|5478.06|0.10|0.04|A|F|1993-12-30|1994-01-28|1994-01-29|COLLECT COD|TRUCK|s accounts|
-2753|48|7|2|40|37921.60|0.03|0.05|A|F|1994-01-06|1994-02-13|1994-02-03|DELIVER IN PERSON|SHIP|latelets kindle slyly final depos|
-2753|89|10|3|30|29672.40|0.00|0.07|A|F|1994-01-26|1994-01-29|1994-02-02|NONE|RAIL|ans wake fluffily blithely iro|
-2753|31|7|4|7|6517.21|0.07|0.03|R|F|1994-02-11|1994-01-22|1994-03-10|DELIVER IN PERSON|AIR|xpress ideas detect b|
-2753|137|8|5|36|37336.68|0.04|0.08|R|F|1994-03-15|1994-01-03|1994-04-03|DELIVER IN PERSON|SHIP|gle slyly final c|
-2753|50|1|6|17|16150.85|0.01|0.08|A|F|1994-03-08|1994-01-17|1994-03-11|TAKE BACK RETURN|REG AIR| carefully bold deposits sublate s|
-2753|148|9|7|20|20962.80|0.01|0.06|R|F|1994-02-24|1994-02-04|1994-03-23|DELIVER IN PERSON|FOB| express pack|
-2754|149|6|1|4|4196.56|0.05|0.08|A|F|1994-07-13|1994-05-15|1994-08-02|NONE|REG AIR|blithely silent requests. regular depo|
-2754|177|5|2|19|20466.23|0.01|0.07|A|F|1994-06-27|1994-05-06|1994-06-28|NONE|FOB|latelets hag|
-2755|92|4|1|19|18849.71|0.10|0.00|R|F|1992-02-11|1992-03-15|1992-02-14|TAKE BACK RETURN|MAIL|furiously special deposits|
-2755|24|3|2|11|10164.22|0.03|0.08|A|F|1992-04-12|1992-05-07|1992-04-21|COLLECT COD|RAIL|egular excuses sleep carefully.|
-2755|64|3|3|21|20245.26|0.08|0.04|R|F|1992-02-13|1992-04-20|1992-03-02|NONE|AIR|furious re|
-2755|131|7|4|5|5155.65|0.01|0.00|A|F|1992-02-27|1992-04-07|1992-03-09|TAKE BACK RETURN|AIR|e the furi|
-2755|116|7|5|48|48773.28|0.05|0.06|R|F|1992-03-22|1992-03-10|1992-04-14|DELIVER IN PERSON|MAIL|yly even epitaphs for the |
-2756|118|9|1|35|35633.85|0.03|0.02|R|F|1994-06-08|1994-06-01|1994-06-21|TAKE BACK RETURN|AIR| deposits grow bold sheaves; iro|
-2756|80|9|2|47|46063.76|0.06|0.01|R|F|1994-05-10|1994-05-25|1994-05-13|NONE|AIR|e final, f|
-2756|105|8|3|31|31158.10|0.01|0.07|A|F|1994-07-27|1994-07-06|1994-08-22|TAKE BACK RETURN|TRUCK|en instructions use quickly.|
-2756|72|2|4|30|29162.10|0.00|0.04|A|F|1994-06-05|1994-06-30|1994-06-14|DELIVER IN PERSON|TRUCK|ular packages. regular deposi|
-2757|148|5|1|26|27251.64|0.07|0.00|N|O|1995-08-19|1995-10-02|1995-09-06|DELIVER IN PERSON|MAIL|around the blithely|
-2757|22|7|2|12|11064.24|0.07|0.08|N|O|1995-08-01|1995-09-04|1995-08-08|TAKE BACK RETURN|SHIP| regular, eve|
-2757|73|3|3|17|16542.19|0.10|0.04|N|O|1995-09-06|1995-09-27|1995-09-22|DELIVER IN PERSON|AIR|er the furiously silent |
-2757|140|1|4|25|26003.50|0.08|0.01|N|O|1995-11-09|1995-09-12|1995-11-23|NONE|AIR|uickly regular |
-2757|70|7|5|14|13580.98|0.04|0.05|N|O|1995-09-01|1995-08-24|1995-09-03|TAKE BACK RETURN|SHIP|special deposits u|
-2758|121|10|1|20|20422.40|0.02|0.04|N|O|1998-07-27|1998-09-10|1998-08-21|TAKE BACK RETURN|AIR|ptotes sleep furiously|
-2758|23|8|2|17|15691.34|0.10|0.06|N|O|1998-09-25|1998-10-03|1998-10-25|NONE|MAIL| accounts! qui|
-2758|26|5|3|1|926.02|0.06|0.02|N|O|1998-10-09|1998-09-15|1998-10-16|NONE|TRUCK|ake furious|
-2759|59|1|1|10|9590.50|0.10|0.03|R|F|1993-12-14|1994-01-08|1994-01-01|COLLECT COD|FOB|s. busily ironic theodo|
-2759|113|10|2|37|37485.07|0.00|0.06|R|F|1994-03-05|1994-02-22|1994-03-18|DELIVER IN PERSON|REG AIR|lar Tiresias affix ironically carefully sp|
-2759|112|9|3|11|11133.21|0.03|0.08|A|F|1994-01-24|1994-01-16|1994-02-21|DELIVER IN PERSON|TRUCK|hely regular |
-2759|23|2|4|31|28613.62|0.02|0.05|A|F|1994-01-11|1994-01-15|1994-01-23|NONE|SHIP|ithely aft|
-2784|33|4|1|45|41986.35|0.03|0.01|N|O|1998-02-15|1998-04-07|1998-02-26|COLLECT COD|AIR|yly along the asymptotes. reque|
-2784|54|5|2|23|21943.15|0.03|0.05|N|O|1998-03-28|1998-02-07|1998-04-17|DELIVER IN PERSON|AIR|uests lose after |
-2784|175|4|3|40|43006.80|0.07|0.01|N|O|1998-04-28|1998-03-19|1998-05-03|DELIVER IN PERSON|TRUCK|deas nag furiously never unusual |
-2784|29|10|4|3|2787.06|0.04|0.03|N|O|1998-01-19|1998-04-05|1998-02-05|TAKE BACK RETURN|AIR|n packages. foxes haggle quickly sile|
-2785|100|3|1|34|34003.40|0.08|0.06|N|O|1995-08-07|1995-09-09|1995-09-05|NONE|RAIL|ly final packages haggl|
-2785|110|7|2|37|37374.07|0.08|0.04|N|O|1995-07-25|1995-09-12|1995-08-06|DELIVER IN PERSON|TRUCK|tructions. furiously |
-2785|65|10|3|33|31846.98|0.08|0.06|N|O|1995-10-16|1995-08-24|1995-11-02|DELIVER IN PERSON|MAIL|fter the furiously final p|
-2785|48|1|4|34|32233.36|0.00|0.02|N|O|1995-09-16|1995-09-09|1995-10-11|COLLECT COD|SHIP|kages wake carefully silent |
-2786|136|2|1|15|15541.95|0.03|0.04|A|F|1992-05-19|1992-05-08|1992-05-28|COLLECT COD|TRUCK|low deposits are ironic|
-2786|51|3|2|42|39944.10|0.10|0.04|R|F|1992-05-15|1992-04-22|1992-05-30|DELIVER IN PERSON|AIR|unts are against the furious|
-2786|156|1|3|41|43302.15|0.04|0.05|R|F|1992-07-01|1992-06-04|1992-07-13|COLLECT COD|RAIL|ix requests. bold requests a|
-2786|23|4|4|24|22152.48|0.05|0.02|A|F|1992-04-04|1992-06-09|1992-05-02|DELIVER IN PERSON|MAIL|ans. slyly unusual platelets detect. unus|
-2786|50|3|5|43|40852.15|0.06|0.03|R|F|1992-04-22|1992-05-13|1992-04-29|NONE|RAIL|ons. theodolites after|
-2786|162|1|6|21|22305.36|0.08|0.00|A|F|1992-05-03|1992-05-01|1992-05-14|COLLECT COD|AIR|slow instructi|
-2787|33|9|1|4|3732.12|0.04|0.04|N|O|1996-01-26|1995-11-26|1996-02-20|TAKE BACK RETURN|SHIP|ts. instructions nag furiously according |
-2788|177|8|1|16|17234.72|0.06|0.06|A|F|1994-10-04|1994-11-25|1994-10-18|DELIVER IN PERSON|AIR| requests wake carefully. carefully si|
-2789|163|8|1|16|17010.56|0.03|0.02|N|O|1998-04-18|1998-05-25|1998-05-12|DELIVER IN PERSON|REG AIR|o beans use carefully|
-2789|23|4|2|41|37843.82|0.02|0.05|N|O|1998-03-20|1998-05-15|1998-03-21|COLLECT COD|MAIL|d packages-- fluffily specia|
-2789|176|5|3|33|35513.61|0.06|0.02|N|O|1998-04-21|1998-05-02|1998-04-30|COLLECT COD|TRUCK|deposits. ironic |
-2789|16|3|4|47|43052.47|0.02|0.04|N|O|1998-03-29|1998-05-05|1998-04-07|NONE|RAIL|usly busy packages wake against the unusual|
-2789|197|1|5|23|25235.37|0.02|0.07|N|O|1998-03-25|1998-05-10|1998-04-24|COLLECT COD|RAIL|cording to the careful de|
-2789|144|5|6|16|16706.24|0.07|0.03|N|O|1998-05-11|1998-05-08|1998-05-24|TAKE BACK RETURN|RAIL|d the carefully iron|
-2789|133|4|7|42|43391.46|0.01|0.00|N|O|1998-04-28|1998-05-17|1998-05-24|TAKE BACK RETURN|AIR|ending packages shoul|
-2790|185|6|1|27|29299.86|0.06|0.08|R|F|1994-09-04|1994-09-27|1994-09-16|TAKE BACK RETURN|MAIL|ilent packages cajole. quickly ironic requ|
-2790|117|1|2|50|50855.50|0.00|0.06|A|F|1994-12-08|1994-11-17|1994-12-19|NONE|RAIL|fter the regular ideas. f|
-2790|184|5|3|19|20599.42|0.06|0.00|R|F|1994-10-23|1994-10-03|1994-10-26|TAKE BACK RETURN|RAIL|uffily even excuses. furiously thin|
-2790|197|8|4|24|26332.56|0.07|0.01|A|F|1994-12-04|1994-10-10|1994-12-25|NONE|MAIL|ments. slyly f|
-2790|148|9|5|11|11529.54|0.08|0.03|A|F|1994-09-28|1994-11-14|1994-10-04|TAKE BACK RETURN|AIR|lar requests poach slyly foxes|
-2790|73|3|6|13|12649.91|0.08|0.00|R|F|1994-09-20|1994-10-10|1994-10-20|COLLECT COD|SHIP|n deposits according to the regul|
-2790|4|1|7|32|28928.00|0.08|0.02|A|F|1994-09-25|1994-10-26|1994-10-01|NONE|SHIP|ully pending|
-2791|59|10|1|49|46993.45|0.10|0.04|A|F|1995-01-11|1994-11-10|1995-02-08|COLLECT COD|MAIL| accounts sleep at the bold, regular pinto |
-2791|63|4|2|4|3852.24|0.10|0.08|A|F|1995-01-02|1994-12-28|1995-01-29|NONE|SHIP|slyly bold packages boost. slyly|
-2791|133|9|3|44|45457.72|0.08|0.06|R|F|1994-11-17|1994-11-12|1994-12-14|NONE|FOB|heodolites use furio|
-2791|156|8|4|24|25347.60|0.04|0.02|R|F|1995-01-30|1994-11-20|1995-02-08|DELIVER IN PERSON|TRUCK|ilent forges. quickly special pinto beans |
-2791|105|2|5|8|8040.80|0.02|0.04|R|F|1995-01-30|1994-11-24|1995-02-13|NONE|FOB|se. close ideas alongs|
-2791|75|3|6|9|8775.63|0.08|0.02|R|F|1994-11-19|1994-12-14|1994-12-10|TAKE BACK RETURN|AIR|pendencies. blithely bold patterns acr|
-2791|29|2|7|26|24154.52|0.06|0.03|R|F|1995-02-06|1994-12-07|1995-02-23|DELIVER IN PERSON|AIR|uriously special instructio|
-2816|59|10|1|33|31648.65|0.00|0.07|R|F|1994-10-19|1994-11-10|1994-11-09|NONE|REG AIR|s; slyly even theodo|
-2816|142|3|2|4|4168.56|0.05|0.04|R|F|1994-12-11|1994-12-07|1995-01-03|NONE|FOB|. blithely pending id|
-2816|121|6|3|4|4084.48|0.02|0.06|R|F|1994-12-12|1994-12-05|1994-12-30|NONE|RAIL| requests print above the final deposits|
-2817|60|8|1|25|24001.50|0.07|0.01|R|F|1994-04-21|1994-06-20|1994-05-07|DELIVER IN PERSON|FOB|doze blithely.|
-2817|32|8|2|5|4660.15|0.03|0.04|A|F|1994-05-07|1994-05-31|1994-05-12|TAKE BACK RETURN|AIR|furiously unusual theodolites use furiou|
-2817|172|10|3|35|37525.95|0.01|0.07|A|F|1994-05-20|1994-06-03|1994-05-22|COLLECT COD|FOB|gular foxes|
-2817|161|2|4|4|4244.64|0.00|0.05|R|F|1994-06-04|1994-06-11|1994-06-10|NONE|TRUCK|n accounts wake across the fluf|
-2818|121|4|1|12|12253.44|0.10|0.03|A|F|1995-02-01|1995-03-10|1995-02-16|NONE|AIR|lms. quickly bold asymp|
-2818|199|2|2|22|24182.18|0.06|0.07|R|F|1995-02-28|1995-03-10|1995-03-06|TAKE BACK RETURN|RAIL|egrate toward the carefully iron|
-2818|45|6|3|11|10395.44|0.01|0.06|R|F|1995-02-18|1995-02-11|1995-03-19|TAKE BACK RETURN|TRUCK|ggle across the carefully blithe|
-2818|40|6|4|32|30081.28|0.08|0.08|R|F|1995-02-04|1995-03-05|1995-02-18|COLLECT COD|REG AIR|arefully! ac|
-2818|18|8|5|42|38556.42|0.08|0.04|A|F|1995-02-12|1995-02-19|1995-03-13|COLLECT COD|MAIL|ar accounts wake carefully a|
-2818|91|5|6|7|6937.63|0.06|0.03|R|F|1995-03-24|1995-03-09|1995-04-06|TAKE BACK RETURN|TRUCK|ly according to the r|
-2819|70|1|1|17|16491.19|0.08|0.08|A|F|1994-07-16|1994-07-15|1994-07-17|TAKE BACK RETURN|RAIL|en deposits above the f|
-2819|67|2|2|12|11604.72|0.03|0.08|R|F|1994-07-18|1994-06-24|1994-07-28|NONE|MAIL| regular, regular a|
-2819|5|2|3|28|25340.00|0.03|0.08|R|F|1994-05-09|1994-07-02|1994-05-15|NONE|RAIL|ckages sublate carefully closely regular |
-2819|153|4|4|5|5265.75|0.00|0.02|R|F|1994-05-29|1994-06-12|1994-06-28|NONE|TRUCK| fluffily unusual foxes sleep caref|
-2819|200|3|5|6|6601.20|0.03|0.01|A|F|1994-07-22|1994-08-02|1994-07-29|NONE|REG AIR|eas after the carefully express pack|
-2820|174|2|1|23|24705.91|0.04|0.08|R|F|1994-07-10|1994-08-08|1994-07-21|NONE|MAIL| was furiously. deposits among the ironic|
-2820|126|9|2|33|33861.96|0.08|0.06|A|F|1994-07-07|1994-08-17|1994-08-02|DELIVER IN PERSON|AIR|carefully even pinto beans. |
-2820|141|10|3|38|39563.32|0.03|0.08|A|F|1994-09-10|1994-08-07|1994-10-07|TAKE BACK RETURN|MAIL|ests despite the carefully unusual a|
-2820|197|9|4|40|43887.60|0.06|0.06|A|F|1994-08-08|1994-07-30|1994-08-21|TAKE BACK RETURN|REG AIR|g multipliers. final c|
-2821|181|2|1|4|4324.72|0.00|0.00|A|F|1993-09-15|1993-10-02|1993-09-17|TAKE BACK RETURN|TRUCK|nding foxes.|
-2821|72|1|2|4|3888.28|0.09|0.00|A|F|1993-11-19|1993-09-20|1993-11-27|TAKE BACK RETURN|TRUCK|ual multipliers. final deposits cajol|
-2821|164|1|3|27|28732.32|0.01|0.01|A|F|1993-11-27|1993-10-11|1993-12-08|COLLECT COD|TRUCK|requests. blit|
-2822|151|9|1|39|40994.85|0.04|0.02|R|F|1993-09-11|1993-08-29|1993-09-18|NONE|MAIL|kly about the sly|
-2823|86|7|1|45|44373.60|0.03|0.04|N|O|1995-12-28|1995-11-27|1996-01-02|DELIVER IN PERSON|SHIP|furiously special idea|
-2823|160|5|2|18|19082.88|0.00|0.03|N|O|1995-11-11|1995-10-30|1995-12-08|TAKE BACK RETURN|TRUCK| final deposits. furiously regular foxes u|
-2823|186|7|3|11|11947.98|0.07|0.02|N|O|1995-12-10|1995-11-24|1995-12-21|DELIVER IN PERSON|SHIP|bold requests nag blithely s|
-2823|139|10|4|48|49878.24|0.09|0.03|N|O|1995-11-21|1995-10-30|1995-11-27|NONE|SHIP|ously busily slow excus|
-2823|99|2|5|18|17983.62|0.04|0.06|N|O|1995-11-09|1995-10-30|1995-11-19|NONE|AIR|eas. decoys cajole deposi|
-2823|123|2|6|20|20462.40|0.07|0.00|N|O|1995-11-13|1995-12-06|1995-12-07|NONE|MAIL|its sleep between the unusual, ironic pac|
-2823|86|7|7|12|11832.96|0.02|0.04|N|O|1995-12-22|1995-11-20|1996-01-13|NONE|REG AIR|the slyly ironic dolphins; fin|
-2848|65|4|1|44|42462.64|0.01|0.05|R|F|1992-04-14|1992-05-09|1992-04-19|DELIVER IN PERSON|MAIL|ions. slyly express instructions n|
-2848|165|6|2|8|8521.28|0.07|0.01|A|F|1992-03-21|1992-05-18|1992-04-07|DELIVER IN PERSON|TRUCK|. silent, final ideas sublate packages. ir|
-2848|138|4|3|8|8305.04|0.07|0.08|A|F|1992-06-20|1992-04-12|1992-07-09|NONE|SHIP|sly regular foxes. |
-2848|125|6|4|34|34854.08|0.02|0.08|A|F|1992-03-15|1992-04-24|1992-04-12|TAKE BACK RETURN|RAIL|ts along the blithely regu|
-2848|195|7|5|18|19713.42|0.07|0.03|R|F|1992-04-10|1992-06-01|1992-05-05|DELIVER IN PERSON|TRUCK|osits haggle. stealthily ironic packa|
-2849|154|2|1|16|16866.40|0.09|0.08|N|O|1996-05-20|1996-07-23|1996-06-18|NONE|TRUCK|. furiously regular requ|
-2849|187|8|2|39|42400.02|0.10|0.03|N|O|1996-05-22|1996-07-18|1996-06-05|TAKE BACK RETURN|SHIP|s sleep furiously silently regul|
-2849|60|1|3|24|23041.44|0.01|0.05|N|O|1996-06-12|1996-07-10|1996-06-27|TAKE BACK RETURN|AIR|e slyly even asymptotes. slo|
-2849|55|7|4|48|45842.40|0.05|0.02|N|O|1996-05-03|1996-06-05|1996-05-28|NONE|AIR|mong the carefully regular theodol|
-2849|28|7|5|30|27840.60|0.10|0.06|N|O|1996-08-24|1996-07-08|1996-09-03|TAKE BACK RETURN|SHIP|ly. carefully silent|
-2849|69|4|6|30|29071.80|0.06|0.07|N|O|1996-06-20|1996-07-23|1996-07-06|NONE|FOB|yly furiously even id|
-2850|97|1|1|43|42874.87|0.02|0.05|N|O|1997-01-11|1996-11-03|1997-02-01|COLLECT COD|REG AIR|unusual accounts|
-2850|110|7|2|30|30303.30|0.09|0.01|N|O|1996-12-14|1996-11-29|1997-01-03|COLLECT COD|AIR|even ideas. busy pinto beans sleep above t|
-2850|105|6|3|49|49249.90|0.09|0.04|N|O|1996-10-07|1996-12-12|1996-10-12|TAKE BACK RETURN|MAIL| slyly unusual req|
-2850|199|3|4|4|4396.76|0.04|0.04|N|O|1996-10-28|1996-12-26|1996-11-07|COLLECT COD|RAIL|al deposits cajole carefully quickly |
-2851|148|5|1|8|8385.12|0.09|0.03|N|O|1997-11-12|1997-11-22|1997-12-11|NONE|REG AIR|y special theodolites. carefully|
-2852|177|6|1|6|6463.02|0.01|0.01|R|F|1993-03-02|1993-04-11|1993-03-11|TAKE BACK RETURN|RAIL| accounts above the furiously un|
-2852|41|10|2|24|22584.96|0.05|0.07|R|F|1993-01-18|1993-03-13|1993-02-14|DELIVER IN PERSON|MAIL| the blithe|
-2852|164|9|3|29|30860.64|0.09|0.05|R|F|1993-04-21|1993-03-22|1993-05-02|COLLECT COD|SHIP|lyly ironi|
-2852|100|3|4|12|12001.20|0.08|0.02|A|F|1993-02-25|1993-03-24|1993-03-07|TAKE BACK RETURN|TRUCK|le. request|
-2852|154|2|5|28|29516.20|0.05|0.03|R|F|1993-02-08|1993-03-30|1993-02-11|NONE|MAIL|e accounts. caref|
-2853|139|5|1|14|14547.82|0.07|0.05|R|F|1994-05-16|1994-07-01|1994-05-27|NONE|TRUCK|oach slyly along t|
-2853|134|10|2|26|26887.38|0.06|0.01|R|F|1994-06-26|1994-06-05|1994-07-02|TAKE BACK RETURN|MAIL|dolphins wake slyly. blith|
-2853|173|3|3|40|42926.80|0.06|0.04|A|F|1994-08-06|1994-06-24|1994-08-29|NONE|RAIL|lyly. pearls cajole. final accounts ca|
-2853|132|8|4|20|20642.60|0.02|0.04|A|F|1994-08-30|1994-06-16|1994-09-06|TAKE BACK RETURN|TRUCK|e slyly silent foxes. express deposits sno|
-2853|36|7|5|1|936.03|0.08|0.05|R|F|1994-09-01|1994-06-27|1994-09-12|TAKE BACK RETURN|FOB|refully slyly quick packages. final c|
-2854|181|2|1|46|49734.28|0.00|0.04|A|F|1994-09-22|1994-08-02|1994-09-30|COLLECT COD|AIR|. furiously regular deposits across th|
-2854|88|9|2|29|28654.32|0.09|0.07|R|F|1994-07-06|1994-08-26|1994-07-09|COLLECT COD|SHIP|y slyly ironic accounts. foxes haggle slyl|
-2854|160|8|3|20|21203.20|0.08|0.01|R|F|1994-09-18|1994-08-03|1994-10-12|COLLECT COD|AIR|rs impress after the deposits. |
-2854|170|1|4|34|36385.78|0.06|0.03|A|F|1994-09-06|1994-08-07|1994-09-22|NONE|REG AIR|age carefully|
-2854|102|3|5|7|7014.70|0.03|0.06|A|F|1994-09-23|1994-08-14|1994-10-10|DELIVER IN PERSON|REG AIR| the pending|
-2854|18|2|6|13|11934.13|0.04|0.03|R|F|1994-09-15|1994-08-18|1994-09-19|DELIVER IN PERSON|SHIP| excuses wak|
-2855|33|4|1|50|46651.50|0.03|0.07|A|F|1993-05-20|1993-06-28|1993-06-16|TAKE BACK RETURN|TRUCK|beans. deposits |
-2880|35|6|1|40|37401.20|0.09|0.00|A|F|1992-05-26|1992-06-01|1992-05-31|COLLECT COD|TRUCK|even requests. quick|
-2880|139|5|2|26|27017.38|0.07|0.07|R|F|1992-04-12|1992-04-15|1992-04-28|NONE|RAIL|ully among the regular warthogs|
-2880|115|9|3|42|42634.62|0.01|0.01|R|F|1992-06-17|1992-05-29|1992-07-11|NONE|REG AIR|ions. carefully final accounts are unusual,|
-2880|18|2|4|46|42228.46|0.02|0.02|A|F|1992-04-21|1992-06-05|1992-05-16|COLLECT COD|RAIL|eep quickly according to t|
-2881|180|10|1|16|17282.88|0.02|0.06|A|F|1992-06-21|1992-06-27|1992-07-03|TAKE BACK RETURN|TRUCK|usly bold |
-2881|10|1|2|1|910.01|0.09|0.03|A|F|1992-05-13|1992-07-21|1992-05-18|COLLECT COD|MAIL|final theodolites. quickly|
-2881|93|6|3|21|20854.89|0.07|0.03|A|F|1992-05-28|1992-07-03|1992-06-02|TAKE BACK RETURN|SHIP|hely express Tiresias. final dependencies |
-2881|140|6|4|7|7280.98|0.06|0.01|R|F|1992-08-03|1992-07-10|1992-08-27|NONE|REG AIR|ironic packages are carefully final ac|
-2882|4|7|1|14|12656.00|0.09|0.02|N|O|1995-09-28|1995-11-11|1995-10-18|TAKE BACK RETURN|MAIL|kly. even requests w|
-2882|42|1|2|30|28261.20|0.00|0.00|N|O|1995-10-15|1995-10-13|1995-10-25|NONE|REG AIR|among the furiously even theodolites. regu|
-2882|197|9|3|29|31818.51|0.10|0.08|N|O|1995-09-10|1995-11-01|1995-10-02|NONE|TRUCK|kages. furiously ironic|
-2882|78|6|4|27|26407.89|0.06|0.02|N|O|1995-09-04|1995-11-11|1995-09-12|DELIVER IN PERSON|MAIL|rding to the regu|
-2882|134|5|5|32|33092.16|0.07|0.03|N|O|1995-10-21|1995-11-10|1995-11-01|COLLECT COD|RAIL|sts. quickly regular e|
-2882|87|8|6|47|46392.76|0.06|0.03|N|O|1995-09-13|1995-09-21|1995-09-14|NONE|REG AIR|l, special|
-2883|1|4|1|33|29733.00|0.08|0.07|R|F|1995-02-26|1995-03-04|1995-03-01|NONE|RAIL|s. final i|
-2883|125|6|2|27|27678.24|0.00|0.02|A|F|1995-03-12|1995-03-10|1995-04-04|TAKE BACK RETURN|REG AIR|s. brave pinto beans nag furiously|
-2883|189|10|3|47|51191.46|0.05|0.04|R|F|1995-01-29|1995-04-19|1995-02-05|DELIVER IN PERSON|SHIP|ep carefully ironic|
-2883|98|2|4|23|22956.07|0.00|0.02|R|F|1995-02-03|1995-03-17|1995-02-19|TAKE BACK RETURN|AIR| even requests cajole. special, regular |
-2883|195|8|5|36|39426.84|0.07|0.06|A|F|1995-05-02|1995-03-14|1995-05-30|COLLECT COD|MAIL|ests detect slyly special packages|
-2884|71|2|1|41|39813.87|0.03|0.00|N|O|1998-01-02|1997-12-17|1998-01-20|DELIVER IN PERSON|TRUCK|ep. slyly even accounts a|
-2884|146|5|2|25|26153.50|0.09|0.08|N|O|1998-01-18|1997-12-06|1998-02-16|TAKE BACK RETURN|MAIL|onic theodolites with the instructi|
-2884|26|7|3|8|7408.16|0.08|0.08|N|O|1997-11-30|1997-11-28|1997-12-14|COLLECT COD|TRUCK|pending accounts about |
-2885|4|9|1|6|5424.00|0.10|0.01|A|F|1993-01-05|1992-12-12|1993-01-19|COLLECT COD|FOB|ctions solve. slyly regular requests n|
-2885|112|3|2|4|4048.44|0.07|0.00|A|F|1992-10-09|1992-12-17|1992-11-04|TAKE BACK RETURN|SHIP| pending packages wake. |
-2885|1|6|3|45|40545.00|0.10|0.04|A|F|1992-12-24|1992-10-30|1993-01-04|NONE|SHIP|ess ideas. regular, silen|
-2885|32|3|4|15|13980.45|0.03|0.04|R|F|1992-10-31|1992-11-24|1992-11-21|DELIVER IN PERSON|MAIL|odolites. boldly pending packages han|
-2885|175|5|5|43|46232.31|0.06|0.00|R|F|1992-11-17|1992-10-30|1992-12-04|DELIVER IN PERSON|SHIP|cial deposits use bold|
-2885|190|1|6|5|5450.95|0.01|0.02|R|F|1993-01-06|1992-11-13|1993-02-05|TAKE BACK RETURN|TRUCK|s. slyly express th|
-2885|50|9|7|40|38002.00|0.05|0.03|A|F|1992-09-23|1992-11-15|1992-10-07|TAKE BACK RETURN|AIR| express depos|
-2886|60|1|1|1|960.06|0.09|0.05|A|F|1995-02-01|1994-12-18|1995-02-28|COLLECT COD|REG AIR|eposits fr|
-2886|184|5|2|38|41198.84|0.02|0.04|A|F|1995-01-21|1995-01-08|1995-01-30|NONE|SHIP|old requests along the fur|
-2886|63|8|3|2|1926.12|0.04|0.07|A|F|1994-11-18|1995-01-31|1994-12-05|COLLECT COD|REG AIR|ar theodolites. e|
-2886|130|3|4|46|47385.98|0.03|0.08|A|F|1995-02-02|1995-01-26|1995-02-15|TAKE BACK RETURN|SHIP|ously final packages sleep blithely regular|
-2887|66|3|1|11|10626.66|0.06|0.00|N|O|1997-07-08|1997-07-17|1997-07-15|COLLECT COD|SHIP|ackages. unusual, speci|
-2887|112|6|2|17|17205.87|0.00|0.08|N|O|1997-08-31|1997-07-04|1997-09-17|DELIVER IN PERSON|SHIP|fily final packages. regula|
-2912|122|1|1|8|8176.96|0.06|0.04|A|F|1992-04-09|1992-04-19|1992-04-26|NONE|RAIL|hs cajole over the slyl|
-2912|115|9|2|18|18271.98|0.00|0.08|R|F|1992-03-13|1992-04-19|1992-03-30|TAKE BACK RETURN|RAIL|unts cajole reg|
-2913|123|6|1|39|39901.68|0.06|0.04|N|O|1997-08-28|1997-09-27|1997-09-02|TAKE BACK RETURN|AIR|. final packages a|
-2913|22|5|2|22|20284.44|0.10|0.07|N|O|1997-09-18|1997-08-11|1997-10-02|COLLECT COD|MAIL|riously pending realms. blithely even pac|
-2913|166|1|3|17|18124.72|0.07|0.04|N|O|1997-10-21|1997-09-25|1997-11-20|NONE|FOB|requests doze quickly. furious|
-2913|143|4|4|5|5215.70|0.10|0.07|N|O|1997-10-07|1997-08-25|1997-10-09|TAKE BACK RETURN|RAIL|haggle. even, bold instructi|
-2913|15|9|5|13|11895.13|0.03|0.01|N|O|1997-10-02|1997-08-20|1997-10-26|COLLECT COD|MAIL|inos are carefully alongside of the bol|
-2913|168|5|6|35|37385.60|0.06|0.08|N|O|1997-08-30|1997-08-21|1997-09-03|COLLECT COD|MAIL|es. quickly even braids against|
-2914|66|7|1|22|21253.32|0.05|0.06|R|F|1993-05-11|1993-04-09|1993-05-22|DELIVER IN PERSON|FOB| carefully about the fluffily ironic gifts|
-2914|163|10|2|25|26579.00|0.03|0.04|A|F|1993-05-14|1993-04-04|1993-05-22|NONE|SHIP|cross the carefully even accounts.|
-2914|35|1|3|4|3740.12|0.00|0.05|R|F|1993-06-11|1993-04-09|1993-06-14|TAKE BACK RETURN|SHIP|s integrate. bold deposits sleep req|
-2914|121|2|4|9|9190.08|0.06|0.01|R|F|1993-06-17|1993-05-26|1993-06-19|NONE|REG AIR|s. carefully final foxes ar|
-2915|175|5|1|28|30104.76|0.10|0.02|R|F|1994-04-17|1994-06-09|1994-05-10|NONE|MAIL|yly special |
-2915|94|7|2|12|11929.08|0.00|0.03|A|F|1994-07-18|1994-06-11|1994-07-27|TAKE BACK RETURN|RAIL|accounts. slyly final|
-2915|136|2|3|15|15541.95|0.07|0.00|A|F|1994-05-01|1994-06-12|1994-05-15|DELIVER IN PERSON|TRUCK|al requests haggle furiousl|
-2915|81|2|4|43|42186.44|0.06|0.05|R|F|1994-06-02|1994-05-24|1994-06-06|DELIVER IN PERSON|SHIP|into beans dazzle alongside of|
-2916|83|4|1|21|20644.68|0.06|0.04|N|O|1996-03-11|1996-02-21|1996-03-30|NONE|REG AIR|uickly express ideas over the slyly even |
-2917|93|4|1|36|35751.24|0.10|0.01|N|O|1998-04-07|1998-02-23|1998-05-01|DELIVER IN PERSON|RAIL|usly ironic d|
-2917|21|2|2|20|18420.40|0.06|0.03|N|O|1997-12-31|1998-01-22|1998-01-12|NONE|MAIL|slyly even ideas wa|
-2917|90|1|3|4|3960.36|0.02|0.07|N|O|1998-01-10|1998-01-18|1998-02-08|TAKE BACK RETURN|REG AIR|s. unusual instruct|
-2917|167|2|4|5|5335.80|0.05|0.01|N|O|1997-12-16|1998-01-26|1998-01-07|NONE|RAIL|bove the furiously silent packages. pend|
-2917|41|10|5|37|34818.48|0.04|0.01|N|O|1997-12-12|1998-02-03|1997-12-23|COLLECT COD|RAIL|dependencies. express |
-2917|194|8|6|7|7659.33|0.05|0.01|N|O|1998-03-21|1998-03-03|1998-03-25|NONE|REG AIR|ly about the regular accounts. carefully pe|
-2918|78|7|1|24|23473.68|0.10|0.03|N|O|1996-12-20|1996-10-28|1996-12-26|DELIVER IN PERSON|FOB| quickly. express requests haggle careful|
-2919|102|5|1|2|2004.20|0.03|0.05|R|F|1993-12-28|1994-02-23|1994-01-18|COLLECT COD|TRUCK|re slyly. regular ideas detect furiousl|
-2919|121|4|2|49|50034.88|0.07|0.02|R|F|1993-12-16|1994-02-28|1993-12-19|COLLECT COD|FOB|hely final inst|
-2919|46|5|3|44|41625.76|0.07|0.07|A|F|1994-04-01|1994-01-12|1994-04-07|TAKE BACK RETURN|TRUCK|final ideas haggle carefully fluff|
-2919|102|5|4|44|44092.40|0.00|0.05|R|F|1994-02-04|1994-02-03|1994-03-02|TAKE BACK RETURN|AIR|es doze around the furiously |
-2944|120|1|1|44|44885.28|0.08|0.05|N|O|1997-12-25|1997-10-28|1998-01-21|COLLECT COD|AIR|ickly special theodolit|
-2944|42|9|2|44|41449.76|0.06|0.02|N|O|1997-10-28|1997-11-22|1997-11-10|NONE|SHIP|ickly. regular requests haggle. idea|
-2944|170|5|3|2|2140.34|0.06|0.07|N|O|1997-12-13|1997-12-01|1998-01-08|DELIVER IN PERSON|REG AIR|luffily expr|
-2944|17|7|4|23|21091.23|0.02|0.03|N|O|1998-01-12|1997-12-03|1998-01-17|TAKE BACK RETURN|MAIL| excuses? regular platelets e|
-2944|75|4|5|18|17551.26|0.10|0.01|N|O|1998-01-07|1997-10-26|1998-01-27|TAKE BACK RETURN|FOB| furiously slyl|
-2944|60|2|6|17|16321.02|0.00|0.03|N|O|1997-10-18|1997-11-27|1997-10-29|TAKE BACK RETURN|SHIP|slyly final dolphins sleep silent the|
-2944|90|1|7|7|6930.63|0.01|0.06|N|O|1997-10-30|1997-11-03|1997-11-03|DELIVER IN PERSON|FOB|fluffily blithely express pea|
-2945|59|10|1|37|35484.85|0.00|0.02|N|O|1996-02-10|1996-03-20|1996-02-12|COLLECT COD|SHIP|l instructions. regular, regular |
-2945|72|2|2|30|29162.10|0.05|0.01|N|O|1996-01-19|1996-02-11|1996-01-26|NONE|TRUCK|ular instructions|
-2945|127|8|3|28|28759.36|0.06|0.02|N|O|1996-03-17|1996-03-13|1996-04-15|COLLECT COD|FOB|le slyly along the eve|
-2945|188|9|4|34|36998.12|0.08|0.06|N|O|1996-02-03|1996-03-17|1996-02-29|COLLECT COD|REG AIR|at the unusual theodolite|
-2945|173|1|5|10|10731.70|0.09|0.05|N|O|1996-03-13|1996-03-10|1996-04-06|COLLECT COD|FOB|thely. final courts could hang qu|
-2945|97|9|6|45|44869.05|0.07|0.00|N|O|1996-03-01|1996-03-25|1996-03-08|TAKE BACK RETURN|MAIL|ainst the final packages|
-2945|52|10|7|47|44746.35|0.07|0.05|N|O|1996-01-05|1996-02-11|1996-01-12|DELIVER IN PERSON|MAIL|quests use|
-2946|10|5|1|25|22750.25|0.05|0.02|N|O|1996-05-06|1996-04-23|1996-05-16|DELIVER IN PERSON|SHIP|ic deposits. furiously|
-2946|94|5|2|48|47716.32|0.03|0.07|N|O|1996-06-02|1996-03-31|1996-06-16|COLLECT COD|TRUCK|oss the platelets. furi|
-2946|3|6|3|35|31605.00|0.03|0.00|N|O|1996-03-15|1996-04-02|1996-03-26|NONE|REG AIR| sublate along the fluffily iron|
-2947|10|1|1|37|33670.37|0.09|0.07|N|O|1995-08-09|1995-07-05|1995-08-20|DELIVER IN PERSON|RAIL|e accounts: expres|
-2947|186|7|2|10|10861.80|0.09|0.07|A|F|1995-06-07|1995-06-26|1995-06-08|NONE|MAIL|lly special |
-2948|118|9|1|48|48869.28|0.00|0.04|R|F|1994-08-29|1994-10-23|1994-09-23|NONE|TRUCK|unusual excuses use about the |
-2948|92|3|2|49|48612.41|0.04|0.07|R|F|1994-12-16|1994-11-08|1995-01-07|DELIVER IN PERSON|MAIL|ress requests. furiously blithe foxes |
-2949|21|6|1|4|3684.08|0.06|0.06|A|F|1994-06-07|1994-06-17|1994-07-04|TAKE BACK RETURN|REG AIR|gular pinto beans wake alongside of the reg|
-2949|70|5|2|50|48503.50|0.05|0.04|A|F|1994-08-04|1994-06-23|1994-08-17|TAKE BACK RETURN|FOB|gular courts cajole across t|
-2949|180|9|3|38|41046.84|0.02|0.06|R|F|1994-05-22|1994-05-25|1994-05-27|COLLECT COD|REG AIR|se slyly requests. carefull|
-2950|130|1|1|32|32964.16|0.01|0.05|N|O|1997-09-21|1997-08-25|1997-10-08|DELIVER IN PERSON|REG AIR|its wake carefully slyly final ideas.|
-2950|66|7|2|18|17389.08|0.10|0.01|N|O|1997-07-19|1997-08-29|1997-08-17|COLLECT COD|TRUCK|uests cajole furio|
-2950|53|4|3|14|13342.70|0.01|0.02|N|O|1997-07-29|1997-08-05|1997-07-31|TAKE BACK RETURN|MAIL|ccounts haggle carefully according |
-2950|187|8|4|45|48923.10|0.08|0.00|N|O|1997-09-05|1997-09-23|1997-09-11|NONE|FOB|ides the b|
-2950|61|2|5|46|44208.76|0.02|0.05|N|O|1997-07-15|1997-09-30|1997-07-25|COLLECT COD|RAIL|to the regular accounts are slyly carefu|
-2950|174|5|6|27|29002.59|0.01|0.03|N|O|1997-10-01|1997-09-13|1997-10-08|NONE|TRUCK|are alongside of the carefully silent |
-2951|3|8|1|5|4515.00|0.03|0.03|N|O|1996-03-27|1996-04-16|1996-03-30|NONE|REG AIR|to beans wake ac|
-2951|136|2|2|24|24867.12|0.07|0.03|N|O|1996-03-24|1996-04-16|1996-04-08|NONE|SHIP| ironic multipliers. express, regular|
-2951|187|8|3|40|43487.20|0.02|0.07|N|O|1996-05-03|1996-04-20|1996-05-22|COLLECT COD|REG AIR|ial deposits wake fluffily about th|
-2951|73|3|4|21|20434.47|0.06|0.08|N|O|1996-04-12|1996-04-27|1996-04-14|DELIVER IN PERSON|REG AIR|nt instructions toward the f|
-2951|51|6|5|15|14265.75|0.07|0.00|N|O|1996-03-25|1996-04-23|1996-03-27|COLLECT COD|REG AIR|inal account|
-2951|138|4|6|18|18686.34|0.06|0.00|N|O|1996-04-04|1996-04-27|1996-04-06|COLLECT COD|FOB|ep about the final, even package|
-2976|9|4|1|32|29088.00|0.06|0.00|A|F|1994-01-26|1994-02-13|1994-02-10|NONE|MAIL|nding, ironic deposits sleep f|
-2976|4|5|2|24|21696.00|0.00|0.03|A|F|1994-03-19|1994-01-26|1994-04-18|COLLECT COD|TRUCK|ronic pinto beans. slyly bol|
-2976|10|5|3|35|31850.35|0.10|0.07|R|F|1993-12-19|1994-02-14|1994-01-11|NONE|RAIL|boost slyly about the regular, regular re|
-2976|82|3|4|22|21605.76|0.00|0.04|A|F|1994-02-08|1994-03-03|1994-02-12|TAKE BACK RETURN|FOB|ncies kindle furiously. carefull|
-2976|134|5|5|13|13443.69|0.00|0.06|A|F|1994-02-06|1994-02-02|1994-02-19|NONE|FOB| furiously final courts boost |
-2976|109|2|6|30|30273.00|0.08|0.03|R|F|1994-03-27|1994-02-01|1994-04-26|TAKE BACK RETURN|RAIL|c ideas! unusual|
-2977|70|5|1|25|24251.75|0.03|0.07|N|O|1996-09-21|1996-10-06|1996-10-13|TAKE BACK RETURN|RAIL|furiously pe|
-2978|90|1|1|29|28712.61|0.00|0.08|A|F|1995-06-03|1995-07-25|1995-06-06|NONE|SHIP|ecial ideas promise slyly|
-2978|127|2|2|42|43139.04|0.01|0.06|N|O|1995-08-19|1995-07-18|1995-09-07|DELIVER IN PERSON|MAIL|ial requests nag blithely alongside of th|
-2978|43|2|3|26|24519.04|0.07|0.05|N|O|1995-07-29|1995-07-22|1995-08-20|COLLECT COD|REG AIR|as haggle against the carefully express dep|
-2978|28|1|4|7|6496.14|0.00|0.00|N|O|1995-07-18|1995-07-03|1995-07-23|NONE|FOB|. final ideas are blithe|
-2978|29|2|5|33|30657.66|0.09|0.03|R|F|1995-05-06|1995-07-23|1995-05-16|COLLECT COD|FOB|s. blithely unusual pack|
-2978|168|7|6|4|4272.64|0.08|0.04|N|O|1995-07-06|1995-07-31|1995-07-19|COLLECT COD|AIR|ffily unusual |
-2979|9|6|1|8|7272.00|0.00|0.08|N|O|1996-06-18|1996-05-21|1996-07-06|COLLECT COD|REG AIR|st blithely; blithely regular gifts dazz|
-2979|11|2|2|47|42817.47|0.05|0.00|N|O|1996-03-25|1996-05-13|1996-04-04|TAKE BACK RETURN|SHIP|iously unusual dependencies wake across|
-2979|188|9|3|35|38086.30|0.04|0.03|N|O|1996-05-25|1996-06-11|1996-06-24|DELIVER IN PERSON|MAIL|old ideas beneath the blit|
-2979|165|4|4|28|29824.48|0.05|0.08|N|O|1996-06-04|1996-04-23|1996-06-24|DELIVER IN PERSON|FOB|ing, regular pinto beans. blithel|
-2980|37|3|1|2|1874.06|0.09|0.03|N|O|1996-11-18|1996-10-22|1996-11-27|TAKE BACK RETURN|SHIP|enly across the special, pending packag|
-2980|10|7|2|48|43680.48|0.04|0.05|N|O|1996-09-25|1996-12-09|1996-10-12|NONE|REG AIR|totes. regular pinto |
-2980|133|9|3|27|27894.51|0.08|0.08|N|O|1996-12-08|1996-12-03|1996-12-14|NONE|REG AIR| theodolites cajole blithely sl|
-2980|25|10|4|49|45325.98|0.03|0.02|N|O|1996-10-04|1996-12-04|1996-10-06|NONE|RAIL|hy packages sleep quic|
-2980|187|8|5|24|26092.32|0.05|0.04|N|O|1997-01-12|1996-10-27|1997-01-14|NONE|MAIL|elets. fluffily regular in|
-2980|109|4|6|43|43391.30|0.01|0.01|N|O|1996-12-07|1996-11-10|1997-01-02|COLLECT COD|AIR|sts. slyly regu|
-2981|14|4|1|17|15538.17|0.03|0.05|N|O|1998-10-17|1998-10-02|1998-10-21|DELIVER IN PERSON|RAIL|, unusual packages x-ray. furious|
-2981|176|4|2|8|8609.36|0.06|0.03|N|O|1998-08-21|1998-09-28|1998-09-05|DELIVER IN PERSON|MAIL|ng to the f|
-2981|37|3|3|14|13118.42|0.03|0.07|N|O|1998-08-30|1998-10-04|1998-09-04|DELIVER IN PERSON|MAIL|kages detect furiously express requests.|
-2982|112|6|1|21|21254.31|0.00|0.01|A|F|1995-04-03|1995-06-08|1995-04-18|DELIVER IN PERSON|AIR|ironic deposits. furiously ex|
-2982|99|2|2|13|12988.17|0.02|0.08|R|F|1995-03-31|1995-05-07|1995-04-18|TAKE BACK RETURN|RAIL|regular deposits unwind alongside |
-2982|70|5|3|21|20371.47|0.01|0.01|R|F|1995-04-19|1995-06-03|1995-04-28|COLLECT COD|SHIP|egular ideas use furiously? bl|
-2983|163|4|1|44|46779.04|0.03|0.06|R|F|1992-02-09|1992-03-07|1992-03-09|TAKE BACK RETURN|AIR|ly regular instruct|
-2983|49|8|2|11|10439.44|0.09|0.06|A|F|1992-04-29|1992-02-27|1992-05-26|NONE|MAIL|aids integrate s|
-3008|132|3|1|8|8257.04|0.10|0.04|N|O|1995-12-06|1996-01-12|1995-12-22|TAKE BACK RETURN|FOB|yly ironic foxes. regular requests h|
-3008|200|3|2|31|34106.20|0.05|0.06|N|O|1995-12-14|1995-12-11|1995-12-31|TAKE BACK RETURN|AIR| bold packages. quic|
-3008|24|5|3|40|36960.80|0.01|0.03|N|O|1995-12-18|1996-01-06|1996-01-11|COLLECT COD|AIR|esias. theodolites detect blithely |
-3008|60|1|4|48|46082.88|0.07|0.06|N|O|1996-01-23|1996-01-07|1996-02-09|COLLECT COD|SHIP|ld theodolites. fluffily bold theodolit|
-3008|105|10|5|31|31158.10|0.03|0.02|N|O|1995-12-01|1996-01-20|1995-12-28|COLLECT COD|RAIL|nts use thinly around the carefully iro|
-3009|45|8|1|48|45361.92|0.10|0.02|N|O|1997-03-19|1997-05-13|1997-04-11|TAKE BACK RETURN|TRUCK| dependencies sleep quickly a|
-3009|185|6|2|38|41236.84|0.00|0.01|N|O|1997-05-01|1997-04-10|1997-05-17|TAKE BACK RETURN|AIR|nal packages should haggle slyly. quickl|
-3009|130|3|3|26|26783.38|0.08|0.02|N|O|1997-05-15|1997-05-10|1997-06-13|TAKE BACK RETURN|SHIP|uriously specia|
-3010|138|4|1|23|23876.99|0.04|0.00|N|O|1996-03-08|1996-02-29|1996-03-27|NONE|TRUCK|ounts. pendin|
-3010|174|4|2|22|23631.74|0.09|0.06|N|O|1996-03-06|1996-04-06|1996-03-18|COLLECT COD|REG AIR| final deposit|
-3010|58|6|3|24|22993.20|0.04|0.07|N|O|1996-05-09|1996-03-14|1996-05-15|DELIVER IN PERSON|RAIL|ar, even reques|
-3010|24|7|4|28|25872.56|0.09|0.06|N|O|1996-03-05|1996-03-28|1996-04-03|DELIVER IN PERSON|FOB|ake carefully carefully even request|
-3010|104|5|5|9|9036.90|0.02|0.02|N|O|1996-04-28|1996-03-17|1996-05-18|NONE|SHIP|inal packages. quickly even pinto|
-3010|92|3|6|38|37699.42|0.05|0.07|N|O|1996-04-15|1996-03-16|1996-04-21|DELIVER IN PERSON|RAIL|accounts ar|
-3011|198|10|1|5|5490.95|0.02|0.04|R|F|1992-04-21|1992-02-23|1992-05-15|NONE|TRUCK|nusual sentiments. carefully bold idea|
-3011|123|4|2|42|42971.04|0.05|0.00|A|F|1992-02-01|1992-03-18|1992-02-29|NONE|TRUCK|osits haggle quickly pending, |
-3012|195|7|1|49|53664.31|0.00|0.00|A|F|1993-08-07|1993-07-01|1993-08-08|NONE|MAIL| quickly furious packages. silently unusua|
-3012|161|2|2|37|39262.92|0.06|0.03|A|F|1993-08-16|1993-06-07|1993-08-24|TAKE BACK RETURN|REG AIR|uickly permanent packages sleep caref|
-3013|94|6|1|31|30816.79|0.08|0.08|N|O|1997-05-03|1997-04-05|1997-05-25|NONE|AIR|y furious depen|
-3013|139|5|2|30|31173.90|0.05|0.06|N|O|1997-05-02|1997-03-09|1997-05-12|TAKE BACK RETURN|MAIL|ronic packages. slyly even|
-3013|120|10|3|35|35704.20|0.00|0.03|N|O|1997-04-02|1997-05-04|1997-04-16|COLLECT COD|MAIL|ely accord|
-3013|181|2|4|17|18380.06|0.01|0.07|N|O|1997-02-26|1997-05-02|1997-03-27|DELIVER IN PERSON|SHIP|fully unusual account|
-3013|60|5|5|20|19201.20|0.00|0.04|N|O|1997-05-06|1997-03-18|1997-05-12|COLLECT COD|RAIL|unts boost regular ideas. slyly pe|
-3013|72|2|6|19|18469.33|0.08|0.07|N|O|1997-05-11|1997-04-18|1997-05-15|COLLECT COD|REG AIR|fluffily pending packages nag furiously al|
-3014|163|4|1|36|38273.76|0.05|0.03|A|F|1992-11-16|1993-01-20|1992-11-28|TAKE BACK RETURN|FOB|ding accounts boost fu|
-3014|106|1|2|36|36219.60|0.00|0.08|R|F|1992-12-28|1992-12-29|1993-01-24|COLLECT COD|MAIL|iously ironic r|
-3014|151|9|3|48|50455.20|0.06|0.02|A|F|1992-12-19|1993-01-08|1992-12-25|DELIVER IN PERSON|REG AIR|y pending theodolites wake. reg|
-3014|114|1|4|14|14197.54|0.10|0.02|R|F|1992-11-19|1993-01-01|1992-12-17|DELIVER IN PERSON|SHIP|. slyly brave platelets nag. careful,|
-3014|75|5|5|28|27301.96|0.02|0.08|R|F|1993-01-09|1992-12-18|1993-01-10|TAKE BACK RETURN|FOB|es are. final braids nag slyly. fluff|
-3014|38|4|6|30|28140.90|0.04|0.01|R|F|1993-02-28|1993-01-02|1993-03-20|TAKE BACK RETURN|AIR| final foxes.|
-3015|3|8|1|5|4515.00|0.09|0.00|A|F|1993-01-10|1992-12-02|1993-01-19|TAKE BACK RETURN|RAIL| the furiously pendi|
-3015|18|2|2|17|15606.17|0.03|0.01|R|F|1992-10-16|1992-11-20|1992-10-28|COLLECT COD|AIR|s above the fluffily final t|
-3015|91|4|3|23|22795.07|0.03|0.05|A|F|1992-12-03|1992-11-19|1992-12-23|DELIVER IN PERSON|FOB|s are slyly carefully special pinto bea|
-3015|156|7|4|7|7393.05|0.10|0.03|A|F|1992-12-07|1992-12-17|1992-12-30|DELIVER IN PERSON|REG AIR| after the evenly special packages ca|
-3015|165|4|5|42|44736.72|0.04|0.02|R|F|1993-01-21|1992-11-07|1993-02-11|DELIVER IN PERSON|AIR|encies haggle furious|
-3015|66|7|6|18|17389.08|0.02|0.03|R|F|1992-10-10|1992-11-19|1992-10-18|TAKE BACK RETURN|MAIL|equests wake fluffil|
-3040|16|6|1|18|16488.18|0.08|0.04|R|F|1993-06-25|1993-07-06|1993-07-19|TAKE BACK RETURN|SHIP|ly thin accou|
-3040|133|9|2|9|9298.17|0.00|0.01|A|F|1993-06-12|1993-05-16|1993-06-14|NONE|RAIL|ges. pending packages wake. requests|
-3040|126|5|3|30|30783.60|0.01|0.01|A|F|1993-08-06|1993-05-18|1993-08-19|NONE|MAIL|x furiously bold packages. expres|
-3040|83|4|4|14|13763.12|0.05|0.04|A|F|1993-05-13|1993-05-18|1993-05-19|TAKE BACK RETURN|REG AIR| haggle carefully. express hocke|
-3040|52|3|5|43|40938.15|0.04|0.04|R|F|1993-05-21|1993-05-25|1993-05-26|NONE|MAIL|sts nag slyly alongside of the depos|
-3040|18|5|6|10|9180.10|0.08|0.04|R|F|1993-05-16|1993-06-24|1993-06-11|DELIVER IN PERSON|MAIL|ely regular foxes haggle dari|
-3041|181|2|1|5|5405.90|0.07|0.04|N|O|1997-07-20|1997-07-15|1997-08-17|COLLECT COD|FOB|posits dazzle special p|
-3041|146|9|2|9|9415.26|0.03|0.03|N|O|1997-06-29|1997-08-14|1997-07-19|COLLECT COD|AIR|iously across the silent pinto beans. furi|
-3041|68|5|3|9|8712.54|0.09|0.06|N|O|1997-08-28|1997-07-23|1997-09-16|TAKE BACK RETURN|FOB|scapades after the special|
-3042|105|2|1|30|30153.00|0.08|0.06|A|F|1995-01-12|1995-02-15|1995-01-24|DELIVER IN PERSON|SHIP|the requests detect fu|
-3042|102|3|2|28|28058.80|0.05|0.03|A|F|1994-11-24|1995-01-02|1994-12-06|TAKE BACK RETURN|MAIL|ng the furiously r|
-3042|14|8|3|34|31076.34|0.04|0.00|R|F|1994-12-11|1995-02-03|1994-12-21|TAKE BACK RETURN|TRUCK|can wake after the enticingly stealthy i|
-3042|48|1|4|19|18012.76|0.02|0.01|A|F|1995-03-05|1995-01-24|1995-03-17|COLLECT COD|TRUCK|e carefully. regul|
-3043|46|9|1|23|21758.92|0.07|0.04|R|F|1992-05-08|1992-07-22|1992-05-18|COLLECT COD|TRUCK|uickly above the pending,|
-3043|6|3|2|15|13590.00|0.03|0.05|A|F|1992-05-27|1992-06-03|1992-06-09|COLLECT COD|FOB|usly furiously|
-3043|60|1|3|42|40322.52|0.10|0.07|R|F|1992-07-15|1992-06-19|1992-07-23|NONE|MAIL|ide of the un|
-3043|91|2|4|5|4955.45|0.10|0.01|A|F|1992-05-22|1992-07-02|1992-06-20|TAKE BACK RETURN|TRUCK|ake blithely re|
-3044|101|2|1|10|10011.00|0.07|0.08|N|O|1996-07-13|1996-05-06|1996-07-21|TAKE BACK RETURN|REG AIR| slyly ironic requests. s|
-3044|168|7|2|3|3204.48|0.06|0.02|N|O|1996-07-27|1996-05-26|1996-08-15|TAKE BACK RETURN|AIR|ecoys haggle furiously pending requests.|
-3044|19|3|3|47|43193.47|0.09|0.00|N|O|1996-05-24|1996-06-22|1996-05-30|NONE|REG AIR|ly around the car|
-3045|88|9|1|41|40511.28|0.05|0.01|N|O|1995-09-30|1995-11-24|1995-10-03|TAKE BACK RETURN|MAIL|ely final foxes. carefully ironic pinto b|
-3045|69|6|2|48|46514.88|0.02|0.03|N|O|1995-10-01|1995-12-16|1995-10-10|TAKE BACK RETURN|MAIL|ole quickly outside th|
-3046|74|5|1|44|42859.08|0.03|0.03|N|O|1996-03-03|1996-02-25|1996-04-01|NONE|AIR| are quickly. blithe|
-3046|54|5|2|46|43886.30|0.03|0.08|N|O|1996-03-22|1996-02-28|1996-04-07|TAKE BACK RETURN|AIR|sits sleep furious|
-3046|2|9|3|31|27962.00|0.03|0.07|N|O|1996-03-24|1996-01-30|1996-03-26|NONE|RAIL|y pending somas alongside of the slyly iro|
-3047|104|5|1|17|17069.70|0.08|0.02|N|O|1997-06-14|1997-04-20|1997-06-23|COLLECT COD|FOB|onic instruction|
-3047|14|1|2|23|21022.23|0.00|0.04|N|O|1997-05-20|1997-06-14|1997-05-28|TAKE BACK RETURN|REG AIR| slyly ironi|
-3072|57|9|1|6|5742.30|0.09|0.05|R|F|1994-02-09|1994-03-24|1994-02-28|DELIVER IN PERSON|REG AIR|gular requests abov|
-3072|108|3|2|36|36291.60|0.07|0.02|R|F|1994-04-14|1994-04-22|1994-05-06|COLLECT COD|AIR| theodolites. blithely e|
-3072|97|8|3|7|6979.63|0.04|0.07|R|F|1994-05-09|1994-03-31|1994-05-19|COLLECT COD|TRUCK|uests. ironic, ironic depos|
-3072|83|4|4|39|38340.12|0.05|0.08|A|F|1994-05-27|1994-04-20|1994-06-14|COLLECT COD|MAIL|es; slyly spe|
-3072|88|9|5|1|988.08|0.01|0.08|R|F|1994-02-26|1994-03-14|1994-03-19|NONE|AIR| slyly ironic attainments. car|
-3073|194|7|1|16|17507.04|0.07|0.01|R|F|1994-03-02|1994-03-23|1994-03-31|DELIVER IN PERSON|AIR|n requests. ironi|
-3073|22|5|2|47|43334.94|0.09|0.00|R|F|1994-03-26|1994-02-12|1994-04-21|NONE|REG AIR|eposits. fluffily|
-3073|87|8|3|10|9870.80|0.03|0.00|R|F|1994-02-11|1994-03-24|1994-02-26|COLLECT COD|FOB| furiously caref|
-3073|29|4|4|14|13006.28|0.09|0.07|R|F|1994-03-24|1994-04-01|1994-04-07|NONE|RAIL|ilently quiet epitaphs.|
-3073|41|10|5|25|23526.00|0.00|0.07|R|F|1994-04-14|1994-03-07|1994-04-22|NONE|TRUCK|nag asymptotes. pinto beans sleep |
-3073|147|8|6|39|40838.46|0.09|0.02|R|F|1994-05-01|1994-02-16|1994-05-12|DELIVER IN PERSON|AIR|lar excuses across the furiously even |
-3073|44|5|7|11|10384.44|0.08|0.07|A|F|1994-05-01|1994-03-06|1994-05-08|COLLECT COD|SHIP|instructions sleep according to the |
-3074|37|8|1|50|46851.50|0.08|0.08|A|F|1993-01-31|1992-12-15|1993-02-20|NONE|AIR|furiously pending requests haggle s|
-3074|139|5|2|39|40526.07|0.03|0.00|R|F|1992-12-08|1993-01-28|1992-12-09|DELIVER IN PERSON|TRUCK|iously throu|
-3075|9|6|1|39|35451.00|0.02|0.03|A|F|1994-06-10|1994-06-21|1994-06-20|NONE|FOB|ing deposits nag |
-3075|52|10|2|2|1904.10|0.07|0.08|R|F|1994-06-14|1994-06-10|1994-06-25|TAKE BACK RETURN|AIR|. unusual, unusual accounts haggle furious|
-3076|85|6|1|44|43343.52|0.00|0.05|A|F|1993-09-14|1993-10-04|1993-09-17|TAKE BACK RETURN|FOB| instructions h|
-3076|106|1|2|22|22134.20|0.08|0.00|A|F|1993-09-05|1993-09-10|1993-09-27|NONE|REG AIR|packages wake furiou|
-3076|5|8|3|31|28055.00|0.06|0.06|A|F|1993-08-10|1993-09-17|1993-08-17|TAKE BACK RETURN|SHIP|regular depos|
-3077|72|2|1|25|24301.75|0.06|0.01|N|O|1997-09-14|1997-10-16|1997-10-06|NONE|TRUCK|lent account|
-3077|91|3|2|40|39643.60|0.05|0.06|N|O|1997-10-22|1997-09-19|1997-11-19|DELIVER IN PERSON|AIR|to the enticing packag|
-3077|78|7|3|13|12714.91|0.03|0.07|N|O|1997-09-09|1997-10-15|1997-09-19|NONE|TRUCK|luffily close depende|
-3077|115|5|4|23|23347.53|0.03|0.02|N|O|1997-11-05|1997-09-16|1997-11-20|NONE|MAIL|lly. fluffily pending dinos across|
-3078|132|3|1|25|25803.25|0.01|0.03|A|F|1993-04-22|1993-05-01|1993-04-28|TAKE BACK RETURN|AIR|express dinos. carefully ironic|
-3078|78|8|2|21|20539.47|0.09|0.07|A|F|1993-03-20|1993-03-21|1993-04-01|COLLECT COD|AIR|e fluffily. |
-3079|70|5|1|20|19401.40|0.05|0.00|N|O|1997-10-18|1997-10-26|1997-11-14|NONE|RAIL|ets are according to the quickly dari|
-3079|117|1|2|38|38650.18|0.08|0.07|N|O|1997-11-07|1997-11-25|1997-12-06|NONE|RAIL|e carefully regular realms|
-3079|17|8|3|40|36680.40|0.02|0.08|N|O|1997-09-26|1997-12-11|1997-10-09|NONE|RAIL|ide of the pending, special deposi|
-3079|24|5|4|2|1848.04|0.00|0.08|N|O|1998-01-05|1997-11-17|1998-01-28|NONE|FOB|ly busy requests believ|
-3079|188|9|5|2|2176.36|0.10|0.00|N|O|1997-12-27|1997-10-25|1998-01-08|COLLECT COD|SHIP|y regular asymptotes doz|
-3079|166|1|6|46|49043.36|0.00|0.00|N|O|1997-11-19|1997-11-04|1997-11-25|DELIVER IN PERSON|REG AIR|es. final, regula|
-3104|51|6|1|20|19021.00|0.01|0.08|A|F|1993-12-31|1993-11-24|1994-01-12|DELIVER IN PERSON|REG AIR|s are. furiously s|
-3104|48|1|2|47|44557.88|0.02|0.05|A|F|1993-12-25|1993-11-02|1994-01-12|COLLECT COD|RAIL|ily daring acc|
-3104|63|4|3|11|10593.66|0.02|0.03|A|F|1993-10-05|1993-11-30|1993-10-27|NONE|TRUCK| special deposits u|
-3104|38|9|4|26|24388.78|0.02|0.08|R|F|1994-01-02|1993-12-05|1994-01-31|TAKE BACK RETURN|TRUCK|es boost carefully. slyly |
-3105|184|5|1|11|11925.98|0.01|0.06|N|O|1997-02-07|1997-02-09|1997-03-01|NONE|FOB|kly bold depths caj|
-3105|45|6|2|9|8505.36|0.08|0.08|N|O|1996-12-25|1997-02-04|1997-01-09|COLLECT COD|SHIP|es wake among t|
-3105|25|4|3|48|44400.96|0.02|0.05|N|O|1997-02-28|1997-01-31|1997-03-18|DELIVER IN PERSON|REG AIR|ending platelets wake carefully ironic inst|
-3105|91|5|4|23|22795.07|0.04|0.07|N|O|1997-03-08|1996-12-14|1997-03-18|COLLECT COD|REG AIR| detect slyly. blithely unusual requests ar|
-3105|90|1|5|8|7920.72|0.07|0.07|N|O|1996-12-28|1996-12-28|1997-01-25|NONE|FOB|s. blithely unusual ideas was after|
-3105|47|6|6|30|28411.20|0.08|0.05|N|O|1997-03-03|1997-02-03|1997-03-05|NONE|FOB|ess accounts boost among t|
-3106|86|7|1|22|21693.76|0.03|0.02|N|O|1997-02-28|1997-02-12|1997-03-03|DELIVER IN PERSON|FOB|structions atop the blithely|
-3106|136|2|2|49|50770.37|0.06|0.06|N|O|1997-02-27|1997-03-11|1997-03-12|NONE|TRUCK|lets. quietly regular courts |
-3106|52|7|3|42|39986.10|0.09|0.07|N|O|1997-04-05|1997-03-17|1997-04-22|COLLECT COD|REG AIR|nstructions wake. furiously |
-3106|196|10|4|6|6577.14|0.10|0.07|N|O|1997-02-02|1997-04-11|1997-02-27|COLLECT COD|REG AIR|symptotes. slyly bold platelets cajol|
-3106|65|2|5|16|15440.96|0.09|0.08|N|O|1997-02-25|1997-04-10|1997-03-16|NONE|AIR|sits wake slyl|
-3107|149|6|1|16|16786.24|0.05|0.04|N|O|1997-08-30|1997-10-20|1997-09-20|TAKE BACK RETURN|REG AIR|regular pinto beans. ironic ideas haggle|
-3107|142|3|2|35|36474.90|0.05|0.06|N|O|1997-08-27|1997-11-19|1997-09-14|COLLECT COD|TRUCK|ets doubt furiously final ideas. final|
-3107|170|9|3|23|24613.91|0.03|0.06|N|O|1997-12-10|1997-11-11|1997-12-14|TAKE BACK RETURN|SHIP|atelets must ha|
-3107|87|8|4|27|26651.16|0.00|0.08|N|O|1997-11-15|1997-10-31|1997-11-28|DELIVER IN PERSON|FOB|furiously final |
-3108|109|2|1|37|37336.70|0.06|0.04|A|F|1993-10-16|1993-10-01|1993-11-09|DELIVER IN PERSON|RAIL| final requests. |
-3108|166|1|2|26|27720.16|0.08|0.05|A|F|1993-11-12|1993-10-05|1993-12-09|COLLECT COD|TRUCK| slyly slow foxes wake furious|
-3109|18|2|1|32|29376.32|0.08|0.03|A|F|1993-09-05|1993-10-06|1993-09-18|DELIVER IN PERSON|FOB|ecial orbits are furiou|
-3109|145|4|2|49|51211.86|0.08|0.06|R|F|1993-10-24|1993-09-30|1993-11-21|TAKE BACK RETURN|AIR| even pearls. furiously pending |
-3109|176|4|3|43|46275.31|0.04|0.07|R|F|1993-09-29|1993-09-06|1993-10-13|COLLECT COD|MAIL|ding to the foxes. |
-3109|79|10|4|26|25455.82|0.01|0.05|R|F|1993-11-16|1993-10-18|1993-12-06|TAKE BACK RETURN|TRUCK| sleep slyly according to t|
-3109|143|2|5|50|52157.00|0.01|0.08|A|F|1993-09-17|1993-10-16|1993-10-11|NONE|FOB| regular packages boost blithely even, re|
-3109|15|9|6|10|9150.10|0.10|0.04|A|F|1993-10-26|1993-10-03|1993-11-09|NONE|TRUCK|sits haggle carefully. regular, unusual ac|
-3110|89|10|1|1|989.08|0.02|0.07|A|F|1995-01-15|1995-01-20|1995-01-30|DELIVER IN PERSON|REG AIR|c theodolites a|
-3110|57|2|2|31|29668.55|0.01|0.06|R|F|1995-03-31|1995-03-07|1995-04-21|TAKE BACK RETURN|REG AIR|en deposits. ironic|
-3110|3|10|3|34|30702.00|0.02|0.02|A|F|1995-02-23|1995-01-27|1995-03-09|TAKE BACK RETURN|FOB|ly pending requests ha|
-3110|40|1|4|16|15040.64|0.04|0.04|A|F|1995-01-10|1995-02-06|1995-01-26|NONE|MAIL|across the regular acco|
-3110|140|6|5|39|40565.46|0.09|0.01|A|F|1995-02-09|1995-01-21|1995-02-21|NONE|MAIL|side of the blithely unusual courts. slyly |
-3111|137|8|1|22|22816.86|0.06|0.05|N|O|1995-09-21|1995-11-09|1995-10-17|COLLECT COD|REG AIR|quests. regular dolphins against the |
-3111|58|10|2|30|28741.50|0.06|0.05|N|O|1995-10-05|1995-11-15|1995-11-01|TAKE BACK RETURN|TRUCK|eas are furiously slyly special deposits.|
-3111|52|3|3|10|9520.50|0.02|0.02|N|O|1995-11-10|1995-11-02|1995-12-04|NONE|FOB|ng the slyly ironic inst|
-3111|132|3|4|31|31996.03|0.00|0.08|N|O|1995-10-26|1995-09-26|1995-11-02|TAKE BACK RETURN|MAIL|kages detect express attainments|
-3111|54|6|5|14|13356.70|0.05|0.04|N|O|1995-10-17|1995-10-19|1995-10-19|TAKE BACK RETURN|SHIP|re. pinto |
-3111|86|7|6|5|4930.40|0.03|0.08|N|O|1995-08-30|1995-10-16|1995-09-04|DELIVER IN PERSON|TRUCK|. carefully even ideas|
-3111|148|9|7|41|42973.74|0.09|0.05|N|O|1995-11-22|1995-11-01|1995-12-01|TAKE BACK RETURN|FOB|fily slow ideas. |
-3136|142|5|1|30|31264.20|0.02|0.08|R|F|1994-08-13|1994-10-02|1994-09-02|TAKE BACK RETURN|RAIL|leep blithel|
-3136|103|4|2|7|7021.70|0.05|0.07|A|F|1994-10-08|1994-09-14|1994-10-11|TAKE BACK RETURN|SHIP|ic pinto beans are slyly. f|
-3136|158|3|3|43|45500.45|0.00|0.07|A|F|1994-09-05|1994-09-25|1994-09-11|NONE|RAIL|. special theodolites ha|
-3136|116|6|4|26|26418.86|0.04|0.05|A|F|1994-10-13|1994-11-07|1994-11-05|TAKE BACK RETURN|AIR|eep fluffily. daringly silent attainments d|
-3136|67|8|5|2|1934.12|0.08|0.07|R|F|1994-11-21|1994-11-03|1994-11-26|DELIVER IN PERSON|TRUCK|? special, silent |
-3136|80|1|6|29|28422.32|0.08|0.07|A|F|1994-11-16|1994-10-03|1994-12-14|NONE|FOB|latelets. final |
-3137|3|4|1|6|5418.00|0.02|0.02|N|O|1995-09-19|1995-10-23|1995-10-16|NONE|SHIP|ly express as|
-3137|6|3|2|4|3624.00|0.06|0.04|N|O|1995-10-01|1995-09-11|1995-10-30|COLLECT COD|RAIL|posits wake. silent excuses boost about|
-3138|93|5|1|7|6951.63|0.05|0.05|R|F|1994-03-04|1994-03-14|1994-03-20|NONE|AIR|lithely quickly even packages. packages|
-3138|44|5|2|27|25489.08|0.09|0.01|R|F|1994-03-24|1994-03-23|1994-04-18|DELIVER IN PERSON|FOB|counts cajole fluffily carefully special i|
-3138|197|8|3|32|35110.08|0.00|0.01|R|F|1994-02-24|1994-05-07|1994-02-28|TAKE BACK RETURN|MAIL|inal foxes affix slyly. fluffily regul|
-3138|172|3|4|38|40742.46|0.07|0.04|R|F|1994-02-21|1994-03-21|1994-03-13|COLLECT COD|FOB|lithely fluffily un|
-3138|10|1|5|12|10920.12|0.09|0.02|A|F|1994-03-04|1994-04-11|1994-03-21|COLLECT COD|FOB|. bold pinto beans haggl|
-3138|44|7|6|25|23601.00|0.05|0.08|A|F|1994-05-19|1994-04-07|1994-06-17|TAKE BACK RETURN|AIR|dolites around the carefully busy the|
-3139|40|6|1|46|43241.84|0.08|0.03|R|F|1992-04-28|1992-03-04|1992-05-19|TAKE BACK RETURN|FOB|of the unusual, unusual re|
-3140|7|4|1|21|19047.00|0.08|0.02|R|F|1992-04-12|1992-05-31|1992-04-21|NONE|REG AIR| furiously sly excuses according to the|
-3140|89|10|2|10|9890.80|0.07|0.01|A|F|1992-05-30|1992-05-09|1992-06-09|COLLECT COD|RAIL|accounts. expres|
-3140|133|4|3|28|28927.64|0.06|0.00|R|F|1992-06-08|1992-07-07|1992-07-08|TAKE BACK RETURN|SHIP|lar ideas. slyly ironic d|
-3141|177|6|1|32|34469.44|0.06|0.00|N|O|1995-11-21|1995-12-18|1995-11-26|DELIVER IN PERSON|FOB|oxes are quickly about t|
-3141|10|7|2|37|33670.37|0.10|0.05|N|O|1996-01-24|1995-12-16|1996-01-27|DELIVER IN PERSON|AIR|press pinto beans. bold accounts boost b|
-3141|79|7|3|9|8811.63|0.09|0.02|N|O|1995-11-11|1995-12-10|1995-12-02|DELIVER IN PERSON|MAIL|uickly ironic, pendi|
-3141|46|9|4|47|44463.88|0.03|0.01|N|O|1995-11-29|1996-01-13|1995-12-10|TAKE BACK RETURN|TRUCK| are slyly pi|
-3142|120|7|1|15|15301.80|0.03|0.08|R|F|1992-08-15|1992-08-18|1992-08-22|DELIVER IN PERSON|AIR|instructions are. ironic packages doz|
-3143|90|1|1|22|21781.98|0.02|0.00|A|F|1993-05-11|1993-03-26|1993-05-20|TAKE BACK RETURN|MAIL|l, special instructions nag |
-3143|183|4|2|40|43327.20|0.03|0.08|A|F|1993-05-07|1993-03-29|1993-05-17|COLLECT COD|FOB|sly unusual theodolites. slyly ev|
-3143|183|4|3|22|23829.96|0.05|0.03|A|F|1993-03-18|1993-05-09|1993-04-14|DELIVER IN PERSON|MAIL|beans. fluf|
-3143|66|7|4|46|44438.76|0.05|0.08|R|F|1993-04-19|1993-03-21|1993-05-05|COLLECT COD|REG AIR|low forges haggle. even packages use bli|
-3168|60|8|1|46|44162.76|0.08|0.08|R|F|1992-02-14|1992-03-02|1992-03-02|TAKE BACK RETURN|SHIP|y across the express accounts. fluff|
-3168|154|5|2|1|1054.15|0.06|0.08|A|F|1992-05-27|1992-03-12|1992-06-09|TAKE BACK RETURN|SHIP|pinto beans. slyly regular courts haggle |
-3168|128|3|3|13|13365.56|0.09|0.02|A|F|1992-03-05|1992-04-29|1992-03-15|NONE|SHIP|ironic somas haggle quick|
-3168|165|10|4|11|11716.76|0.02|0.05|R|F|1992-04-12|1992-03-17|1992-05-12|COLLECT COD|SHIP|ously furious dependenc|
-3169|192|4|1|12|13106.28|0.01|0.04|R|F|1994-01-05|1994-03-18|1994-01-21|COLLECT COD|REG AIR| regular d|
-3169|200|3|2|17|18703.40|0.05|0.04|R|F|1994-03-02|1994-01-21|1994-03-03|DELIVER IN PERSON|TRUCK|usly regular packages. ironi|
-3169|188|9|3|12|13058.16|0.08|0.07|A|F|1994-04-18|1994-03-12|1994-05-08|TAKE BACK RETURN|FOB|atelets. pac|
-3169|105|6|4|26|26132.60|0.10|0.04|R|F|1994-04-08|1994-03-21|1994-04-29|NONE|TRUCK|ter the regular ideas. slyly iro|
-3169|108|9|5|6|6048.60|0.09|0.01|A|F|1994-03-24|1994-02-22|1994-04-04|TAKE BACK RETURN|AIR|ular instructions. ca|
-3169|177|8|6|46|49549.82|0.02|0.07|A|F|1994-02-01|1994-01-22|1994-02-24|DELIVER IN PERSON|RAIL|thely bold theodolites are fl|
-3170|40|6|1|12|11280.48|0.03|0.03|N|O|1998-02-12|1998-01-17|1998-02-24|NONE|TRUCK|ing accounts along the speci|
-3170|100|2|2|21|21002.10|0.01|0.00|N|O|1997-12-09|1998-01-31|1997-12-21|DELIVER IN PERSON|MAIL|o beans. carefully final requests dou|
-3170|89|10|3|27|26705.16|0.00|0.05|N|O|1998-02-25|1998-01-29|1998-02-27|COLLECT COD|AIR|efully bold foxes. regular, ev|
-3170|41|2|4|34|31995.36|0.05|0.04|N|O|1998-02-01|1998-01-11|1998-02-20|TAKE BACK RETURN|TRUCK|s about the fluffily final de|
-3170|90|1|5|32|31682.88|0.02|0.04|N|O|1997-11-24|1997-12-12|1997-12-15|COLLECT COD|SHIP|ggle about the furiously r|
-3170|110|5|6|43|43434.73|0.08|0.05|N|O|1998-01-05|1998-01-04|1998-01-14|NONE|REG AIR|. express dolphins use sly|
-3170|84|5|7|26|25586.08|0.10|0.05|N|O|1998-02-12|1997-12-22|1998-02-28|COLLECT COD|TRUCK|s engage furiously. |
-3171|47|4|1|34|32199.36|0.04|0.00|A|F|1993-05-30|1993-05-27|1993-06-06|DELIVER IN PERSON|REG AIR|r the final, even packages. quickly|
-3171|139|10|2|50|51956.50|0.01|0.04|A|F|1993-07-19|1993-05-15|1993-07-31|TAKE BACK RETURN|REG AIR|riously final foxes about the ca|
-3172|96|9|1|4|3984.36|0.06|0.07|A|F|1992-09-26|1992-08-15|1992-10-20|DELIVER IN PERSON|TRUCK|s are slyly thin package|
-3172|148|7|2|43|45070.02|0.05|0.07|R|F|1992-08-22|1992-07-07|1992-08-26|COLLECT COD|MAIL| final packages. |
-3172|132|3|3|13|13417.69|0.03|0.01|R|F|1992-07-06|1992-08-06|1992-08-05|DELIVER IN PERSON|MAIL|inal deposits haggle along the|
-3172|135|6|4|28|28983.64|0.08|0.04|R|F|1992-07-09|1992-07-14|1992-07-16|NONE|MAIL|regular ideas. packages are furi|
-3172|64|5|5|31|29885.86|0.05|0.08|A|F|1992-09-01|1992-08-27|1992-09-23|NONE|SHIP|. slyly regular dependencies haggle quiet|
-3173|195|6|1|35|38331.65|0.01|0.08|N|O|1996-09-09|1996-10-15|1996-10-04|TAKE BACK RETURN|RAIL| across the slyly even requests.|
-3173|178|7|2|5|5390.85|0.09|0.07|N|O|1996-12-06|1996-09-17|1996-12-07|DELIVER IN PERSON|REG AIR|express depo|
-3173|46|9|3|16|15136.64|0.06|0.01|N|O|1996-08-12|1996-09-21|1996-08-22|NONE|SHIP|e special,|
-3173|94|5|4|2|1988.18|0.00|0.00|N|O|1996-10-15|1996-11-06|1996-10-18|COLLECT COD|MAIL|ular pearls|
-3173|185|6|5|2|2170.36|0.00|0.06|N|O|1996-08-18|1996-09-21|1996-09-07|DELIVER IN PERSON|MAIL|fluffily above t|
-3174|186|7|1|6|6517.08|0.04|0.08|N|O|1996-03-13|1996-02-09|1996-03-22|DELIVER IN PERSON|AIR| furiously ironic|
-3174|194|7|2|4|4376.76|0.01|0.05|N|O|1995-11-17|1996-01-08|1995-11-27|DELIVER IN PERSON|RAIL|deas sleep thi|
-3174|92|4|3|21|20833.89|0.08|0.05|N|O|1996-02-20|1995-12-28|1996-03-17|NONE|MAIL|iously. idly bold theodolites a|
-3174|192|6|4|13|14198.47|0.08|0.06|N|O|1996-01-11|1996-01-26|1996-02-01|DELIVER IN PERSON|SHIP|leep quickly? slyly special platelets|
-3174|72|2|5|39|37910.73|0.02|0.06|N|O|1995-12-02|1996-02-08|1995-12-12|TAKE BACK RETURN|TRUCK| wake slyly foxes. bold requests p|
-3174|120|7|6|8|8160.96|0.07|0.08|N|O|1995-12-07|1996-01-08|1995-12-29|DELIVER IN PERSON|TRUCK|nic deposits among t|
-3175|120|10|1|28|28563.36|0.10|0.01|R|F|1994-09-27|1994-10-05|1994-10-04|NONE|FOB|ore the even, silent foxes. b|
-3175|1|4|2|38|34238.00|0.01|0.07|R|F|1994-10-10|1994-08-25|1994-10-28|NONE|MAIL|the quickly even dolph|
-3175|129|4|3|12|12349.44|0.09|0.07|R|F|1994-10-16|1994-09-15|1994-10-18|NONE|AIR|ter the pending deposits. slyly e|
-3175|85|6|4|14|13791.12|0.02|0.05|R|F|1994-10-21|1994-09-05|1994-11-15|NONE|MAIL|nt dependencies are quietly even |
-3175|18|8|5|47|43146.47|0.08|0.03|R|F|1994-08-08|1994-09-10|1994-08-21|COLLECT COD|REG AIR| final requests x-r|
-3175|175|6|6|44|47307.48|0.01|0.00|R|F|1994-09-26|1994-08-30|1994-10-24|TAKE BACK RETURN|MAIL|are carefully furiously ironic accounts. e|
-3175|1|4|7|32|28832.00|0.01|0.02|R|F|1994-09-29|1994-09-20|1994-10-10|TAKE BACK RETURN|SHIP|lites sleep|
-3200|116|6|1|17|17273.87|0.10|0.00|N|O|1996-06-06|1996-04-21|1996-06-14|DELIVER IN PERSON|AIR|side of the furiously pendin|
-3200|166|1|2|27|28786.32|0.03|0.00|N|O|1996-05-07|1996-05-01|1996-05-09|TAKE BACK RETURN|REG AIR|as haggle furiously against the fluff|
-3200|131|2|3|36|37120.68|0.01|0.01|N|O|1996-03-22|1996-03-19|1996-03-30|DELIVER IN PERSON|FOB|f the carefu|
-3200|30|9|4|11|10230.33|0.10|0.02|N|O|1996-03-18|1996-03-21|1996-04-14|COLLECT COD|RAIL|osits sleep fur|
-3200|198|9|5|16|17571.04|0.05|0.00|N|O|1996-02-28|1996-03-13|1996-03-11|NONE|RAIL|ly against the quiet packages. blith|
-3200|175|3|6|25|26879.25|0.10|0.01|N|O|1996-02-08|1996-04-11|1996-03-06|COLLECT COD|FOB| slyly regular hockey players! pinto beans |
-3201|46|7|1|11|10406.44|0.10|0.06|A|F|1993-09-27|1993-08-29|1993-10-18|NONE|TRUCK|ing to the furiously expr|
-3201|118|5|2|27|27488.97|0.08|0.02|R|F|1993-08-31|1993-08-24|1993-09-08|TAKE BACK RETURN|FOB|deposits are slyly along|
-3201|119|6|3|50|50955.50|0.00|0.08|R|F|1993-10-27|1993-09-30|1993-11-16|COLLECT COD|TRUCK| deposits. express, ir|
-3202|183|4|1|30|32495.40|0.09|0.02|A|F|1993-03-18|1993-03-10|1993-03-23|COLLECT COD|SHIP|ven platelets. furiously final|
-3202|20|4|2|22|20240.44|0.01|0.02|R|F|1993-02-16|1993-02-16|1993-03-16|TAKE BACK RETURN|MAIL|the express packages. fu|
-3203|144|5|1|23|24015.22|0.01|0.07|N|O|1998-01-04|1998-01-12|1998-01-24|COLLECT COD|SHIP|uses. fluffily ironic pinto bea|
-3203|188|9|2|22|23939.96|0.03|0.03|N|O|1998-02-12|1998-01-01|1998-02-18|TAKE BACK RETURN|REG AIR|e the blithely regular accounts boost f|
-3204|12|2|1|10|9120.10|0.10|0.07|R|F|1993-01-27|1993-03-08|1993-01-29|COLLECT COD|SHIP|counts. bold |
-3204|7|10|2|39|35373.00|0.10|0.03|R|F|1993-02-11|1993-03-19|1993-02-28|TAKE BACK RETURN|MAIL|sits sleep theodolites. slyly bo|
-3205|68|5|1|7|6776.42|0.09|0.00|R|F|1992-07-05|1992-06-17|1992-07-07|NONE|SHIP|ly alongsi|
-3205|29|10|2|32|29728.64|0.08|0.03|A|F|1992-06-01|1992-07-10|1992-06-06|TAKE BACK RETURN|RAIL|lar accoun|
-3205|103|6|3|38|38117.80|0.10|0.08|A|F|1992-07-31|1992-06-03|1992-08-20|DELIVER IN PERSON|AIR|usly quiet accounts. slyly pending pinto |
-3205|56|7|4|10|9560.50|0.01|0.07|A|F|1992-06-18|1992-07-04|1992-07-16|COLLECT COD|RAIL| deposits cajole careful|
-3205|70|9|5|18|17461.26|0.03|0.03|A|F|1992-07-04|1992-06-14|1992-08-03|TAKE BACK RETURN|RAIL|symptotes. slyly even deposits ar|
-3205|195|8|6|19|20808.61|0.07|0.08|R|F|1992-05-28|1992-05-30|1992-06-05|COLLECT COD|AIR|yly pending packages snooz|
-3205|69|8|7|36|34886.16|0.06|0.03|A|F|1992-05-31|1992-06-19|1992-06-03|TAKE BACK RETURN|SHIP|s. ironic platelets above the s|
-3206|176|4|1|1|1076.17|0.07|0.05|N|O|1996-11-22|1996-10-16|1996-12-07|TAKE BACK RETURN|FOB|y unusual foxes cajole ab|
-3206|111|5|2|37|37411.07|0.07|0.01|N|O|1996-09-06|1996-10-31|1996-09-25|COLLECT COD|SHIP| quick theodolites hagg|
-3206|186|7|3|24|26068.32|0.00|0.08|N|O|1996-08-25|1996-10-01|1996-09-04|COLLECT COD|TRUCK|encies sleep deposits--|
-3207|113|3|1|2|2026.22|0.10|0.03|N|O|1998-06-15|1998-04-20|1998-06-21|COLLECT COD|MAIL|among the ironic, even packages |
-3207|71|9|2|42|40784.94|0.00|0.00|N|O|1998-05-02|1998-05-10|1998-06-01|NONE|SHIP|to the quickly special accounts? ironically|
-3207|152|7|3|17|17886.55|0.03|0.04|N|O|1998-03-27|1998-04-06|1998-03-28|COLLECT COD|RAIL|eep against the instructions. gifts hag|
-3207|19|6|4|32|29408.32|0.00|0.03|N|O|1998-06-17|1998-04-26|1998-07-07|TAKE BACK RETURN|SHIP|y across the slyly express foxes. bl|
-3207|83|4|5|8|7864.64|0.00|0.06|N|O|1998-06-13|1998-04-26|1998-07-11|COLLECT COD|SHIP|y. final pint|
-3207|134|5|6|32|33092.16|0.03|0.05|N|O|1998-04-19|1998-05-01|1998-05-08|COLLECT COD|FOB|l deposits wake beyond the carefully|
-3232|14|5|1|22|20108.22|0.10|0.01|A|F|1992-11-30|1992-12-09|1992-12-04|NONE|RAIL|thely. furio|
-3232|135|1|2|34|35194.42|0.07|0.04|R|F|1993-01-09|1992-11-14|1993-02-03|NONE|SHIP|old packages integrate quickly |
-3232|181|2|3|3|3243.54|0.04|0.06|R|F|1992-12-14|1992-12-11|1992-12-29|DELIVER IN PERSON|FOB|ily blithely ironic acco|
-3233|51|2|1|23|21874.15|0.04|0.05|A|F|1994-12-07|1995-01-11|1994-12-26|NONE|AIR|pending instructions use after the carefu|
-3233|154|6|2|6|6324.90|0.02|0.08|A|F|1994-12-06|1994-12-05|1994-12-07|TAKE BACK RETURN|REG AIR|requests are quickly above the slyly p|
-3233|100|4|3|2|2000.20|0.04|0.06|R|F|1995-01-03|1995-01-02|1995-01-21|TAKE BACK RETURN|AIR| across the bold packages|
-3233|9|2|4|25|22725.00|0.04|0.07|A|F|1994-11-24|1995-01-07|1994-12-11|NONE|RAIL|oss the pl|
-3234|79|10|1|45|44058.15|0.01|0.04|N|O|1996-05-15|1996-05-09|1996-06-02|DELIVER IN PERSON|TRUCK| express packages are carefully. f|
-3234|84|5|2|23|22633.84|0.03|0.00|N|O|1996-05-29|1996-05-15|1996-06-17|DELIVER IN PERSON|AIR|d-- fluffily special packag|
-3234|75|4|3|16|15601.12|0.06|0.05|N|O|1996-06-10|1996-05-30|1996-06-18|COLLECT COD|RAIL|ithely ironic accounts wake along t|
-3234|122|1|4|50|51106.00|0.09|0.05|N|O|1996-06-11|1996-05-19|1996-06-18|NONE|MAIL|ly regular ideas according to the regula|
-3234|165|2|5|14|14912.24|0.01|0.07|N|O|1996-04-06|1996-05-30|1996-04-13|NONE|REG AIR|lithely regular f|
-3235|109|2|1|9|9081.90|0.07|0.00|N|O|1995-11-17|1995-12-24|1995-11-30|COLLECT COD|AIR|l courts sleep quickly slyly |
-3235|95|6|2|43|42788.87|0.10|0.07|N|O|1995-12-25|1996-01-23|1996-01-09|COLLECT COD|MAIL|ckly final instru|
-3235|138|9|3|29|30105.77|0.06|0.06|N|O|1996-01-28|1995-12-26|1996-02-12|DELIVER IN PERSON|RAIL|e fluffy pinto bea|
-3235|178|9|4|23|24797.91|0.00|0.01|N|O|1996-02-16|1996-01-05|1996-03-07|DELIVER IN PERSON|SHIP|ldly ironic pinto beans|
-3236|117|4|1|10|10171.10|0.06|0.05|N|O|1996-11-15|1996-12-14|1996-11-29|TAKE BACK RETURN|AIR|arefully. fluffily reg|
-3236|122|7|2|21|21464.52|0.01|0.07|N|O|1996-12-23|1996-12-12|1997-01-21|NONE|AIR| final pinto |
-3236|118|2|3|7|7126.77|0.07|0.01|N|O|1996-12-27|1996-12-18|1997-01-24|DELIVER IN PERSON|SHIP|dolites. slyly unus|
-3237|11|5|1|11|10021.11|0.02|0.07|A|F|1992-08-03|1992-07-31|1992-08-13|TAKE BACK RETURN|AIR|es. permanently express platelets besid|
-3238|72|3|1|12|11664.84|0.06|0.01|R|F|1993-03-06|1993-05-08|1993-04-01|DELIVER IN PERSON|AIR|ackages affix furiously. furiously bol|
-3238|173|2|2|26|27902.42|0.01|0.06|A|F|1993-02-25|1993-04-04|1993-03-20|TAKE BACK RETURN|REG AIR|g accounts sleep furiously ironic attai|
-3238|81|2|3|1|981.08|0.00|0.04|R|F|1993-05-17|1993-04-18|1993-05-27|NONE|SHIP|wake alongs|
-3239|45|8|1|50|47252.00|0.05|0.01|N|O|1998-02-09|1998-04-02|1998-02-22|NONE|FOB|d blithely stea|
-3239|45|8|2|43|40636.72|0.01|0.06|N|O|1998-01-15|1998-03-12|1998-01-29|COLLECT COD|REG AIR|y. bold pinto beans use |
-3239|13|7|3|13|11869.13|0.01|0.05|N|O|1998-02-10|1998-02-19|1998-02-25|DELIVER IN PERSON|MAIL|r deposits solve fluf|
-3239|195|6|4|26|28474.94|0.03|0.05|N|O|1998-01-21|1998-03-21|1998-02-08|DELIVER IN PERSON|SHIP|ngly pending platelets are fluff|
-3239|12|9|5|31|28272.31|0.10|0.08|N|O|1998-04-14|1998-03-24|1998-04-17|DELIVER IN PERSON|FOB|foxes. pendin|
-3264|200|1|1|39|42907.80|0.06|0.06|N|O|1996-11-07|1996-12-12|1996-11-20|TAKE BACK RETURN|REG AIR|sleep carefully after the slyly final|
-3264|131|2|2|34|35058.42|0.00|0.01|N|O|1997-01-03|1997-01-06|1997-01-29|TAKE BACK RETURN|REG AIR|rns haggle carefully. blit|
-3264|125|8|3|11|11276.32|0.09|0.03|N|O|1996-12-11|1996-12-19|1996-12-15|DELIVER IN PERSON|SHIP|regular packages|
-3264|109|10|4|24|24218.40|0.09|0.07|N|O|1997-01-07|1996-12-13|1997-01-11|TAKE BACK RETURN|RAIL|ctions. quick|
-3264|63|4|5|6|5778.36|0.04|0.03|N|O|1996-11-10|1996-12-05|1996-11-22|TAKE BACK RETURN|SHIP|press packages. ironical|
-3264|141|2|6|43|44769.02|0.06|0.06|N|O|1997-01-17|1997-01-24|1997-02-01|TAKE BACK RETURN|TRUCK|leep at the blithely bold|
-3265|25|4|1|8|7400.16|0.06|0.02|A|F|1992-09-01|1992-09-12|1992-09-27|DELIVER IN PERSON|TRUCK|thely ironic requests sleep slyly-- i|
-3265|72|2|2|7|6804.49|0.09|0.00|R|F|1992-09-16|1992-09-04|1992-10-14|DELIVER IN PERSON|MAIL|he forges. fluffily regular asym|
-3265|191|4|3|28|30553.32|0.09|0.08|A|F|1992-10-22|1992-08-23|1992-10-25|NONE|RAIL|n requests. quickly final dinos|
-3266|64|1|1|31|29885.86|0.09|0.02|N|O|1995-06-19|1995-05-04|1995-07-06|COLLECT COD|MAIL|grate among the quickly express deposits|
-3266|38|4|2|43|40335.29|0.06|0.07|R|F|1995-05-04|1995-05-30|1995-05-11|COLLECT COD|AIR|ular asymptotes use careful|
-3267|185|6|1|33|35810.94|0.06|0.01|N|O|1997-03-30|1997-03-25|1997-04-23|TAKE BACK RETURN|AIR|es boost. |
-3268|96|7|1|1|996.09|0.06|0.08|A|F|1994-09-12|1994-08-31|1994-09-16|NONE|TRUCK|. ironic, bold requests use carefull|
-3268|42|9|2|40|37681.60|0.08|0.01|R|F|1994-06-30|1994-08-22|1994-07-25|COLLECT COD|FOB|ly. bold, eve|
-3269|161|10|1|40|42446.40|0.02|0.07|N|O|1996-06-11|1996-05-06|1996-06-15|DELIVER IN PERSON|TRUCK|es. pending d|
-3269|38|4|2|46|43149.38|0.00|0.02|N|O|1996-04-21|1996-04-12|1996-05-10|DELIVER IN PERSON|MAIL|final asymptotes nag|
-3269|44|3|3|39|36817.56|0.02|0.03|N|O|1996-03-13|1996-05-26|1996-03-19|COLLECT COD|MAIL|he express packages?|
-3269|83|4|4|37|36373.96|0.07|0.05|N|O|1996-06-14|1996-04-27|1996-07-07|NONE|MAIL|egular requests. carefully un|
-3269|93|7|5|42|41709.78|0.09|0.05|N|O|1996-03-19|1996-04-24|1996-04-18|COLLECT COD|TRUCK| the special packages. |
-3269|131|7|6|16|16498.08|0.01|0.08|N|O|1996-03-03|1996-04-06|1996-03-06|NONE|RAIL|s cajole. silent deposits are f|
-3270|35|1|1|11|10285.33|0.07|0.06|N|O|1997-07-29|1997-08-11|1997-08-05|TAKE BACK RETURN|AIR| solve at the regular deposits. |
-3270|38|4|2|44|41273.32|0.10|0.05|N|O|1997-07-20|1997-08-15|1997-08-04|DELIVER IN PERSON|SHIP| accounts. carefully even |
-3270|65|4|3|20|19301.20|0.01|0.02|N|O|1997-08-26|1997-07-31|1997-08-30|DELIVER IN PERSON|FOB|en accounts among the c|
-3270|189|10|4|29|31586.22|0.06|0.05|N|O|1997-07-01|1997-07-23|1997-07-10|TAKE BACK RETURN|MAIL|sly regular asymptotes. slyly dog|
-3270|34|10|5|32|29888.96|0.03|0.00|N|O|1997-09-23|1997-08-17|1997-09-27|NONE|REG AIR|promise carefully.|
-3270|57|5|6|29|27754.45|0.01|0.04|N|O|1997-08-22|1997-08-17|1997-09-06|COLLECT COD|RAIL|ptotes nag above the quickly bold deposits|
-3270|117|1|7|9|9153.99|0.06|0.08|N|O|1997-08-14|1997-08-11|1997-09-09|DELIVER IN PERSON|SHIP|ual packages|
-3271|57|9|1|30|28711.50|0.01|0.04|A|F|1992-01-16|1992-03-20|1992-01-17|DELIVER IN PERSON|AIR|r the unusual Tiresia|
-3271|54|5|2|18|17172.90|0.09|0.06|R|F|1992-05-01|1992-03-28|1992-05-29|DELIVER IN PERSON|FOB| packages eat around the furiously regul|
-3271|95|6|3|14|13931.26|0.05|0.01|A|F|1992-02-24|1992-02-14|1992-03-23|NONE|AIR|ending, even packa|
-3271|64|1|4|29|27957.74|0.07|0.04|A|F|1992-03-10|1992-02-05|1992-03-14|COLLECT COD|MAIL|lar instructions. carefully regular|
-3296|84|5|1|12|11808.96|0.06|0.07|R|F|1994-12-08|1994-12-14|1994-12-24|COLLECT COD|AIR|y about the slyly bold pinto bea|
-3296|149|8|2|31|32523.34|0.08|0.00|R|F|1995-01-26|1994-12-25|1995-02-16|NONE|REG AIR|ainst the furi|
-3296|185|6|3|29|31470.22|0.02|0.04|A|F|1995-01-12|1994-11-26|1995-02-06|DELIVER IN PERSON|SHIP|ss ideas are reg|
-3296|140|1|4|47|48886.58|0.06|0.00|A|F|1994-11-08|1994-12-20|1994-11-30|NONE|FOB|egular deposits. quic|
-3296|177|6|5|16|17234.72|0.06|0.02|R|F|1995-01-11|1994-12-27|1995-01-12|DELIVER IN PERSON|SHIP|kages cajole carefully |
-3296|197|1|6|40|43887.60|0.00|0.04|A|F|1994-12-28|1994-12-08|1995-01-13|COLLECT COD|REG AIR|ronic ideas across the|
-3296|36|2|7|6|5616.18|0.02|0.01|R|F|1995-01-03|1994-12-23|1995-01-27|TAKE BACK RETURN|AIR|carefully fur|
-3297|134|10|1|10|10341.30|0.10|0.04|A|F|1992-12-14|1993-01-21|1992-12-26|NONE|SHIP|ironic idea|
-3298|149|6|1|9|9442.26|0.01|0.06|N|O|1996-08-15|1996-05-24|1996-09-12|COLLECT COD|REG AIR|ly final accou|
-3298|186|7|2|27|29326.86|0.06|0.06|N|O|1996-07-10|1996-05-21|1996-07-15|DELIVER IN PERSON|FOB|lar packages. regular deposit|
-3298|29|2|3|25|23225.50|0.10|0.08|N|O|1996-06-30|1996-05-31|1996-07-23|COLLECT COD|SHIP|ly express f|
-3298|191|5|4|1|1091.19|0.10|0.03|N|O|1996-07-31|1996-05-23|1996-08-24|TAKE BACK RETURN|FOB|refully regular requ|
-3299|183|4|1|40|43327.20|0.03|0.02|A|F|1994-03-21|1994-03-23|1994-04-12|COLLECT COD|AIR|lyly even request|
-3300|129|4|1|3|3087.36|0.07|0.02|N|O|1995-11-01|1995-10-02|1995-11-20|NONE|REG AIR|g according to the dugouts. caref|
-3300|149|10|2|23|24130.22|0.02|0.02|N|O|1995-08-17|1995-09-03|1995-09-04|COLLECT COD|TRUCK|he fluffily final a|
-3301|169|8|1|45|48112.20|0.04|0.05|A|F|1994-11-19|1994-10-27|1994-11-24|TAKE BACK RETURN|FOB|nusual, final excuses after the entici|
-3302|36|2|1|45|42121.35|0.09|0.00|N|O|1996-01-24|1995-12-16|1996-02-13|COLLECT COD|FOB|counts use quickl|
-3303|184|5|1|25|27104.50|0.06|0.01|N|O|1998-03-25|1998-01-31|1998-04-12|NONE|SHIP|lly regular pi|
-3303|21|2|2|15|13815.30|0.04|0.06|N|O|1998-01-29|1998-01-22|1998-02-21|COLLECT COD|SHIP| detect sly|
-3303|99|10|3|37|36966.33|0.05|0.02|N|O|1998-02-16|1998-03-07|1998-02-18|TAKE BACK RETURN|TRUCK| carefully ironic asympt|
-3303|36|2|4|26|24336.78|0.09|0.00|N|O|1998-01-18|1998-03-11|1998-02-11|DELIVER IN PERSON|REG AIR|ickly permanent requests w|
-3328|113|7|1|6|6078.66|0.03|0.08|A|F|1993-03-07|1993-01-25|1993-03-29|COLLECT COD|TRUCK|ffily even instructions detect b|
-3328|5|2|2|23|20815.00|0.01|0.06|R|F|1993-01-12|1993-02-07|1993-01-30|TAKE BACK RETURN|MAIL|y. careful|
-3328|139|10|3|44|45721.72|0.05|0.00|R|F|1992-12-03|1992-12-19|1992-12-09|TAKE BACK RETURN|FOB|dly quickly final foxes? re|
-3328|95|9|4|42|41793.78|0.01|0.05|R|F|1992-11-24|1992-12-20|1992-12-06|DELIVER IN PERSON|AIR|ronic requests|
-3328|131|7|5|25|25778.25|0.05|0.00|R|F|1993-01-28|1993-01-04|1993-01-31|NONE|RAIL|e unusual, r|
-3329|138|4|1|36|37372.68|0.09|0.08|N|O|1995-08-06|1995-08-03|1995-08-14|DELIVER IN PERSON|TRUCK|ts at the re|
-3329|6|3|2|9|8154.00|0.00|0.02|N|O|1995-07-24|1995-08-02|1995-08-01|COLLECT COD|MAIL|lly final depo|
-3329|123|4|3|1|1023.12|0.04|0.08|N|O|1995-08-22|1995-09-28|1995-09-09|COLLECT COD|REG AIR|regular packages are carefull|
-3330|20|7|1|49|45080.98|0.05|0.01|R|F|1995-03-02|1995-03-03|1995-03-16|DELIVER IN PERSON|TRUCK|haggle carefully alongside of the bold r|
-3331|64|9|1|9|8676.54|0.08|0.07|A|F|1993-07-18|1993-07-03|1993-08-16|TAKE BACK RETURN|AIR|odolites. bold accounts|
-3331|21|2|2|38|34998.76|0.06|0.04|R|F|1993-07-24|1993-06-22|1993-08-23|NONE|AIR|ymptotes haggle across the ca|
-3331|3|10|3|26|23478.00|0.09|0.05|A|F|1993-08-05|1993-07-17|1993-08-29|DELIVER IN PERSON|MAIL|p asymptotes. carefully unusual in|
-3332|84|5|1|28|27554.24|0.10|0.02|R|F|1994-12-30|1995-01-16|1995-01-16|COLLECT COD|FOB|s against the carefully special multipl|
-3332|136|2|2|21|21758.73|0.08|0.04|R|F|1995-02-04|1995-01-08|1995-02-06|COLLECT COD|MAIL| quick packages sle|
-3332|134|5|3|27|27921.51|0.03|0.02|A|F|1994-12-10|1995-01-14|1994-12-11|TAKE BACK RETURN|FOB|ording to the slyly regula|
-3333|150|9|1|27|28354.05|0.06|0.08|A|F|1992-12-06|1992-10-26|1992-12-07|COLLECT COD|SHIP|s dazzle fluffil|
-3333|199|3|2|36|39570.84|0.08|0.07|R|F|1992-11-20|1992-11-06|1992-12-16|TAKE BACK RETURN|FOB|foxes sleep neve|
-3333|108|1|3|38|38307.80|0.05|0.05|A|F|1992-10-30|1992-11-03|1992-11-04|NONE|MAIL|ccounts promise bl|
-3333|113|4|4|49|49642.39|0.07|0.07|R|F|1992-10-02|1992-11-30|1992-10-12|DELIVER IN PERSON|MAIL|riously ironic r|
-3333|43|2|5|45|42436.80|0.07|0.08|A|F|1992-10-04|1992-11-08|1992-10-27|COLLECT COD|SHIP|dolites. quickly r|
-3334|187|8|1|20|21743.60|0.04|0.03|N|O|1996-05-21|1996-04-08|1996-05-26|TAKE BACK RETURN|AIR|uses nag furiously. instructions are ca|
-3334|190|1|2|7|7631.33|0.09|0.07|N|O|1996-04-28|1996-04-08|1996-05-25|NONE|SHIP|nts sublate slyly express pack|
-3335|105|10|1|13|13066.30|0.06|0.07|N|O|1996-01-20|1995-12-20|1996-02-09|COLLECT COD|REG AIR|out the special asymptotes|
-3335|31|2|2|44|40965.32|0.07|0.02|N|O|1996-01-05|1995-12-25|1996-01-18|DELIVER IN PERSON|SHIP|r packages cajole ac|
-3335|140|6|3|16|16642.24|0.01|0.06|N|O|1995-10-18|1995-12-08|1995-11-03|DELIVER IN PERSON|SHIP|g packages. carefully regular reque|
-3335|90|1|4|47|46534.23|0.10|0.03|N|O|1995-12-02|1995-11-19|1995-12-27|NONE|MAIL| quickly special ideas.|
-3360|174|4|1|31|33299.27|0.08|0.04|N|O|1998-04-24|1998-04-12|1998-05-23|COLLECT COD|REG AIR|quests. carefully even deposits wake acros|
-3360|91|3|2|29|28741.61|0.00|0.06|N|O|1998-04-15|1998-02-25|1998-05-13|TAKE BACK RETURN|FOB|press asymptotes. furiously final |
-3360|82|3|3|39|38301.12|0.08|0.03|N|O|1998-04-09|1998-04-20|1998-05-05|DELIVER IN PERSON|REG AIR|s. blithely express pinto bean|
-3360|117|7|4|29|29496.19|0.10|0.01|N|O|1998-05-19|1998-03-03|1998-06-09|TAKE BACK RETURN|FOB|hely gifts. spe|
-3360|58|6|5|4|3832.20|0.08|0.07|N|O|1998-02-27|1998-03-23|1998-03-28|COLLECT COD|SHIP|ly busy inst|
-3360|71|1|6|42|40784.94|0.04|0.01|N|O|1998-05-07|1998-04-18|1998-06-04|DELIVER IN PERSON|FOB|ages cajole. pending, |
-3361|144|5|1|6|6264.84|0.02|0.02|R|F|1992-10-02|1992-10-25|1992-10-05|DELIVER IN PERSON|FOB| packages sleep. furiously unus|
-3361|171|10|2|33|35348.61|0.01|0.02|R|F|1992-11-09|1992-10-15|1992-11-11|TAKE BACK RETURN|MAIL|uriously ironic accounts. ironic, ir|
-3361|191|5|3|31|33826.89|0.06|0.04|R|F|1992-08-29|1992-10-13|1992-09-08|NONE|FOB|ts. pending, regular accounts sleep fur|
-3362|22|5|1|14|12908.28|0.06|0.05|N|O|1995-08-01|1995-09-06|1995-08-22|NONE|FOB|even Tires|
-3362|195|6|2|41|44902.79|0.05|0.03|N|O|1995-10-31|1995-09-04|1995-11-17|COLLECT COD|REG AIR|ake alongside of the |
-3362|115|9|3|40|40604.40|0.05|0.06|N|O|1995-08-19|1995-10-17|1995-09-05|TAKE BACK RETURN|FOB|packages haggle furi|
-3362|2|7|4|3|2706.00|0.03|0.01|N|O|1995-08-26|1995-09-02|1995-09-17|NONE|SHIP|its cajole blithely excuses. de|
-3362|138|9|5|36|37372.68|0.06|0.00|N|O|1995-10-05|1995-08-28|1995-11-03|TAKE BACK RETURN|RAIL|es against the quickly permanent pint|
-3362|188|9|6|46|50056.28|0.09|0.05|N|O|1995-08-02|1995-10-12|1995-08-28|COLLECT COD|REG AIR|ly bold packages. regular deposits cajol|
-3363|10|3|1|42|38220.42|0.00|0.08|N|O|1995-11-09|1995-11-25|1995-11-15|TAKE BACK RETURN|RAIL| blithely final ideas nag after|
-3363|191|4|2|21|22914.99|0.08|0.08|N|O|1995-12-10|1995-10-28|1995-12-28|COLLECT COD|RAIL|he regular, brave deposits. f|
-3363|159|7|3|2|2118.30|0.01|0.07|N|O|1996-01-22|1995-12-01|1996-02-18|TAKE BACK RETURN|SHIP|uickly bold ide|
-3363|113|3|4|20|20262.20|0.07|0.06|N|O|1995-12-11|1995-11-15|1995-12-21|COLLECT COD|MAIL|carefully quiet excuses wake. sl|
-3363|200|4|5|4|4400.80|0.00|0.08|N|O|1995-10-30|1995-11-17|1995-11-22|COLLECT COD|FOB| ironic dependencie|
-3364|90|1|1|49|48514.41|0.03|0.05|N|O|1997-09-17|1997-08-23|1997-10-06|NONE|SHIP|d accounts? caref|
-3364|111|2|2|38|38422.18|0.02|0.02|N|O|1997-08-30|1997-09-12|1997-09-27|COLLECT COD|REG AIR| slyly express|
-3364|156|4|3|10|10561.50|0.00|0.01|N|O|1997-08-10|1997-08-24|1997-08-15|TAKE BACK RETURN|SHIP|g the accounts. final, busy accounts wi|
-3364|160|5|4|7|7421.12|0.10|0.05|N|O|1997-07-09|1997-08-01|1997-07-16|NONE|TRUCK|furiously regular ideas haggle furiously b|
-3364|81|2|5|3|2943.24|0.01|0.00|N|O|1997-10-19|1997-08-15|1997-10-28|TAKE BACK RETURN|TRUCK|c theodolites. blithely ir|
-3365|151|6|1|37|38892.55|0.02|0.08|R|F|1994-12-22|1995-02-07|1995-01-20|TAKE BACK RETURN|SHIP|requests. quickly pending instructions a|
-3365|167|2|2|37|39484.92|0.07|0.08|A|F|1994-11-24|1995-01-09|1994-11-27|NONE|REG AIR|oze blithely. furiously ironic theodolit|
-3365|115|6|3|13|13196.43|0.09|0.02|R|F|1995-02-25|1995-01-31|1995-03-16|NONE|RAIL|pths wake r|
-3365|176|4|4|49|52732.33|0.02|0.07|R|F|1995-01-03|1995-01-01|1995-01-18|COLLECT COD|MAIL|lyly unusual asymptotes. final|
-3365|16|3|5|2|1832.02|0.00|0.03|R|F|1995-02-04|1994-12-30|1995-03-06|TAKE BACK RETURN|FOB|es cajole fluffily pe|
-3365|126|5|6|24|24626.88|0.01|0.00|R|F|1995-02-27|1995-01-09|1995-03-27|DELIVER IN PERSON|REG AIR|into beans? carefully regula|
-3366|40|1|1|4|3760.16|0.07|0.01|N|O|1997-05-20|1997-06-25|1997-06-03|DELIVER IN PERSON|AIR| carefully about |
-3366|136|2|2|9|9325.17|0.00|0.08|N|O|1997-06-02|1997-07-05|1997-06-26|COLLECT COD|REG AIR|ackages sleep carefully across the bli|
-3367|41|10|1|27|25408.08|0.01|0.03|A|F|1993-04-13|1993-03-16|1993-04-26|NONE|RAIL|kly even instructions caj|
-3367|141|10|2|34|35398.76|0.04|0.08|A|F|1993-03-30|1993-02-23|1993-04-11|COLLECT COD|MAIL| accounts wake slyly |
-3367|120|7|3|38|38764.56|0.03|0.03|R|F|1993-03-13|1993-02-12|1993-03-31|NONE|RAIL|even packages sleep blithely slyly expr|
-3392|171|10|1|40|42846.80|0.01|0.01|N|O|1996-02-18|1995-12-16|1996-02-26|COLLECT COD|MAIL|ress instructions affix carefully. fur|
-3392|123|2|2|13|13300.56|0.09|0.02|N|O|1995-11-26|1996-01-17|1995-12-01|NONE|MAIL|across the fluffily bold deposits.|
-3392|127|10|3|34|34922.08|0.10|0.08|N|O|1996-01-20|1996-01-21|1996-01-24|DELIVER IN PERSON|MAIL|e carefully even braids. |
-3392|124|3|4|7|7168.84|0.08|0.05|N|O|1995-12-07|1996-01-09|1995-12-29|TAKE BACK RETURN|RAIL|as. express, final accounts dou|
-3393|117|7|1|16|16273.76|0.01|0.00|N|O|1995-07-17|1995-08-19|1995-08-04|COLLECT COD|TRUCK|uses. instructions after the blithely |
-3393|125|4|2|44|45105.28|0.08|0.04|N|O|1995-10-16|1995-08-05|1995-11-01|NONE|AIR|ld requests hag|
-3393|97|1|3|25|24927.25|0.07|0.02|N|O|1995-10-17|1995-08-12|1995-11-11|DELIVER IN PERSON|MAIL|ng excuses|
-3393|72|2|4|48|46659.36|0.06|0.06|N|O|1995-07-12|1995-09-15|1995-08-02|NONE|FOB| blithely final reques|
-3393|178|7|5|37|39892.29|0.07|0.02|N|O|1995-10-16|1995-08-19|1995-10-19|COLLECT COD|AIR|ss the slyly ironic pinto beans. ironic,|
-3393|62|7|6|17|16355.02|0.04|0.01|N|O|1995-08-15|1995-09-07|1995-09-10|COLLECT COD|MAIL|kly ironic deposits could|
-3394|155|6|1|33|34819.95|0.07|0.08|N|O|1996-08-07|1996-07-17|1996-09-02|TAKE BACK RETURN|SHIP|ideas alongside of th|
-3394|146|3|2|43|44984.02|0.08|0.03|N|O|1996-08-23|1996-07-20|1996-08-25|COLLECT COD|RAIL|hockey players. slyly regular requests afte|
-3394|88|9|3|26|25690.08|0.01|0.00|N|O|1996-08-08|1996-06-12|1996-09-05|TAKE BACK RETURN|RAIL|its use furiously. even, even account|
-3394|81|2|4|14|13735.12|0.08|0.00|N|O|1996-06-02|1996-07-02|1996-06-19|COLLECT COD|MAIL|e furiously final theodolites. furio|
-3394|127|8|5|30|30813.60|0.04|0.06|N|O|1996-05-12|1996-07-24|1996-05-19|COLLECT COD|REG AIR|t ideas according to the fluffily iro|
-3394|184|5|6|14|15178.52|0.05|0.05|N|O|1996-06-18|1996-06-24|1996-07-17|NONE|REG AIR|arefully regular do|
-3395|142|3|1|21|21884.94|0.03|0.06|R|F|1994-12-19|1995-01-13|1994-12-25|TAKE BACK RETURN|SHIP| careful dep|
-3395|36|2|2|38|35569.14|0.01|0.07|R|F|1995-01-13|1995-01-13|1995-01-25|COLLECT COD|SHIP| silent accounts are blithely|
-3395|43|4|3|43|40550.72|0.06|0.07|A|F|1994-12-13|1995-01-07|1994-12-14|COLLECT COD|AIR|ckages above the furiously regu|
-3395|122|1|4|39|39862.68|0.05|0.07|R|F|1994-12-03|1995-01-17|1994-12-10|NONE|AIR|riously unusual theodolites. fur|
-3396|128|7|1|34|34956.08|0.00|0.06|A|F|1994-05-30|1994-08-16|1994-06-11|NONE|AIR|. slyly unusual packages wak|
-3396|49|6|2|43|40808.72|0.03|0.08|A|F|1994-07-03|1994-08-09|1994-07-14|TAKE BACK RETURN|MAIL|cial packages cajole blithely around the |
-3396|138|4|3|9|9343.17|0.01|0.06|R|F|1994-07-01|1994-08-18|1994-07-21|DELIVER IN PERSON|AIR|usly special foxes. accounts wake careful|
-3396|75|3|4|32|31202.24|0.06|0.02|R|F|1994-08-07|1994-08-10|1994-09-05|COLLECT COD|TRUCK|osits are slyly. final, bold foxes s|
-3396|126|5|5|27|27705.24|0.02|0.01|A|F|1994-09-14|1994-07-26|1994-09-28|DELIVER IN PERSON|FOB| theodolites |
-3396|39|10|6|18|16902.54|0.10|0.00|A|F|1994-07-27|1994-06-26|1994-08-25|TAKE BACK RETURN|REG AIR|l requests haggle furiously along the fur|
-3396|198|2|7|31|34043.89|0.05|0.06|A|F|1994-06-07|1994-06-23|1994-06-19|TAKE BACK RETURN|REG AIR|l, express pinto beans. quic|
-3397|195|8|1|8|8761.52|0.07|0.01|A|F|1994-08-05|1994-08-11|1994-08-08|DELIVER IN PERSON|RAIL|y final foxes|
-3397|13|3|2|11|10043.11|0.00|0.07|A|F|1994-07-29|1994-09-18|1994-08-12|DELIVER IN PERSON|REG AIR|iously careful packages. s|
-3397|184|5|3|1|1084.18|0.07|0.05|R|F|1994-08-03|1994-07-30|1994-08-28|NONE|RAIL| regular packag|
-3397|86|7|4|33|32540.64|0.05|0.01|R|F|1994-09-04|1994-08-06|1994-09-22|COLLECT COD|RAIL|gular accounts. blithely re|
-3397|132|3|5|28|28899.64|0.05|0.05|R|F|1994-07-13|1994-08-26|1994-07-17|NONE|TRUCK|counts around the final reques|
-3398|173|4|1|1|1073.17|0.01|0.08|N|O|1996-11-22|1996-11-16|1996-12-09|COLLECT COD|MAIL| blithely final deposits.|
-3399|134|5|1|28|28955.64|0.09|0.05|N|O|1995-06-29|1995-05-19|1995-07-12|COLLECT COD|AIR|oggedly final theodolites grow. fi|
-3399|55|6|2|8|7640.40|0.01|0.05|A|F|1995-05-15|1995-04-19|1995-06-05|COLLECT COD|TRUCK|s use carefully carefully ir|
-3399|67|4|3|3|2901.18|0.03|0.00|N|F|1995-06-16|1995-04-04|1995-06-23|NONE|SHIP|hely pending dugouts |
-3399|14|5|4|21|19194.21|0.09|0.06|A|F|1995-03-12|1995-05-18|1995-03-28|TAKE BACK RETURN|MAIL|se final courts. exc|
-3424|181|2|1|39|42166.02|0.06|0.07|N|O|1996-11-03|1996-11-08|1996-11-23|DELIVER IN PERSON|MAIL|bits boost closely slyly p|
-3425|120|1|1|11|11221.32|0.03|0.08|N|O|1996-04-24|1996-05-29|1996-05-23|DELIVER IN PERSON|FOB|ckly final deposits use quickly?|
-3425|79|7|2|37|36225.59|0.06|0.03|N|O|1996-06-04|1996-05-09|1996-06-12|NONE|SHIP|as sleep carefully into the caref|
-3425|14|4|3|8|7312.08|0.06|0.08|N|O|1996-07-22|1996-06-07|1996-07-26|TAKE BACK RETURN|AIR|iously regular theodolites wake. s|
-3425|19|10|4|37|34003.37|0.04|0.01|N|O|1996-07-10|1996-05-10|1996-08-02|NONE|SHIP|ngside of the furiously thin dol|
-3425|79|9|5|48|46995.36|0.08|0.04|N|O|1996-04-14|1996-05-25|1996-04-23|TAKE BACK RETURN|AIR|uctions wake fluffily. care|
-3425|148|9|6|24|25155.36|0.05|0.04|N|O|1996-04-22|1996-06-24|1996-04-25|TAKE BACK RETURN|AIR|ajole blithely sl|
-3426|110|5|1|20|20202.20|0.05|0.04|N|O|1996-11-10|1996-12-24|1996-12-01|COLLECT COD|FOB|sits cajole blit|
-3426|14|4|2|19|17366.19|0.10|0.08|N|O|1996-11-02|1997-01-13|1996-11-15|DELIVER IN PERSON|RAIL|slyly special packages oug|
-3426|67|6|3|19|18374.14|0.08|0.05|N|O|1996-12-07|1996-12-15|1996-12-14|DELIVER IN PERSON|FOB|c accounts cajole carefu|
-3426|6|7|4|9|8154.00|0.09|0.05|N|O|1996-12-24|1997-01-14|1997-01-13|NONE|FOB|pecial theodolites haggle fluf|
-3426|49|6|5|31|29420.24|0.07|0.08|N|O|1996-11-11|1996-12-10|1996-12-10|DELIVER IN PERSON|SHIP| even sentiment|
-3427|54|5|1|41|39116.05|0.10|0.01|N|O|1997-09-11|1997-07-03|1997-10-04|COLLECT COD|RAIL|s the carefully|
-3427|189|10|2|24|26140.32|0.02|0.04|N|O|1997-07-01|1997-07-28|1997-07-30|NONE|SHIP|y bold, sly deposits. pendi|
-3427|139|5|3|40|41565.20|0.06|0.05|N|O|1997-06-12|1997-08-19|1997-06-23|COLLECT COD|MAIL|patterns cajole ca|
-3427|119|6|4|31|31592.41|0.08|0.04|N|O|1997-08-12|1997-07-26|1997-08-25|COLLECT COD|RAIL|s are carefull|
-3428|198|9|1|4|4392.76|0.00|0.03|N|O|1996-05-09|1996-06-13|1996-06-02|NONE|REG AIR|sly pending requests int|
-3428|118|9|2|35|35633.85|0.02|0.03|N|O|1996-05-01|1996-06-07|1996-05-20|COLLECT COD|TRUCK|ly regular pinto beans sleep|
-3428|136|7|3|47|48698.11|0.07|0.05|N|O|1996-04-16|1996-06-08|1996-05-05|NONE|REG AIR|y final pinto |
-3429|137|8|1|48|49782.24|0.06|0.02|N|O|1997-04-08|1997-03-09|1997-04-25|TAKE BACK RETURN|SHIP| haggle furiously ir|
-3429|59|7|2|15|14385.75|0.03|0.04|N|O|1997-02-04|1997-03-09|1997-03-01|TAKE BACK RETURN|TRUCK|beans are fu|
-3429|69|4|3|10|9690.60|0.05|0.07|N|O|1997-01-19|1997-02-22|1997-01-25|TAKE BACK RETURN|REG AIR|ackages. quickly e|
-3429|89|10|4|28|27694.24|0.10|0.07|N|O|1997-01-30|1997-03-18|1997-02-17|TAKE BACK RETURN|AIR|nstructions boost. thin|
-3429|165|6|5|45|47932.20|0.10|0.00|N|O|1997-04-21|1997-03-08|1997-05-05|COLLECT COD|REG AIR|ites poach a|
-3430|189|10|1|2|2178.36|0.07|0.06|R|F|1995-03-07|1995-01-28|1995-03-30|TAKE BACK RETURN|MAIL|sh furiously according to the evenly e|
-3430|81|2|2|32|31394.56|0.08|0.00|R|F|1995-01-17|1995-01-28|1995-02-06|NONE|TRUCK|egular instruction|
-3430|97|8|3|41|40880.69|0.06|0.04|R|F|1995-02-18|1995-02-21|1995-03-11|TAKE BACK RETURN|AIR|cuses. silent excuses h|
-3430|65|2|4|50|48253.00|0.01|0.00|R|F|1994-12-15|1995-03-03|1994-12-24|COLLECT COD|REG AIR|ironic theodolites. carefully regular pac|
-3430|95|9|5|5|4975.45|0.05|0.05|A|F|1995-04-02|1995-02-12|1995-04-08|DELIVER IN PERSON|FOB|even accounts haggle slyly bol|
-3430|171|10|6|15|16067.55|0.08|0.07|A|F|1995-02-01|1995-03-12|1995-02-04|COLLECT COD|SHIP|cajole around the accounts. qui|
-3430|52|7|7|23|21897.15|0.09|0.08|A|F|1995-03-06|1995-03-01|1995-03-10|COLLECT COD|MAIL|eas according to the|
-3431|180|8|1|41|44287.38|0.03|0.06|A|F|1993-09-26|1993-10-13|1993-10-22|NONE|AIR| sleep carefully ironically special|
-3456|111|8|1|34|34377.74|0.10|0.06|A|F|1993-08-29|1993-08-26|1993-09-07|TAKE BACK RETURN|SHIP|usy pinto beans b|
-3457|182|3|1|29|31383.22|0.03|0.02|R|F|1995-05-12|1995-07-13|1995-06-05|NONE|TRUCK|refully final excuses wake|
-3457|106|7|2|22|22134.20|0.06|0.01|N|O|1995-06-23|1995-06-16|1995-06-29|NONE|SHIP|packages nag furiously against|
-3457|109|2|3|7|7063.70|0.07|0.08|N|O|1995-08-14|1995-07-06|1995-08-18|COLLECT COD|SHIP| pending accounts along the|
-3457|1|2|4|24|21624.00|0.07|0.07|N|O|1995-08-03|1995-05-30|1995-08-14|TAKE BACK RETURN|REG AIR|tructions haggle alongsid|
-3457|109|4|5|42|42382.20|0.05|0.01|A|F|1995-06-12|1995-06-14|1995-06-14|COLLECT COD|MAIL|riously final instruc|
-3457|144|1|6|45|46986.30|0.08|0.01|N|O|1995-08-12|1995-07-18|1995-08-23|TAKE BACK RETURN|SHIP| packages. care|
-3457|167|4|7|9|9604.44|0.04|0.00|R|F|1995-05-29|1995-06-30|1995-06-12|DELIVER IN PERSON|FOB|quests. foxes sleep quickly|
-3458|133|4|1|48|49590.24|0.06|0.04|R|F|1995-03-17|1995-01-25|1995-03-28|TAKE BACK RETURN|AIR|iously pending dep|
-3458|50|3|2|46|43702.30|0.06|0.06|R|F|1995-03-08|1995-01-21|1995-03-10|TAKE BACK RETURN|SHIP|nod across the boldly even instruct|
-3458|143|4|3|36|37553.04|0.01|0.06|R|F|1995-04-20|1995-02-14|1995-05-09|TAKE BACK RETURN|REG AIR|s lose. blithely ironic requests boost|
-3458|16|10|4|16|14656.16|0.09|0.03|R|F|1995-03-01|1995-02-25|1995-03-06|TAKE BACK RETURN|AIR|s grow carefully. express, final grouc|
-3458|157|5|5|2|2114.30|0.09|0.03|A|F|1995-02-05|1995-02-01|1995-03-07|COLLECT COD|FOB|ironic packages haggle past the furiously |
-3458|142|1|6|6|6252.84|0.09|0.04|A|F|1995-03-10|1995-02-02|1995-03-23|TAKE BACK RETURN|AIR|dolites; regular theodolites cajole |
-3459|179|7|1|31|33454.27|0.06|0.01|A|F|1994-09-05|1994-10-20|1994-10-03|NONE|REG AIR|y regular pain|
-3459|130|9|2|30|30903.90|0.04|0.08|R|F|1994-11-22|1994-09-12|1994-12-11|NONE|REG AIR|nic theodolites; evenly i|
-3459|41|8|3|45|42346.80|0.04|0.05|A|F|1994-07-31|1994-09-09|1994-08-02|TAKE BACK RETURN|REG AIR|ntly speci|
-3459|69|10|4|10|9690.60|0.05|0.06|A|F|1994-10-06|1994-09-16|1994-11-03|TAKE BACK RETURN|REG AIR| furiously silent dolphi|
-3459|189|10|5|10|10891.80|0.02|0.02|R|F|1994-08-01|1994-10-17|1994-08-11|TAKE BACK RETURN|FOB|. blithely ironic pinto beans above|
-3460|11|1|1|40|36440.40|0.10|0.06|N|O|1995-12-28|1995-12-14|1996-01-02|NONE|REG AIR|odolites are slyly bold deposits|
-3460|74|4|2|3|2922.21|0.06|0.00|N|O|1996-01-19|1995-12-28|1996-01-31|COLLECT COD|AIR|er quickly |
-3460|35|1|3|40|37401.20|0.08|0.07|N|O|1995-10-29|1995-11-10|1995-11-24|TAKE BACK RETURN|REG AIR|o the even deposits|
-3460|95|8|4|50|49754.50|0.02|0.07|N|O|1996-01-30|1995-12-10|1996-02-06|DELIVER IN PERSON|SHIP|e slyly about the sly|
-3460|130|1|5|47|48416.11|0.08|0.05|N|O|1995-12-09|1995-11-12|1995-12-22|TAKE BACK RETURN|SHIP|es haggle slyly regular accounts. fi|
-3460|63|10|6|46|44300.76|0.03|0.07|N|O|1996-01-27|1996-01-01|1996-02-01|NONE|TRUCK|uses run among the carefully even deposits|
-3460|45|2|7|28|26461.12|0.00|0.01|N|O|1995-10-28|1995-11-13|1995-11-17|COLLECT COD|SHIP|inal, ironic instructions. carefully|
-3461|100|4|1|49|49004.90|0.06|0.06|A|F|1993-03-09|1993-04-16|1993-03-13|DELIVER IN PERSON|RAIL|ual request|
-3461|63|4|2|27|26002.62|0.06|0.06|A|F|1993-02-10|1993-03-02|1993-03-04|COLLECT COD|SHIP|ely unusual deposits. quickly ir|
-3461|39|5|3|44|41317.32|0.09|0.06|A|F|1993-05-20|1993-04-03|1993-05-27|COLLECT COD|RAIL| haggle quickly even ideas. fin|
-3461|95|7|4|41|40798.69|0.09|0.02|R|F|1993-02-19|1993-04-20|1993-02-21|NONE|TRUCK|heodolites. blithely ironi|
-3461|90|1|5|16|15841.44|0.08|0.06|A|F|1993-05-09|1993-04-29|1993-05-26|TAKE BACK RETURN|TRUCK| pending deposi|
-3461|167|2|6|24|25611.84|0.10|0.00|A|F|1993-06-01|1993-03-12|1993-06-20|TAKE BACK RETURN|MAIL|thely. carefully re|
-3462|151|3|1|4|4204.60|0.09|0.04|N|O|1997-06-12|1997-07-31|1997-06-16|COLLECT COD|RAIL|ackages. fu|
-3462|40|1|2|43|40421.72|0.08|0.03|N|O|1997-08-01|1997-07-18|1997-08-29|NONE|RAIL| carefully. final, final ideas sleep slyly|
-3462|129|4|3|6|6174.72|0.05|0.04|N|O|1997-06-02|1997-08-09|1997-06-30|NONE|RAIL|iously regular fo|
-3462|99|3|4|2|1998.18|0.09|0.07|N|O|1997-09-10|1997-08-08|1997-09-19|NONE|AIR|nic packages. even accounts alongside |
-3462|38|4|5|14|13132.42|0.01|0.02|N|O|1997-05-31|1997-07-05|1997-06-24|COLLECT COD|MAIL|yly. blithely bold theodolites wa|
-3463|61|10|1|45|43247.70|0.02|0.02|A|F|1993-10-30|1993-11-04|1993-11-08|DELIVER IN PERSON|FOB|nts are slyly |
-3463|98|1|2|43|42917.87|0.04|0.02|A|F|1993-10-28|1993-09-24|1993-11-03|DELIVER IN PERSON|FOB| across the |
-3488|160|5|1|1|1060.16|0.04|0.01|A|F|1995-03-06|1995-02-16|1995-03-23|DELIVER IN PERSON|FOB| final excuses. carefully even waters hagg|
-3488|104|9|2|48|48196.80|0.00|0.03|A|F|1995-03-29|1995-03-26|1995-04-28|COLLECT COD|SHIP|sly? final requests |
-3488|160|1|3|11|11661.76|0.03|0.08|R|F|1995-03-25|1995-02-08|1995-04-16|COLLECT COD|TRUCK|unusual re|
-3488|42|9|4|12|11304.48|0.05|0.07|R|F|1995-04-27|1995-02-16|1995-05-09|DELIVER IN PERSON|RAIL|e slyly; furiously final packages wak|
-3488|156|1|5|18|19010.70|0.09|0.06|A|F|1995-03-18|1995-03-19|1995-03-29|DELIVER IN PERSON|FOB|s the carefully r|
-3489|186|7|1|19|20637.42|0.09|0.05|A|F|1993-07-31|1993-10-26|1993-08-15|NONE|SHIP|c deposits alongside of the pending, fu|
-3489|29|4|2|46|42734.92|0.00|0.00|A|F|1993-08-02|1993-10-09|1993-08-10|TAKE BACK RETURN|TRUCK|xcuses? quickly stealthy dependenci|
-3490|92|6|1|43|42659.87|0.05|0.05|N|O|1997-08-04|1997-08-06|1997-08-14|TAKE BACK RETURN|SHIP|. even requests cajol|
-3490|86|7|2|50|49304.00|0.05|0.07|N|O|1997-06-27|1997-08-15|1997-06-28|NONE|RAIL| haggle carefu|
-3490|93|7|3|8|7944.72|0.10|0.04|N|O|1997-08-11|1997-07-25|1997-08-28|COLLECT COD|MAIL|inal deposits use furiousl|
-3491|154|2|1|28|29516.20|0.04|0.03|N|O|1998-09-29|1998-09-08|1998-10-23|COLLECT COD|FOB|ccounts. sly|
-3491|122|3|2|22|22486.64|0.08|0.02|N|O|1998-08-19|1998-08-22|1998-09-03|TAKE BACK RETURN|REG AIR| grow against the boldly pending pinto bea|
-3492|156|7|1|3|3168.45|0.02|0.08|R|F|1994-11-26|1994-12-28|1994-12-19|COLLECT COD|REG AIR|the deposits. carefully |
-3492|126|9|2|7|7182.84|0.04|0.00|R|F|1995-03-10|1995-01-03|1995-03-16|COLLECT COD|FOB|thely regular dolphi|
-3492|109|10|3|34|34309.40|0.05|0.06|A|F|1994-12-07|1994-12-29|1994-12-24|COLLECT COD|AIR| unusual requests. ir|
-3492|147|6|4|30|31414.20|0.02|0.06|A|F|1995-01-29|1995-01-02|1995-02-13|DELIVER IN PERSON|MAIL| detect furiously permanent, unusual accou|
-3492|122|1|5|47|48039.64|0.09|0.07|R|F|1995-03-24|1994-12-28|1995-03-29|NONE|REG AIR|deposits. quickly express |
-3492|22|7|6|47|43334.94|0.04|0.07|R|F|1994-12-12|1995-01-18|1994-12-26|COLLECT COD|RAIL|ronic instructions u|
-3493|93|6|1|31|30785.79|0.06|0.07|R|F|1993-10-22|1993-10-12|1993-11-07|DELIVER IN PERSON|REG AIR|ructions. slyly regular accounts across the|
-3493|132|3|2|10|10321.30|0.02|0.06|R|F|1993-08-27|1993-10-07|1993-09-23|COLLECT COD|TRUCK|hall have to integ|
-3494|117|1|1|40|40684.40|0.05|0.04|R|F|1993-07-10|1993-06-01|1993-07-25|TAKE BACK RETURN|TRUCK|lites haggle furiously about the fin|
-3494|75|6|2|23|22426.61|0.10|0.01|A|F|1993-06-19|1993-06-04|1993-07-14|NONE|FOB|osits nag |
-3494|198|2|3|40|43927.60|0.02|0.08|A|F|1993-05-30|1993-07-02|1993-06-20|TAKE BACK RETURN|MAIL|uests cajole blithely|
-3494|77|8|4|30|29312.10|0.04|0.03|R|F|1993-07-01|1993-06-08|1993-07-15|TAKE BACK RETURN|TRUCK|ns are quickly regular, |
-3495|28|3|1|20|18560.40|0.10|0.03|N|O|1996-04-24|1996-05-18|1996-05-01|TAKE BACK RETURN|RAIL|posits are carefully; forges cajole qui|
-3495|173|1|2|24|25756.08|0.05|0.02|N|O|1996-03-22|1996-04-10|1996-04-07|DELIVER IN PERSON|RAIL|ic, final pains along the even request|
-3495|199|10|3|16|17587.04|0.08|0.02|N|O|1996-03-30|1996-04-02|1996-04-12|TAKE BACK RETURN|AIR|y bold dependencies; blithely idle sautern|
-3520|28|1|1|30|27840.60|0.04|0.02|N|O|1997-11-11|1997-10-02|1997-12-06|COLLECT COD|SHIP|deas should solve blithely among the ironi|
-3520|167|4|2|38|40552.08|0.00|0.04|N|O|1997-08-14|1997-10-26|1997-09-09|NONE|RAIL|yly final packages according to the quickl|
-3520|106|9|3|5|5030.50|0.01|0.02|N|O|1997-11-13|1997-09-22|1997-12-09|NONE|MAIL|ly even ideas haggle |
-3520|64|5|4|41|39526.46|0.01|0.01|N|O|1997-08-06|1997-09-20|1997-08-20|TAKE BACK RETURN|AIR| carefully pendi|
-3520|163|10|5|35|37210.60|0.02|0.02|N|O|1997-09-16|1997-09-03|1997-09-24|DELIVER IN PERSON|FOB|s nag carefully. sometimes unusual account|
-3521|59|4|1|48|46034.40|0.09|0.03|A|F|1993-01-03|1992-12-31|1993-01-22|NONE|AIR|ses use. furiously express ideas wake f|
-3521|131|2|2|2|2062.26|0.05|0.06|R|F|1993-01-29|1992-12-20|1993-02-23|NONE|MAIL|refully duri|
-3521|178|8|3|38|40970.46|0.00|0.08|A|F|1993-02-15|1992-12-10|1993-03-10|COLLECT COD|FOB|ges hang q|
-3521|144|7|4|26|27147.64|0.02|0.08|R|F|1993-01-04|1993-01-20|1993-01-17|DELIVER IN PERSON|AIR|onic dependencies haggle. fur|
-3521|36|7|5|28|26208.84|0.10|0.01|A|F|1993-01-06|1993-01-22|1993-02-02|TAKE BACK RETURN|FOB|e slyly above the slyly final|
-3522|4|9|1|6|5424.00|0.08|0.03|A|F|1995-01-21|1994-12-09|1995-01-23|NONE|SHIP|tes snooze |
-3522|87|8|2|48|47379.84|0.00|0.03|R|F|1994-12-05|1994-10-30|1994-12-26|TAKE BACK RETURN|SHIP|ve the quickly special packages|
-3522|157|2|3|46|48628.90|0.09|0.02|A|F|1994-11-12|1994-11-30|1994-11-20|NONE|AIR|d the express, silent foxes. blit|
-3522|130|9|4|7|7210.91|0.10|0.02|A|F|1994-10-31|1994-11-19|1994-11-28|NONE|TRUCK|e stealthil|
-3522|50|9|5|27|25651.35|0.02|0.05|R|F|1994-11-29|1994-12-15|1994-12-08|COLLECT COD|REG AIR|ic tithes. car|
-3522|158|10|6|18|19046.70|0.01|0.03|A|F|1994-11-16|1994-10-29|1994-11-29|COLLECT COD|RAIL|sits wake carefully pen|
-3523|25|6|1|15|13875.30|0.06|0.02|N|O|1998-06-26|1998-05-22|1998-07-24|COLLECT COD|REG AIR|se slyly pending, sp|
-3523|133|9|2|4|4132.52|0.03|0.06|N|O|1998-05-08|1998-05-18|1998-05-25|TAKE BACK RETURN|MAIL|ts. final accounts detect furiously along |
-3523|50|7|3|24|22801.20|0.07|0.04|N|O|1998-08-02|1998-06-22|1998-08-27|COLLECT COD|FOB|ke according to the doggedly re|
-3523|192|4|4|36|39318.84|0.06|0.08|N|O|1998-05-26|1998-06-04|1998-06-25|DELIVER IN PERSON|SHIP|accounts. fluffily regu|
-3523|134|5|5|48|49638.24|0.00|0.01|N|O|1998-07-22|1998-06-25|1998-08-19|DELIVER IN PERSON|AIR| regular requests|
-3524|137|8|1|5|5185.65|0.01|0.04|R|F|1992-05-23|1992-07-25|1992-06-19|DELIVER IN PERSON|RAIL|ts whithout the bold depende|
-3524|143|6|2|17|17733.38|0.09|0.08|A|F|1992-09-01|1992-07-17|1992-09-05|DELIVER IN PERSON|FOB|g, final epitaphs about the pinto |
-3525|46|7|1|12|11352.48|0.01|0.03|N|O|1996-03-08|1996-03-18|1996-03-16|NONE|TRUCK|lar excuses wake carefull|
-3525|138|9|2|27|28029.51|0.03|0.03|N|O|1995-12-30|1996-01-23|1996-01-02|DELIVER IN PERSON|SHIP|y slyly special asymptotes|
-3525|75|5|3|31|30227.17|0.00|0.03|N|O|1996-03-08|1996-02-27|1996-03-13|COLLECT COD|TRUCK|he careful|
-3525|184|5|4|28|30357.04|0.03|0.02|N|O|1996-01-22|1996-02-08|1996-01-27|COLLECT COD|FOB| nag according |
-3526|98|9|1|11|10978.99|0.02|0.03|R|F|1995-05-23|1995-05-28|1995-05-24|NONE|TRUCK|ges. furiously regular d|
-3526|117|7|2|23|23393.53|0.03|0.04|A|F|1995-05-01|1995-05-31|1995-05-25|DELIVER IN PERSON|FOB|special, regular packages cajole. |
-3526|33|9|3|20|18660.60|0.05|0.08|N|F|1995-06-16|1995-04-26|1995-06-22|DELIVER IN PERSON|REG AIR|kages. bold, special requests detect sl|
-3527|102|7|1|47|47098.70|0.07|0.02|N|O|1997-07-14|1997-07-29|1997-07-21|DELIVER IN PERSON|RAIL|unts. express re|
-3527|26|9|2|33|30558.66|0.01|0.02|N|O|1997-09-25|1997-09-17|1997-10-12|NONE|FOB|kly alongside of |
-3527|162|7|3|50|53108.00|0.09|0.07|N|O|1997-07-17|1997-08-03|1997-07-29|DELIVER IN PERSON|SHIP|e even accounts was about th|
-3527|128|3|4|17|17478.04|0.02|0.05|N|O|1997-07-30|1997-09-01|1997-08-17|COLLECT COD|MAIL|ular instruction|
-3552|197|8|1|18|19749.42|0.01|0.07|N|O|1997-08-11|1997-07-14|1997-08-15|DELIVER IN PERSON|TRUCK|s deposits against the blithely unusual pin|
-3552|90|1|2|44|43563.96|0.01|0.00|N|O|1997-08-08|1997-06-15|1997-08-29|COLLECT COD|FOB|ns after the blithely reg|
-3552|161|6|3|36|38201.76|0.04|0.08|N|O|1997-06-29|1997-06-24|1997-07-21|COLLECT COD|TRUCK|ly regular theodolites. fin|
-3553|143|10|1|4|4172.56|0.05|0.01|R|F|1994-06-13|1994-07-10|1994-07-03|COLLECT COD|RAIL|olites boost bli|
-3553|65|4|2|26|25091.56|0.05|0.08|A|F|1994-08-06|1994-07-30|1994-08-23|DELIVER IN PERSON|MAIL|fily special p|
-3553|22|5|3|18|16596.36|0.04|0.03|A|F|1994-07-03|1994-06-30|1994-07-07|COLLECT COD|RAIL|. quickly ironic|
-3553|32|8|4|40|37281.20|0.06|0.00|A|F|1994-09-14|1994-06-26|1994-09-25|NONE|RAIL| slyly pending asymptotes against the furi|
-3553|157|2|5|36|38057.40|0.06|0.08|R|F|1994-08-12|1994-06-25|1994-09-06|DELIVER IN PERSON|TRUCK| realms. pending, bold theodolites |
-3554|175|5|1|32|34405.44|0.01|0.05|N|O|1995-09-28|1995-09-01|1995-10-07|NONE|RAIL|. blithely ironic t|
-3554|145|6|2|18|18812.52|0.03|0.00|N|O|1995-09-11|1995-08-12|1995-10-04|DELIVER IN PERSON|REG AIR| haggle. furiously fluffy requests ac|
-3554|192|3|3|41|44779.79|0.02|0.01|N|O|1995-07-13|1995-08-28|1995-07-27|DELIVER IN PERSON|MAIL|ent dependencies. sly|
-3555|166|3|1|11|11727.76|0.05|0.02|N|O|1996-09-25|1996-10-01|1996-10-03|NONE|FOB|oost caref|
-3555|79|10|2|15|14686.05|0.03|0.08|N|O|1996-07-13|1996-09-01|1996-08-02|TAKE BACK RETURN|RAIL|y across the pending a|
-3555|43|2|3|25|23576.00|0.09|0.07|N|O|1996-10-01|1996-08-23|1996-10-24|TAKE BACK RETURN|MAIL|sual packages. quickly |
-3555|5|6|4|19|17195.00|0.00|0.05|N|O|1996-09-08|1996-09-14|1996-10-01|COLLECT COD|REG AIR|leep special theodolit|
-3555|33|4|5|29|27057.87|0.07|0.04|N|O|1996-08-02|1996-09-04|1996-08-08|DELIVER IN PERSON|TRUCK|deas. carefully s|
-3555|28|3|6|33|30624.66|0.04|0.08|N|O|1996-09-20|1996-09-23|1996-10-05|TAKE BACK RETURN|AIR|fluffily regular a|
-3555|126|5|7|9|9235.08|0.07|0.02|N|O|1996-10-13|1996-10-02|1996-10-22|NONE|SHIP|are. slyly final foxes acro|
-3556|142|9|1|45|46896.30|0.05|0.06|A|F|1992-10-14|1992-12-21|1992-10-16|NONE|TRUCK|ckages boost quickl|
-3556|31|2|2|43|40034.29|0.02|0.06|R|F|1993-01-18|1992-11-09|1993-02-04|NONE|FOB|wake carefull|
-3556|87|8|3|28|27638.24|0.10|0.04|A|F|1993-01-06|1992-11-27|1993-01-16|NONE|MAIL|refully final instructions? ironic packa|
-3557|175|3|1|41|44081.97|0.01|0.07|R|F|1993-01-30|1992-12-31|1993-02-18|COLLECT COD|FOB|ideas breach c|
-3557|129|10|2|37|38077.44|0.03|0.05|R|F|1993-02-16|1993-01-05|1993-03-15|DELIVER IN PERSON|RAIL|gside of the ca|
-3558|87|8|1|8|7896.64|0.01|0.03|N|O|1996-05-31|1996-05-26|1996-06-25|COLLECT COD|AIR|? even requests sle|
-3558|10|7|2|28|25480.28|0.02|0.08|N|O|1996-06-02|1996-04-18|1996-06-24|COLLECT COD|TRUCK|l deposits |
-3558|187|8|3|3|3261.54|0.03|0.06|N|O|1996-05-19|1996-04-28|1996-05-26|DELIVER IN PERSON|RAIL|l, final deposits haggle. fina|
-3558|91|5|4|22|21803.98|0.06|0.03|N|O|1996-04-27|1996-04-19|1996-04-30|DELIVER IN PERSON|SHIP|refully ironic theodolites are fu|
-3558|29|8|5|38|35302.76|0.03|0.08|N|O|1996-05-29|1996-05-02|1996-06-09|COLLECT COD|RAIL|refully permanently iron|
-3558|72|1|6|17|16525.19|0.07|0.07|N|O|1996-03-14|1996-05-04|1996-04-05|NONE|RAIL|ithely unusual packa|
-3559|90|1|1|29|28712.61|0.00|0.07|R|F|1992-12-10|1992-12-03|1992-12-20|COLLECT COD|REG AIR|l, regular accounts wake flu|
-3584|11|8|1|4|3644.04|0.04|0.08|N|O|1997-08-16|1997-10-31|1997-08-28|DELIVER IN PERSON|TRUCK|nal packag|
-3584|160|8|2|23|24383.68|0.00|0.03|N|O|1997-09-10|1997-10-15|1997-09-30|COLLECT COD|TRUCK|l platelets until the asymptotes |
-3584|24|5|3|6|5544.12|0.03|0.06|N|O|1997-10-28|1997-11-09|1997-11-24|TAKE BACK RETURN|MAIL|deposits across the|
-3584|146|5|4|11|11507.54|0.06|0.02|N|O|1997-11-27|1997-10-15|1997-12-08|NONE|REG AIR|lithely slyly |
-3584|18|5|5|39|35802.39|0.09|0.07|N|O|1997-09-20|1997-10-31|1997-10-06|COLLECT COD|AIR|eposits. carefu|
-3585|122|1|1|21|21464.52|0.05|0.04|A|F|1994-12-04|1994-12-25|1995-01-01|TAKE BACK RETURN|TRUCK|ounts use. express, final platelets us|
-3585|19|10|2|40|36760.40|0.03|0.00|R|F|1995-01-22|1995-01-17|1995-02-07|TAKE BACK RETURN|RAIL|elets affix. even asymptotes play care|
-3585|112|2|3|11|11133.21|0.01|0.04|R|F|1995-01-04|1995-02-14|1995-01-15|NONE|MAIL|even packages|
-3585|48|1|4|33|31285.32|0.08|0.08|A|F|1994-12-14|1995-01-19|1994-12-22|NONE|RAIL|ironic dependencies serve furi|
-3585|25|8|5|13|12025.26|0.06|0.07|R|F|1995-03-15|1995-01-22|1995-03-17|DELIVER IN PERSON|AIR|ccording to the foxes. slyly iro|
-3585|94|7|6|7|6958.63|0.10|0.02|A|F|1994-12-13|1995-01-20|1995-01-05|TAKE BACK RETURN|TRUCK|dependencies sleep un|
-3585|42|1|7|45|42391.80|0.03|0.00|A|F|1995-01-20|1995-02-19|1995-02-11|DELIVER IN PERSON|MAIL|are blithely c|
-3586|194|7|1|2|2188.38|0.03|0.08|R|F|1994-02-10|1994-01-07|1994-03-03|DELIVER IN PERSON|RAIL|he even, unusual decoy|
-3586|84|5|2|29|28538.32|0.04|0.07|R|F|1994-03-06|1994-03-02|1994-03-13|DELIVER IN PERSON|RAIL| slyly unusual i|
-3586|58|3|3|2|1916.10|0.03|0.06|R|F|1994-03-22|1994-02-20|1994-04-08|NONE|REG AIR|unts. slyly final ideas agai|
-3586|84|5|4|33|32474.64|0.06|0.01|R|F|1994-01-24|1994-02-09|1994-02-07|NONE|TRUCK|refully across the fur|
-3586|108|1|5|8|8064.80|0.06|0.02|A|F|1994-03-29|1994-02-26|1994-04-02|NONE|FOB|theodolites hagg|
-3586|99|1|6|8|7992.72|0.09|0.01|A|F|1994-03-18|1994-01-17|1994-04-06|DELIVER IN PERSON|RAIL| ironic pinto beans cajole carefully theo|
-3586|123|4|7|33|33762.96|0.05|0.04|A|F|1994-02-11|1994-01-15|1994-03-03|NONE|REG AIR|iously regular pinto beans integrate|
-3587|197|10|1|5|5485.95|0.09|0.07|N|O|1996-09-03|1996-07-05|1996-09-11|DELIVER IN PERSON|SHIP|ithely regular decoys above the |
-3587|132|8|2|48|49542.24|0.00|0.03|N|O|1996-08-02|1996-07-02|1996-08-05|TAKE BACK RETURN|MAIL|beans. blithely final depe|
-3587|151|3|3|36|37841.40|0.05|0.05|N|O|1996-07-26|1996-06-16|1996-08-23|TAKE BACK RETURN|MAIL|ully regular excuse|
-3587|124|9|4|31|31747.72|0.03|0.01|N|O|1996-07-21|1996-07-01|1996-07-23|COLLECT COD|SHIP|press fluffily regul|
-3587|70|7|5|12|11640.84|0.06|0.03|N|O|1996-08-30|1996-07-04|1996-09-22|DELIVER IN PERSON|RAIL|g the even pinto beans. special,|
-3587|107|2|6|16|16113.60|0.01|0.03|N|O|1996-05-11|1996-06-19|1996-06-04|COLLECT COD|FOB|y ruthless dolphins to |
-3587|74|2|7|23|22403.61|0.07|0.05|N|O|1996-08-30|1996-07-01|1996-09-10|COLLECT COD|FOB|l multipliers sleep theodolites-- slyly |
-3588|91|5|1|28|27750.52|0.04|0.08|R|F|1995-05-03|1995-05-03|1995-05-14|DELIVER IN PERSON|TRUCK|special pinto beans cajole slyly. slyly |
-3588|88|9|2|6|5928.48|0.06|0.08|A|F|1995-04-09|1995-05-30|1995-04-10|TAKE BACK RETURN|MAIL|s. fluffily fluf|
-3588|159|10|3|45|47661.75|0.04|0.02|R|F|1995-05-07|1995-05-04|1995-05-28|TAKE BACK RETURN|TRUCK|ecial pains integrate blithely. reques|
-3588|127|10|4|22|22596.64|0.05|0.00|A|F|1995-04-08|1995-05-06|1995-04-27|NONE|RAIL|inal accounts. pending, bo|
-3588|55|3|5|28|26741.40|0.03|0.03|A|F|1995-04-23|1995-05-25|1995-04-28|DELIVER IN PERSON|TRUCK| express sheaves. unusual theodo|
-3588|110|3|6|37|37374.07|0.08|0.04|N|F|1995-06-17|1995-05-25|1995-06-24|TAKE BACK RETURN|RAIL|xcuses sleep quickly along th|
-3588|39|5|7|46|43195.38|0.08|0.07|A|F|1995-06-06|1995-05-08|1995-06-08|NONE|AIR| slyly ironic deposits sublate ab|
-3589|37|3|1|42|39355.26|0.08|0.08|R|F|1994-08-11|1994-07-17|1994-08-23|DELIVER IN PERSON|AIR|he blithely unusual pac|
-3590|176|6|1|10|10761.70|0.08|0.00|N|O|1995-07-17|1995-06-26|1995-08-12|TAKE BACK RETURN|SHIP|t the quickly ironic|
-3590|95|6|2|19|18906.71|0.03|0.03|N|O|1995-08-02|1995-06-20|1995-08-08|NONE|SHIP|special pinto beans. blithely reg|
-3590|96|9|3|43|42831.87|0.07|0.06|N|O|1995-07-12|1995-07-25|1995-07-16|DELIVER IN PERSON|SHIP|s could have to use|
-3590|56|8|4|26|24857.30|0.01|0.03|N|O|1995-07-08|1995-06-17|1995-08-02|DELIVER IN PERSON|SHIP|arefully along th|
-3590|191|2|5|37|40374.03|0.00|0.08|N|O|1995-09-01|1995-06-29|1995-09-10|NONE|SHIP|ccounts above the silent waters thrash f|
-3590|119|10|6|31|31592.41|0.03|0.01|N|O|1995-06-24|1995-07-12|1995-06-25|DELIVER IN PERSON|REG AIR|ve furiously final instructions. slyly regu|
-3590|194|7|7|44|48144.36|0.05|0.04|N|F|1995-06-07|1995-06-15|1995-06-27|NONE|MAIL|s sleep after the regular platelets. blit|
-3591|29|8|1|21|19509.42|0.03|0.03|A|F|1994-02-25|1994-02-02|1994-03-05|DELIVER IN PERSON|TRUCK|structions against |
-3591|69|6|2|24|23257.44|0.04|0.04|R|F|1993-12-26|1994-01-07|1994-01-25|COLLECT COD|FOB|ages. slyly regular dependencies cajo|
-3591|164|9|3|4|4256.64|0.01|0.03|A|F|1994-04-04|1994-02-19|1994-05-02|DELIVER IN PERSON|RAIL|he final packages. deposits serve quick|
-3591|153|4|4|49|51604.35|0.01|0.00|A|F|1994-03-21|1994-01-26|1994-03-28|COLLECT COD|AIR| mold slyly. bl|
-3616|197|9|1|30|32915.70|0.01|0.00|A|F|1994-05-05|1994-04-24|1994-05-12|TAKE BACK RETURN|FOB|ly ironic accounts unwind b|
-3616|138|9|2|28|29067.64|0.08|0.06|R|F|1994-02-20|1994-04-18|1994-03-05|DELIVER IN PERSON|REG AIR|ironic packages. furiously ev|
-3617|117|8|1|46|46787.06|0.03|0.02|N|O|1996-05-19|1996-05-14|1996-06-11|NONE|RAIL|ar theodolites. regu|
-3617|98|9|2|16|15969.44|0.05|0.02|N|O|1996-05-08|1996-06-03|1996-05-19|COLLECT COD|RAIL| slyly on th|
-3617|98|2|3|32|31938.88|0.00|0.06|N|O|1996-04-20|1996-06-07|1996-05-19|DELIVER IN PERSON|MAIL|uriously against the express accounts. ex|
-3617|41|10|4|22|20702.88|0.10|0.05|N|O|1996-07-11|1996-05-02|1996-07-25|NONE|REG AIR|uffily even accounts. packages sleep blithe|
-3617|137|8|5|11|11408.43|0.08|0.05|N|O|1996-07-16|1996-04-23|1996-07-28|COLLECT COD|MAIL|ly quickly even requests. final|
-3618|140|1|1|38|39525.32|0.08|0.00|N|O|1997-12-22|1998-02-23|1998-01-03|TAKE BACK RETURN|TRUCK|nts haggle fluffily above the regular |
-3618|144|5|2|48|50118.72|0.04|0.00|N|O|1998-03-12|1998-02-13|1998-03-29|DELIVER IN PERSON|TRUCK|tructions atop the ironi|
-3618|63|2|3|24|23113.44|0.01|0.04|N|O|1998-01-26|1998-01-15|1998-02-17|TAKE BACK RETURN|AIR|xpress acc|
-3618|161|2|4|26|27590.16|0.01|0.05|N|O|1998-03-23|1998-01-24|1998-04-15|DELIVER IN PERSON|AIR|iously regular deposits cajole ruthless|
-3619|96|7|1|49|48808.41|0.01|0.08|N|O|1997-01-22|1996-12-21|1997-02-17|TAKE BACK RETURN|MAIL| waters. furiously even deposits |
-3619|116|10|2|27|27434.97|0.08|0.04|N|O|1996-12-12|1997-01-18|1996-12-18|TAKE BACK RETURN|SHIP|pecial accounts haggle care|
-3619|48|7|3|46|43609.84|0.08|0.03|N|O|1997-01-31|1997-01-27|1997-02-11|NONE|SHIP|press, expres|
-3619|93|6|4|18|17875.62|0.04|0.02|N|O|1997-03-18|1996-12-24|1997-03-21|COLLECT COD|AIR|eodolites |
-3619|120|10|5|38|38764.56|0.05|0.08|N|O|1996-12-08|1997-02-03|1997-01-07|NONE|RAIL|theodolites detect abo|
-3619|152|3|6|43|45242.45|0.01|0.01|N|O|1997-01-25|1997-01-06|1997-02-07|COLLECT COD|RAIL| bold, even|
-3620|59|7|1|41|39321.05|0.03|0.08|N|O|1997-03-21|1997-04-20|1997-03-30|COLLECT COD|FOB|t attainments cajole qui|
-3620|167|4|2|16|17074.56|0.00|0.06|N|O|1997-05-17|1997-05-08|1997-06-03|COLLECT COD|SHIP|s. even, pending in|
-3621|17|8|1|29|26593.29|0.02|0.06|A|F|1993-08-03|1993-07-08|1993-08-10|DELIVER IN PERSON|FOB|al requests. fl|
-3621|93|5|2|13|12910.17|0.09|0.04|R|F|1993-08-30|1993-06-30|1993-09-01|NONE|REG AIR|r the unusual packages. brave theodoli|
-3621|164|9|3|45|47887.20|0.07|0.07|R|F|1993-08-09|1993-06-18|1993-09-05|DELIVER IN PERSON|AIR| doubt about the bold deposits. carefully|
-3621|44|3|4|20|18880.80|0.05|0.04|R|F|1993-05-27|1993-07-04|1993-06-22|TAKE BACK RETURN|SHIP|gular accounts use carefully with|
-3622|175|6|1|47|50532.99|0.09|0.00|N|O|1996-02-24|1996-02-22|1996-03-12|TAKE BACK RETURN|TRUCK|are careful|
-3622|89|10|2|4|3956.32|0.04|0.04|N|O|1996-02-03|1996-02-19|1996-02-16|TAKE BACK RETURN|TRUCK|lithely brave foxes. furi|
-3622|190|1|3|46|50148.74|0.07|0.07|N|O|1995-12-18|1996-01-23|1996-01-12|TAKE BACK RETURN|AIR|sits wake. blithe|
-3622|177|8|4|9|9694.53|0.08|0.05|N|O|1995-12-12|1996-02-09|1995-12-13|TAKE BACK RETURN|SHIP|arefully. furiously regular ideas n|
-3623|80|10|1|32|31362.56|0.05|0.00|N|O|1997-04-18|1997-03-15|1997-05-09|COLLECT COD|SHIP| courts. furiously regular ideas b|
-3623|117|4|2|33|33564.63|0.08|0.01|N|O|1997-03-17|1997-02-13|1997-04-02|TAKE BACK RETURN|TRUCK|odolites. blithely spe|
-3623|24|7|3|21|19404.42|0.02|0.02|N|O|1997-01-19|1997-03-18|1997-01-24|NONE|FOB|ress ideas are furio|
-3623|165|2|4|42|44736.72|0.05|0.06|N|O|1997-01-11|1997-03-24|1997-01-21|COLLECT COD|RAIL|g to the slyly regular packa|
-3623|88|9|5|30|29642.40|0.10|0.04|N|O|1997-04-04|1997-03-03|1997-05-01|NONE|RAIL| ironic somas sleep fluffily|
-3623|186|7|6|7|7603.26|0.01|0.02|N|O|1997-01-05|1997-03-26|1997-01-26|NONE|TRUCK|aves. slyly special packages cajole. fu|
-3623|140|6|7|13|13521.82|0.03|0.08|N|O|1997-01-02|1997-02-26|1997-01-26|DELIVER IN PERSON|SHIP|deas. furiously expres|
-3648|144|5|1|16|16706.24|0.02|0.06|A|F|1993-08-14|1993-08-14|1993-08-15|COLLECT COD|FOB|s nag packages.|
-3648|105|2|2|30|30153.00|0.00|0.01|R|F|1993-08-31|1993-09-06|1993-09-06|DELIVER IN PERSON|FOB| above the somas boost furious|
-3648|46|7|3|34|32165.36|0.10|0.00|A|F|1993-08-21|1993-07-25|1993-09-15|DELIVER IN PERSON|FOB| deposits are furiously. careful, |
-3648|13|10|4|16|14608.16|0.06|0.03|R|F|1993-07-27|1993-08-26|1993-08-24|DELIVER IN PERSON|FOB|uriously stealthy deposits haggle furi|
-3648|117|7|5|25|25427.75|0.06|0.03|R|F|1993-08-15|1993-08-25|1993-09-09|TAKE BACK RETURN|TRUCK|s requests. silent asymp|
-3648|169|10|6|14|14968.24|0.08|0.06|R|F|1993-10-02|1993-08-26|1993-10-09|COLLECT COD|AIR|sly pending excuses. carefully i|
-3648|195|6|7|49|53664.31|0.09|0.03|R|F|1993-06-27|1993-07-27|1993-07-24|TAKE BACK RETURN|FOB|egular instructions. slyly regular pinto|
-3649|5|6|1|25|22625.00|0.10|0.04|A|F|1994-10-27|1994-08-23|1994-11-05|TAKE BACK RETURN|TRUCK|special re|
-3649|89|10|2|23|22748.84|0.08|0.00|R|F|1994-09-26|1994-10-01|1994-09-28|NONE|REG AIR|rs promise blithe|
-3649|70|7|3|14|13580.98|0.02|0.04|A|F|1994-09-19|1994-08-17|1994-10-12|DELIVER IN PERSON|TRUCK|ithely bold accounts wake |
-3649|76|4|4|40|39042.80|0.00|0.08|R|F|1994-07-20|1994-08-30|1994-08-14|TAKE BACK RETURN|RAIL|luffy somas sleep quickly-- ironic de|
-3649|100|1|5|24|24002.40|0.05|0.03|A|F|1994-07-07|1994-08-20|1994-07-27|TAKE BACK RETURN|FOB|c accounts. quickly final theodo|
-3649|122|3|6|3|3066.36|0.10|0.04|A|F|1994-07-17|1994-08-10|1994-08-03|NONE|FOB|lly bold requests nag; |
-3650|136|2|1|30|31083.90|0.10|0.00|A|F|1992-08-26|1992-07-05|1992-09-01|DELIVER IN PERSON|SHIP|ckly special platelets. furiously sil|
-3650|128|9|2|43|44209.16|0.05|0.05|A|F|1992-09-07|1992-08-12|1992-09-10|COLLECT COD|TRUCK|gside of the quick|
-3650|2|9|3|1|902.00|0.04|0.06|A|F|1992-06-23|1992-07-18|1992-07-08|NONE|REG AIR|re about the pinto |
-3650|63|2|4|31|29854.86|0.10|0.08|R|F|1992-06-15|1992-07-01|1992-07-15|DELIVER IN PERSON|RAIL| against the ironic accounts cajol|
-3650|187|8|5|19|20656.42|0.05|0.04|R|F|1992-08-29|1992-08-09|1992-09-21|DELIVER IN PERSON|AIR|y even forges. fluffily furious accounts|
-3650|94|8|6|27|26840.43|0.07|0.08|A|F|1992-07-03|1992-07-23|1992-07-13|COLLECT COD|MAIL|ular requests snooze fluffily regular pi|
-3650|70|7|7|43|41713.01|0.10|0.07|A|F|1992-06-25|1992-07-09|1992-07-22|DELIVER IN PERSON|RAIL|structions use caref|
-3651|19|9|1|20|18380.20|0.01|0.04|N|O|1998-06-10|1998-06-06|1998-06-23|NONE|SHIP|tect quickly among the r|
-3651|155|7|2|24|25323.60|0.09|0.04|N|O|1998-06-22|1998-07-17|1998-07-10|DELIVER IN PERSON|RAIL|excuses haggle according to th|
-3651|113|10|3|41|41537.51|0.00|0.05|N|O|1998-05-10|1998-07-09|1998-05-13|NONE|RAIL|blithely. furiously |
-3651|110|5|4|27|27272.97|0.05|0.03|N|O|1998-05-03|1998-06-30|1998-05-05|DELIVER IN PERSON|RAIL| sleep blithely furiously do|
-3652|180|8|1|24|25924.32|0.05|0.03|N|O|1997-06-07|1997-04-07|1997-06-12|COLLECT COD|MAIL|the final p|
-3652|137|8|2|37|38373.81|0.02|0.05|N|O|1997-05-11|1997-04-06|1997-06-05|COLLECT COD|MAIL|osits haggle carefu|
-3652|163|8|3|39|41463.24|0.01|0.02|N|O|1997-03-10|1997-04-03|1997-03-21|NONE|REG AIR|y express instructions. un|
-3652|80|9|4|1|980.08|0.01|0.04|N|O|1997-04-20|1997-05-03|1997-05-18|DELIVER IN PERSON|SHIP| bold dependencies sublate. r|
-3653|145|4|1|38|39715.32|0.08|0.05|A|F|1994-06-26|1994-05-13|1994-07-13|NONE|REG AIR|ainst the |
-3653|64|1|2|29|27957.74|0.07|0.01|A|F|1994-04-11|1994-06-11|1994-04-29|COLLECT COD|RAIL|ording to the special, final|
-3653|181|2|3|17|18380.06|0.09|0.03|R|F|1994-06-24|1994-06-02|1994-07-17|DELIVER IN PERSON|RAIL|gle slyly regular|
-3653|186|7|4|9|9775.62|0.10|0.07|R|F|1994-04-03|1994-05-19|1994-04-10|COLLECT COD|FOB|slyly silent account|
-3653|188|9|5|41|44615.38|0.08|0.01|A|F|1994-06-18|1994-05-18|1994-06-20|COLLECT COD|RAIL|onic packages affix sly|
-3653|43|4|6|9|8487.36|0.05|0.03|A|F|1994-07-21|1994-05-31|1994-08-17|NONE|MAIL|tes: blithely bo|
-3653|49|6|7|2|1898.08|0.06|0.03|R|F|1994-06-02|1994-05-31|1994-06-29|NONE|FOB|n accounts. fina|
-3654|165|2|1|46|48997.36|0.08|0.05|A|F|1992-06-05|1992-08-19|1992-06-06|DELIVER IN PERSON|FOB|usly regular foxes. furio|
-3654|93|4|2|29|28799.61|0.07|0.06|A|F|1992-09-11|1992-07-20|1992-10-04|DELIVER IN PERSON|FOB|odolites detect. quickly r|
-3654|2|7|3|37|33374.00|0.07|0.05|A|F|1992-09-22|1992-07-20|1992-10-19|TAKE BACK RETURN|RAIL|unts doze bravely ab|
-3654|168|9|4|11|11749.76|0.08|0.00|A|F|1992-07-20|1992-07-30|1992-07-23|TAKE BACK RETURN|SHIP|quickly along the express, ironic req|
-3654|94|5|5|34|33799.06|0.04|0.00|R|F|1992-07-26|1992-08-26|1992-08-12|TAKE BACK RETURN|REG AIR| the quick|
-3654|107|4|6|20|20142.00|0.03|0.02|A|F|1992-07-30|1992-07-05|1992-08-05|COLLECT COD|SHIP|s sleep about the slyly |
-3654|173|1|7|45|48292.65|0.01|0.07|A|F|1992-09-15|1992-07-04|1992-09-20|DELIVER IN PERSON|FOB|sly ironic notornis nag slyly|
-3655|184|5|1|5|5420.90|0.03|0.04|R|F|1993-01-17|1992-12-31|1993-01-23|DELIVER IN PERSON|TRUCK|riously bold pinto be|
-3655|97|10|2|1|997.09|0.10|0.06|R|F|1992-10-24|1992-12-18|1992-11-07|DELIVER IN PERSON|AIR|arefully slow pinto beans are|
-3655|30|5|3|35|32551.05|0.01|0.04|R|F|1992-12-20|1992-11-16|1993-01-15|TAKE BACK RETURN|MAIL|blithely even accounts! furiously regular|
-3655|72|3|4|35|34022.45|0.04|0.07|R|F|1992-10-17|1992-12-23|1992-10-28|COLLECT COD|MAIL|ng foxes cajole fluffily slyly final fo|
-3680|177|6|1|48|51704.16|0.00|0.06|R|F|1993-01-16|1993-01-23|1993-01-19|COLLECT COD|FOB|packages. quickly fluff|
-3680|5|8|2|41|37105.00|0.00|0.04|A|F|1993-01-06|1993-03-02|1993-01-08|NONE|FOB|iously ironic platelets in|
-3680|56|4|3|33|31549.65|0.09|0.08|R|F|1993-03-16|1993-02-19|1993-04-05|NONE|FOB|ts. ironic, fina|
-3681|106|9|1|35|35213.50|0.03|0.08|R|F|1992-07-31|1992-05-18|1992-08-07|COLLECT COD|FOB|lyly special pinto |
-3682|61|10|1|6|5766.36|0.07|0.02|N|O|1997-05-06|1997-04-04|1997-05-11|NONE|AIR|ronic deposits wake slyly. ca|
-3682|116|7|2|18|18289.98|0.06|0.06|N|O|1997-04-30|1997-03-21|1997-05-10|NONE|FOB|regular dependencies|
-3682|47|10|3|17|16099.68|0.03|0.05|N|O|1997-02-12|1997-04-04|1997-02-22|COLLECT COD|FOB|, ironic packages wake a|
-3682|57|5|4|30|28711.50|0.09|0.05|N|O|1997-04-16|1997-04-16|1997-04-29|NONE|MAIL|he requests cajole quickly pending package|
-3683|101|4|1|35|35038.50|0.05|0.03|A|F|1993-05-31|1993-04-17|1993-06-14|NONE|SHIP| the furiously expr|
-3683|49|8|2|41|38910.64|0.01|0.06|A|F|1993-03-26|1993-05-06|1993-04-09|NONE|TRUCK|ress instructions. slyly express a|
-3683|100|3|3|23|23002.30|0.00|0.08|R|F|1993-07-02|1993-05-16|1993-07-30|NONE|TRUCK|xpress accounts sleep slyly re|
-3684|126|7|1|48|49253.76|0.04|0.06|A|F|1993-08-20|1993-09-02|1993-09-10|DELIVER IN PERSON|REG AIR|its boost alongside|
-3684|46|7|2|6|5676.24|0.06|0.08|R|F|1993-08-09|1993-10-05|1993-09-06|DELIVER IN PERSON|FOB|he silent requests. packages sleep fu|
-3684|163|8|3|19|20200.04|0.04|0.02|A|F|1993-10-19|1993-08-25|1993-11-02|COLLECT COD|FOB|e slyly carefully pending foxes. d|
-3684|135|1|4|13|13456.69|0.02|0.05|A|F|1993-07-23|1993-09-16|1993-08-06|NONE|TRUCK|ing, unusual pinto beans! thinly p|
-3685|47|4|1|37|35040.48|0.02|0.03|R|F|1992-03-11|1992-04-09|1992-04-05|DELIVER IN PERSON|TRUCK|ress attai|
-3685|58|6|2|7|6706.35|0.05|0.00|R|F|1992-05-16|1992-02-23|1992-05-17|DELIVER IN PERSON|FOB|sits. special asymptotes about the r|
-3685|134|5|3|38|39296.94|0.08|0.03|A|F|1992-05-17|1992-03-16|1992-06-06|TAKE BACK RETURN|TRUCK|thely unusual pack|
-3685|192|5|4|39|42595.41|0.10|0.05|R|F|1992-02-19|1992-04-06|1992-03-02|COLLECT COD|FOB|ic courts nag carefully after the |
-3685|56|7|5|37|35373.85|0.00|0.01|A|F|1992-03-02|1992-04-10|1992-03-04|NONE|FOB|. carefully sly requests are regular, regu|
-3686|122|5|1|7|7154.84|0.02|0.04|N|O|1998-07-15|1998-08-22|1998-07-30|DELIVER IN PERSON|TRUCK| furiously unusual accou|
-3686|200|2|2|38|41807.60|0.06|0.03|N|O|1998-09-04|1998-08-11|1998-09-19|DELIVER IN PERSON|AIR|y silent foxes! carefully ruthless cour|
-3686|45|6|3|31|29296.24|0.10|0.06|N|O|1998-09-09|1998-08-28|1998-10-09|COLLECT COD|MAIL|gle across the courts. furiously regu|
-3686|117|1|4|7|7119.77|0.10|0.01|N|O|1998-07-16|1998-09-02|1998-07-22|NONE|FOB|ake carefully carefully q|
-3687|145|4|1|32|33444.48|0.03|0.06|R|F|1993-05-07|1993-04-05|1993-05-25|DELIVER IN PERSON|AIR|deas cajole fo|
-3687|81|2|2|2|1962.16|0.00|0.08|R|F|1993-02-23|1993-03-25|1993-03-11|NONE|TRUCK| express requests. slyly regular depend|
-3687|174|4|3|10|10741.70|0.01|0.02|A|F|1993-02-11|1993-03-22|1993-03-09|NONE|FOB|ing pinto beans|
-3687|162|9|4|19|20181.04|0.02|0.05|A|F|1993-05-14|1993-04-24|1993-06-01|DELIVER IN PERSON|MAIL|ly final asymptotes according to t|
-3687|119|9|5|31|31592.41|0.07|0.08|A|F|1993-05-28|1993-03-20|1993-06-05|DELIVER IN PERSON|FOB|foxes cajole quickly about the furiously f|
-3712|141|4|1|27|28110.78|0.01|0.05|R|F|1992-02-01|1992-02-26|1992-03-02|TAKE BACK RETURN|SHIP|ctions. even accounts haggle alongside |
-3712|185|6|2|13|14107.34|0.03|0.03|R|F|1992-04-30|1992-02-11|1992-05-30|DELIVER IN PERSON|FOB|s around the furiously ironic account|
-3712|64|1|3|44|42418.64|0.01|0.01|A|F|1992-03-26|1992-02-19|1992-04-18|TAKE BACK RETURN|FOB|ously permanently regular req|
-3712|148|7|4|38|39829.32|0.01|0.06|A|F|1992-01-15|1992-03-24|1992-01-27|COLLECT COD|RAIL|s nag carefully-- even, reg|
-3713|112|6|1|41|41496.51|0.07|0.08|N|O|1998-05-11|1998-07-17|1998-05-22|COLLECT COD|RAIL|eposits wake blithely fina|
-3713|177|7|2|19|20466.23|0.04|0.04|N|O|1998-06-25|1998-07-24|1998-07-08|DELIVER IN PERSON|AIR|tructions serve blithely around the furi|
-3713|180|1|3|19|20523.42|0.03|0.02|N|O|1998-05-19|1998-07-06|1998-06-09|DELIVER IN PERSON|REG AIR|quests cajole careful|
-3713|169|10|4|45|48112.20|0.06|0.04|N|O|1998-06-15|1998-07-30|1998-07-14|DELIVER IN PERSON|MAIL|al pinto beans affix after the slyly |
-3713|90|1|5|46|45544.14|0.10|0.04|N|O|1998-08-22|1998-06-27|1998-08-31|NONE|MAIL|totes. carefully special theodolites s|
-3713|182|3|6|29|31383.22|0.09|0.03|N|O|1998-08-04|1998-06-13|1998-08-21|NONE|RAIL|the regular dugouts wake furiously sil|
-3713|130|1|7|14|14421.82|0.04|0.00|N|O|1998-07-19|1998-07-02|1998-07-28|DELIVER IN PERSON|SHIP|eposits impress according|
-3714|69|6|1|13|12597.78|0.07|0.03|N|O|1998-06-26|1998-06-17|1998-07-07|TAKE BACK RETURN|REG AIR| the furiously final|
-3714|146|3|2|14|14645.96|0.02|0.05|N|O|1998-05-30|1998-06-30|1998-05-31|DELIVER IN PERSON|RAIL|ending ideas. thinly unusual theodo|
-3714|159|10|3|16|16946.40|0.00|0.02|N|O|1998-05-25|1998-07-07|1998-06-17|TAKE BACK RETURN|AIR|ccounts cajole fu|
-3714|30|9|4|44|40921.32|0.04|0.02|N|O|1998-07-18|1998-07-10|1998-07-22|DELIVER IN PERSON|AIR|s. quickly ironic dugouts sublat|
-3715|97|1|1|13|12962.17|0.00|0.03|N|O|1996-05-11|1996-04-25|1996-06-09|TAKE BACK RETURN|SHIP|e quickly ironic|
-3715|169|6|2|16|17106.56|0.01|0.06|N|O|1996-06-28|1996-04-22|1996-06-30|TAKE BACK RETURN|AIR|usly regular pearls haggle final packages|
-3715|12|3|3|37|33744.37|0.05|0.02|N|O|1996-05-03|1996-04-30|1996-05-17|NONE|SHIP|ut the carefully expr|
-3716|32|8|1|10|9320.30|0.09|0.04|N|O|1997-12-02|1997-11-09|1997-12-14|TAKE BACK RETURN|SHIP|ts. quickly sly ideas slee|
-3716|194|5|2|39|42673.41|0.02|0.08|N|O|1997-11-27|1997-10-23|1997-12-24|COLLECT COD|REG AIR|even deposits.|
-3716|107|8|3|42|42298.20|0.02|0.08|N|O|1997-12-03|1997-10-12|1997-12-15|NONE|TRUCK| of the pend|
-3716|165|10|4|19|20238.04|0.05|0.08|N|O|1997-09-25|1997-10-18|1997-10-12|NONE|TRUCK|arefully unusual accounts. flu|
-3716|182|3|5|25|27054.50|0.06|0.05|N|O|1997-11-23|1997-10-24|1997-11-24|COLLECT COD|REG AIR|fully unusual accounts. carefu|
-3717|153|8|1|45|47391.75|0.07|0.04|N|O|1998-08-09|1998-08-18|1998-08-14|TAKE BACK RETURN|TRUCK|ests wake whithout the blithely final pl|
-3717|53|5|2|3|2859.15|0.01|0.07|N|O|1998-06-09|1998-07-31|1998-06-14|NONE|REG AIR|nside the regular packages sleep|
-3717|196|7|3|45|49328.55|0.05|0.08|N|O|1998-09-19|1998-07-22|1998-09-28|DELIVER IN PERSON|MAIL|s the blithely unu|
-3717|69|6|4|5|4845.30|0.06|0.03|N|O|1998-09-02|1998-08-20|1998-09-26|TAKE BACK RETURN|AIR|quickly among |
-3717|16|7|5|7|6412.07|0.09|0.02|N|O|1998-09-08|1998-07-18|1998-09-10|DELIVER IN PERSON|RAIL| after the packa|
-3717|64|1|6|38|36634.28|0.01|0.07|N|O|1998-07-10|1998-07-08|1998-07-29|COLLECT COD|RAIL|ly about the car|
-3717|106|7|7|28|28170.80|0.03|0.01|N|O|1998-07-25|1998-08-12|1998-08-16|COLLECT COD|RAIL|ts sleep q|
-3718|21|10|1|40|36840.80|0.01|0.04|N|O|1996-11-20|1996-12-17|1996-12-03|DELIVER IN PERSON|MAIL|out the express deposits|
-3718|163|8|2|16|17010.56|0.02|0.06|N|O|1996-11-11|1996-12-25|1996-11-12|COLLECT COD|TRUCK|slyly even accounts. blithely special acco|
-3718|70|5|3|8|7760.56|0.05|0.03|N|O|1996-12-06|1996-12-06|1996-12-15|TAKE BACK RETURN|AIR| the even deposits sleep carefully b|
-3719|22|5|1|35|32270.70|0.06|0.08|N|O|1997-06-11|1997-04-03|1997-06-15|TAKE BACK RETURN|TRUCK|ly foxes. pending braids haggle furio|
-3719|174|4|2|2|2148.34|0.02|0.08|N|O|1997-02-17|1997-04-25|1997-03-03|NONE|REG AIR|ccounts boost carefu|
-3719|182|3|3|12|12986.16|0.05|0.06|N|O|1997-06-10|1997-05-04|1997-07-09|TAKE BACK RETURN|REG AIR|grate according to the |
-3719|90|1|4|13|12871.17|0.02|0.00|N|O|1997-05-03|1997-04-16|1997-05-27|TAKE BACK RETURN|SHIP|iously. regular dep|
-3719|78|8|5|19|18583.33|0.06|0.08|N|O|1997-05-22|1997-03-20|1997-06-12|COLLECT COD|TRUCK|he regular ideas integrate acros|
-3719|142|5|6|43|44812.02|0.03|0.08|N|O|1997-05-08|1997-04-15|1997-06-06|COLLECT COD|RAIL|the furiously special pinto bean|
-3719|19|10|7|16|14704.16|0.10|0.01|N|O|1997-03-02|1997-03-18|1997-03-28|TAKE BACK RETURN|RAIL| express asymptotes. ir|
-3744|195|8|1|30|32855.70|0.05|0.06|A|F|1992-05-07|1992-02-12|1992-05-17|TAKE BACK RETURN|FOB|nts among |
-3745|137|8|1|18|18668.34|0.01|0.05|A|F|1993-10-17|1993-11-16|1993-11-13|DELIVER IN PERSON|SHIP| slyly bold pinto beans according to |
-3746|165|6|1|37|39410.92|0.07|0.00|A|F|1994-12-29|1994-10-25|1995-01-03|COLLECT COD|FOB|e of the careful|
-3746|144|7|2|28|29235.92|0.06|0.08|R|F|1994-09-20|1994-10-21|1994-09-27|DELIVER IN PERSON|FOB|s after the even, special requests|
-3746|188|9|3|3|3264.54|0.10|0.01|R|F|1994-11-03|1994-12-10|1994-11-12|NONE|MAIL| the silent ideas cajole carefully |
-3746|28|7|4|11|10208.22|0.00|0.05|R|F|1994-10-02|1994-11-19|1994-10-10|COLLECT COD|SHIP| ironic theodolites are among th|
-3747|141|10|1|42|43727.88|0.05|0.05|N|O|1996-11-10|1996-10-19|1996-11-19|TAKE BACK RETURN|REG AIR|y. blithely fina|
-3747|170|1|2|33|35315.61|0.01|0.03|N|O|1996-10-14|1996-11-12|1996-11-11|NONE|REG AIR| regular p|
-3747|139|10|3|30|31173.90|0.00|0.07|N|O|1996-12-16|1996-11-15|1996-12-17|NONE|RAIL|! furiously f|
-3747|33|9|4|21|19593.63|0.00|0.06|N|O|1996-11-18|1996-09-23|1996-11-26|TAKE BACK RETURN|AIR|ithely bold orbits mold furiously blit|
-3747|126|5|5|32|32835.84|0.08|0.05|N|O|1996-09-10|1996-11-04|1996-10-10|DELIVER IN PERSON|MAIL|quests shall h|
-3747|154|5|6|14|14758.10|0.08|0.07|N|O|1996-11-03|1996-10-29|1996-11-06|TAKE BACK RETURN|AIR|packages cajole carefu|
-3747|118|2|7|23|23416.53|0.00|0.04|N|O|1996-11-08|1996-11-10|1996-12-03|NONE|REG AIR|kages are ironic|
-3748|104|7|1|12|12049.20|0.06|0.01|N|O|1998-04-17|1998-04-15|1998-05-12|NONE|AIR|old reques|
-3748|165|4|2|24|25563.84|0.08|0.04|N|O|1998-06-07|1998-05-02|1998-06-21|DELIVER IN PERSON|TRUCK|al deposits. blithely|
-3748|197|1|3|19|20846.61|0.05|0.01|N|O|1998-04-23|1998-05-17|1998-05-23|COLLECT COD|RAIL|pinto beans run carefully quic|
-3748|187|8|4|5|5435.90|0.00|0.07|N|O|1998-06-29|1998-05-06|1998-07-12|DELIVER IN PERSON|MAIL| regular accounts sleep quickly-- furious|
-3748|147|4|5|21|21989.94|0.07|0.08|N|O|1998-03-30|1998-04-07|1998-04-05|TAKE BACK RETURN|MAIL|fix carefully furiously express ideas. furi|
-3749|173|3|1|11|11804.87|0.07|0.05|N|O|1995-06-25|1995-05-23|1995-07-10|TAKE BACK RETURN|RAIL|egular requests along the |
-3749|129|8|2|9|9262.08|0.08|0.05|A|F|1995-04-23|1995-04-18|1995-04-26|NONE|REG AIR|uses cajole blithely pla|
-3749|199|2|3|31|34074.89|0.00|0.05|N|F|1995-06-11|1995-05-20|1995-06-27|COLLECT COD|REG AIR|s. foxes sleep slyly unusual grouc|
-3749|131|2|4|7|7217.91|0.07|0.06|A|F|1995-03-31|1995-04-05|1995-04-11|NONE|TRUCK|he slyly ironic packages|
-3749|183|4|5|14|15164.52|0.02|0.00|N|F|1995-06-11|1995-05-19|1995-07-11|DELIVER IN PERSON|SHIP|press instruc|
-3749|54|6|6|10|9540.50|0.10|0.03|N|O|1995-06-24|1995-05-24|1995-07-18|COLLECT COD|SHIP|essly. regular pi|
-3750|134|10|1|37|38262.81|0.04|0.03|N|O|1995-07-08|1995-07-28|1995-07-28|DELIVER IN PERSON|REG AIR|usly busy account|
-3750|152|3|2|33|34720.95|0.05|0.03|N|O|1995-06-27|1995-06-20|1995-07-03|TAKE BACK RETURN|REG AIR|theodolites haggle. slyly pendin|
-3750|80|10|3|20|19601.60|0.09|0.05|N|F|1995-06-17|1995-06-06|1995-06-28|TAKE BACK RETURN|REG AIR|ss, ironic requests! fur|
-3750|166|1|4|33|35183.28|0.04|0.03|N|F|1995-06-15|1995-06-04|1995-06-29|COLLECT COD|RAIL|ep blithely according to the flu|
-3750|83|4|5|1|983.08|0.05|0.01|N|O|1995-07-24|1995-06-25|1995-08-21|DELIVER IN PERSON|REG AIR|l dolphins against the slyly|
-3750|113|7|6|47|47616.17|0.01|0.08|R|F|1995-05-11|1995-06-13|1995-06-02|TAKE BACK RETURN|FOB|slowly regular accounts. blithely ev|
-3751|172|2|1|37|39670.29|0.00|0.04|R|F|1994-04-30|1994-05-30|1994-05-30|NONE|REG AIR|ly express courts |
-3751|141|8|2|32|33316.48|0.03|0.05|R|F|1994-05-05|1994-07-02|1994-06-02|COLLECT COD|MAIL|rthogs could have to slee|
-3751|65|2|3|45|43427.70|0.08|0.06|R|F|1994-05-27|1994-06-19|1994-06-14|NONE|RAIL|according to |
-3751|14|4|4|39|35646.39|0.07|0.01|A|F|1994-08-16|1994-07-11|1994-09-12|COLLECT COD|TRUCK|refully according to the iro|
-3751|58|3|5|12|11496.60|0.02|0.03|A|F|1994-08-09|1994-06-30|1994-08-12|TAKE BACK RETURN|TRUCK|accounts wake furious|
-3751|76|5|6|39|38066.73|0.02|0.08|R|F|1994-08-01|1994-06-01|1994-08-26|COLLECT COD|SHIP|to beans. pending, express packages c|
-3776|3|10|1|39|35217.00|0.05|0.01|R|F|1993-01-03|1993-02-05|1993-01-08|COLLECT COD|FOB|yly blithely pending packages|
-3776|159|4|2|14|14828.10|0.06|0.08|R|F|1992-12-30|1993-02-12|1993-01-27|DELIVER IN PERSON|RAIL|y special ideas. express packages pr|
-3776|141|8|3|49|51015.86|0.01|0.08|R|F|1992-12-03|1993-02-16|1992-12-28|TAKE BACK RETURN|RAIL|equests. final, thin grouches |
-3776|92|6|4|49|48612.41|0.08|0.05|A|F|1993-02-11|1993-01-06|1993-02-27|COLLECT COD|MAIL|es: careful warthogs haggle fluffi|
-3777|100|4|1|11|11001.10|0.02|0.03|A|F|1994-04-09|1994-06-05|1994-04-14|NONE|FOB|ld ideas. even theodolites|
-3777|8|5|2|10|9080.00|0.03|0.01|R|F|1994-05-22|1994-05-29|1994-06-13|COLLECT COD|RAIL|le. ironic depths a|
-3777|166|7|3|18|19190.88|0.10|0.06|R|F|1994-05-04|1994-05-23|1994-05-22|COLLECT COD|REG AIR|eful packages use slyly: even deposits |
-3777|18|9|4|35|32130.35|0.10|0.04|A|F|1994-05-25|1994-05-26|1994-06-13|COLLECT COD|AIR|s. carefully express asymptotes accordi|
-3777|98|10|5|14|13973.26|0.04|0.05|R|F|1994-05-06|1994-06-24|1994-05-31|NONE|TRUCK|ording to the iro|
-3778|57|2|1|21|20098.05|0.01|0.06|R|F|1993-05-27|1993-07-10|1993-06-03|COLLECT COD|REG AIR|ts. blithely special theodoli|
-3778|29|10|2|32|29728.64|0.09|0.00|A|F|1993-06-22|1993-08-18|1993-07-03|TAKE BACK RETURN|MAIL|tes affix carefully above the |
-3778|94|6|3|41|40757.69|0.05|0.00|R|F|1993-06-21|1993-07-27|1993-07-15|COLLECT COD|FOB|e the furiously ironi|
-3778|169|4|4|28|29936.48|0.03|0.05|R|F|1993-08-18|1993-07-10|1993-09-06|TAKE BACK RETURN|REG AIR|y silent orbits print carefully against |
-3778|98|2|5|28|27946.52|0.01|0.06|R|F|1993-09-02|1993-08-08|1993-10-02|DELIVER IN PERSON|FOB|r deposits. theodol|
-3778|20|7|6|26|23920.52|0.00|0.01|A|F|1993-09-24|1993-07-06|1993-10-22|NONE|TRUCK| against the fluffily|
-3778|105|6|7|49|49249.90|0.02|0.04|A|F|1993-06-13|1993-08-08|1993-07-04|DELIVER IN PERSON|MAIL|ans. furiously |
-3779|46|5|1|28|26489.12|0.04|0.05|N|O|1997-05-06|1997-04-01|1997-05-18|TAKE BACK RETURN|AIR|s. close requests sleep|
-3779|110|3|2|5|5050.55|0.07|0.03|N|O|1997-01-07|1997-03-26|1997-02-05|DELIVER IN PERSON|AIR|heodolites. slyly regular a|
-3780|127|8|1|25|25678.00|0.08|0.04|N|O|1996-06-27|1996-07-02|1996-07-22|NONE|AIR|l, unusual |
-3780|190|1|2|40|43607.60|0.10|0.04|N|O|1996-06-06|1996-05-29|1996-07-01|COLLECT COD|SHIP|gular deposits-- furiously regular |
-3781|14|5|1|48|43872.48|0.02|0.06|N|O|1996-08-22|1996-08-13|1996-09-15|NONE|REG AIR|equests may cajole careful|
-3781|188|9|2|39|42439.02|0.10|0.00|N|O|1996-08-20|1996-08-16|1996-09-01|DELIVER IN PERSON|REG AIR|unts are carefully. ir|
-3781|30|1|3|17|15810.51|0.01|0.03|N|O|1996-06-23|1996-09-04|1996-07-19|TAKE BACK RETURN|REG AIR|. theodolite|
-3781|31|2|4|15|13965.45|0.05|0.00|N|O|1996-08-23|1996-08-08|1996-09-06|TAKE BACK RETURN|AIR| carefully blithe|
-3781|16|6|5|23|21068.23|0.09|0.08|N|O|1996-09-05|1996-08-18|1996-09-27|DELIVER IN PERSON|SHIP|pendencies are b|
-3782|27|10|1|29|26883.58|0.01|0.07|N|O|1996-09-17|1996-10-03|1996-10-07|DELIVER IN PERSON|REG AIR|quickly unusual pinto beans. carefully fina|
-3782|153|1|2|10|10531.50|0.03|0.05|N|O|1996-09-07|1996-11-19|1996-10-04|COLLECT COD|FOB|ven pinto b|
-3782|136|7|3|30|31083.90|0.06|0.06|N|O|1996-12-19|1996-10-31|1997-01-14|TAKE BACK RETURN|MAIL|slyly even pinto beans hag|
-3782|117|7|4|34|34581.74|0.02|0.06|N|O|1996-11-07|1996-10-22|1996-11-19|DELIVER IN PERSON|MAIL|gage after the even|
-3782|130|3|5|40|41205.20|0.09|0.04|N|O|1996-12-16|1996-11-22|1997-01-01|COLLECT COD|AIR|s instructions. regular accou|
-3783|167|4|1|36|38417.76|0.04|0.08|R|F|1993-12-17|1994-02-26|1994-01-03|DELIVER IN PERSON|SHIP|ites haggle among the carefully unusu|
-3783|73|3|2|36|35030.52|0.02|0.02|R|F|1994-03-02|1994-02-09|1994-03-15|COLLECT COD|TRUCK|egular accounts|
-3783|85|6|3|50|49254.00|0.04|0.01|R|F|1994-03-14|1994-01-09|1994-04-10|DELIVER IN PERSON|FOB|he furiously regular deposits. |
-3783|27|6|4|37|34299.74|0.10|0.05|R|F|1993-12-09|1994-02-17|1993-12-30|COLLECT COD|REG AIR|ing to the ideas. regular accounts de|
-3808|43|10|1|28|26405.12|0.02|0.01|R|F|1994-05-27|1994-06-18|1994-06-22|TAKE BACK RETURN|FOB|lly final accounts alo|
-3808|127|6|2|47|48274.64|0.04|0.08|R|F|1994-06-12|1994-06-03|1994-07-02|COLLECT COD|TRUCK|fully for the quickly final deposits: flu|
-3808|31|2|3|45|41896.35|0.00|0.03|R|F|1994-07-03|1994-05-29|1994-07-14|TAKE BACK RETURN|REG AIR| carefully special|
-3808|100|1|4|34|34003.40|0.07|0.04|R|F|1994-08-13|1994-07-22|1994-08-31|DELIVER IN PERSON|FOB| pearls will have to |
-3808|155|7|5|29|30599.35|0.08|0.03|A|F|1994-06-22|1994-05-26|1994-07-06|TAKE BACK RETURN|TRUCK| deposits across the pac|
-3808|168|5|6|44|46999.04|0.06|0.06|A|F|1994-06-07|1994-06-04|1994-06-25|NONE|REG AIR|the blithely regular foxes. even, final |
-3809|191|3|1|17|18550.23|0.10|0.04|N|O|1996-08-14|1996-07-05|1996-09-04|DELIVER IN PERSON|FOB|es detect furiously sil|
-3809|133|4|2|32|33060.16|0.01|0.02|N|O|1996-07-03|1996-06-01|1996-07-25|COLLECT COD|SHIP|xcuses would boost against the fluffily eve|
-3809|105|6|3|46|46234.60|0.10|0.06|N|O|1996-08-20|1996-06-01|1996-08-24|TAKE BACK RETURN|TRUCK|l asymptotes. special |
-3809|178|9|4|43|46361.31|0.00|0.04|N|O|1996-05-06|1996-06-22|1996-06-05|TAKE BACK RETURN|TRUCK|yly ironic decoys; regular, iron|
-3810|184|5|1|49|53124.82|0.05|0.01|R|F|1992-11-27|1992-10-30|1992-12-16|COLLECT COD|AIR|cajole. fur|
-3810|169|8|2|18|19244.88|0.01|0.04|A|F|1992-11-28|1992-11-15|1992-12-27|DELIVER IN PERSON|SHIP|s. furiously careful deposi|
-3810|137|3|3|41|42522.33|0.08|0.08|A|F|1992-10-26|1992-10-27|1992-11-05|COLLECT COD|SHIP|l requests boost slyly along the slyl|
-3810|182|3|4|11|11903.98|0.06|0.04|A|F|1992-12-18|1992-12-11|1993-01-15|DELIVER IN PERSON|MAIL| the pending pinto beans. expr|
-3811|164|3|1|24|25539.84|0.04|0.02|N|O|1998-07-13|1998-05-16|1998-08-12|TAKE BACK RETURN|TRUCK|deposits. slyly regular accounts cajo|
-3811|166|5|2|2|2132.32|0.01|0.08|N|O|1998-06-16|1998-06-16|1998-06-23|NONE|MAIL|slyly fluff|
-3811|43|6|3|19|17917.76|0.02|0.06|N|O|1998-07-20|1998-06-14|1998-07-29|NONE|MAIL|s boost blithely furiou|
-3811|171|1|4|50|53558.50|0.08|0.03|N|O|1998-07-28|1998-07-06|1998-08-16|COLLECT COD|FOB|ts are slyly fluffy ideas. furiou|
-3811|182|3|5|23|24890.14|0.00|0.04|N|O|1998-08-13|1998-07-09|1998-08-29|COLLECT COD|AIR|nstructions sleep quickly. slyly final |
-3811|2|7|6|35|31570.00|0.04|0.07|N|O|1998-04-17|1998-06-30|1998-04-25|NONE|REG AIR|yly final dolphins? quickly ironic frets|
-3812|145|4|1|33|34489.62|0.00|0.05|N|O|1996-10-10|1996-10-05|1996-10-15|TAKE BACK RETURN|MAIL|posits engage. ironic, regular p|
-3812|173|2|2|33|35414.61|0.06|0.03|N|O|1996-10-05|1996-10-13|1996-10-22|TAKE BACK RETURN|MAIL|inal excuses d|
-3813|176|7|1|37|39818.29|0.05|0.04|N|O|1998-10-13|1998-09-19|1998-10-28|NONE|REG AIR|ravely special packages haggle p|
-3813|123|2|2|39|39901.68|0.05|0.00|N|O|1998-08-30|1998-08-12|1998-09-29|COLLECT COD|FOB|y ideas. final ideas about the sp|
-3814|131|7|1|7|7217.91|0.02|0.02|R|F|1995-05-01|1995-05-09|1995-05-28|DELIVER IN PERSON|REG AIR|es sleep furiou|
-3814|173|3|2|14|15024.38|0.01|0.00|R|F|1995-03-17|1995-05-10|1995-04-16|DELIVER IN PERSON|AIR|sits along the final, ironic deposit|
-3814|168|7|3|36|38453.76|0.06|0.02|N|O|1995-06-19|1995-04-18|1995-06-28|COLLECT COD|SHIP|beans cajole quickly sl|
-3814|66|7|4|20|19321.20|0.04|0.07|R|F|1995-02-23|1995-03-26|1995-03-04|DELIVER IN PERSON|SHIP|. doggedly ironic deposits will have to wa|
-3814|107|2|5|15|15106.50|0.03|0.04|N|O|1995-06-23|1995-03-25|1995-07-09|COLLECT COD|SHIP| carefully final deposits haggle slyly|
-3814|83|4|6|47|46204.76|0.09|0.05|A|F|1995-04-16|1995-04-03|1995-05-14|DELIVER IN PERSON|AIR|nusual requests. bli|
-3814|132|8|7|12|12385.56|0.10|0.01|R|F|1995-03-18|1995-04-16|1995-03-20|TAKE BACK RETURN|REG AIR|ages cajole. packages haggle. final|
-3815|77|7|1|3|2931.21|0.07|0.00|N|O|1997-11-16|1997-11-15|1997-11-30|NONE|FOB|egular, express ideas. ironic, final dep|
-3815|130|5|2|11|11331.43|0.02|0.04|N|O|1997-11-01|1997-11-05|1997-11-27|COLLECT COD|TRUCK|sleep blithe|
-3840|187|8|1|45|48923.10|0.02|0.08|N|O|1998-10-31|1998-09-19|1998-11-30|DELIVER IN PERSON|TRUCK|o beans are. carefully final courts x|
-3840|46|9|2|12|11352.48|0.04|0.07|N|O|1998-10-02|1998-08-19|1998-10-20|TAKE BACK RETURN|RAIL|xpress pinto beans. accounts a|
-3840|73|4|3|45|43788.15|0.02|0.05|N|O|1998-10-12|1998-10-12|1998-10-28|TAKE BACK RETURN|FOB|onic, even packages are. pe|
-3840|148|9|4|41|42973.74|0.07|0.02|N|O|1998-07-21|1998-10-08|1998-08-01|TAKE BACK RETURN|MAIL| nag slyly? slyly pending accounts |
-3840|173|3|5|7|7512.19|0.09|0.08|N|O|1998-09-17|1998-09-20|1998-10-14|DELIVER IN PERSON|MAIL|. furiously final gifts sleep carefully pin|
-3840|107|8|6|33|33234.30|0.10|0.02|N|O|1998-07-29|1998-10-06|1998-08-04|DELIVER IN PERSON|SHIP|hely silent deposits w|
-3841|157|5|1|1|1057.15|0.06|0.03|A|F|1994-10-10|1994-11-12|1994-10-21|DELIVER IN PERSON|AIR| boost even re|
-3841|21|10|2|31|28551.62|0.09|0.03|A|F|1995-01-24|1994-11-25|1995-02-20|TAKE BACK RETURN|SHIP|n theodolites shall promise carefully. qui|
-3841|152|10|3|40|42086.00|0.06|0.02|A|F|1995-02-02|1994-11-30|1995-02-14|TAKE BACK RETURN|MAIL|its. quickly regular ideas nag carefully|
-3841|50|1|4|9|8550.45|0.10|0.07|A|F|1994-11-21|1994-12-26|1994-11-26|NONE|FOB|s according to the courts shall nag s|
-3841|176|7|5|3|3228.51|0.04|0.02|R|F|1994-10-24|1994-12-07|1994-11-09|COLLECT COD|FOB|foxes integrate |
-3841|163|8|6|48|51031.68|0.03|0.00|R|F|1994-11-23|1994-11-22|1994-12-01|DELIVER IN PERSON|FOB| according to the regular, |
-3842|162|7|1|28|29740.48|0.05|0.07|A|F|1992-06-17|1992-06-03|1992-06-24|DELIVER IN PERSON|TRUCK|s excuses thrash carefully.|
-3842|122|1|2|21|21464.52|0.07|0.05|R|F|1992-07-15|1992-06-02|1992-07-21|NONE|RAIL|r pinto be|
-3842|194|7|3|28|30637.32|0.00|0.00|A|F|1992-06-20|1992-05-22|1992-07-13|DELIVER IN PERSON|MAIL|lly alongside of the|
-3842|88|9|4|15|14821.20|0.07|0.01|A|F|1992-06-26|1992-06-23|1992-07-09|COLLECT COD|MAIL|ave packages are slyl|
-3842|68|3|5|13|12584.78|0.09|0.02|R|F|1992-04-13|1992-06-22|1992-05-11|COLLECT COD|RAIL|t blithely. busily regular accounts alon|
-3842|107|4|6|24|24170.40|0.08|0.08|R|F|1992-08-05|1992-06-29|1992-08-16|TAKE BACK RETURN|MAIL|phins are quickly|
-3843|15|6|1|7|6405.07|0.10|0.03|N|O|1997-02-13|1997-02-21|1997-02-20|TAKE BACK RETURN|SHIP|slyly even instructions. furiously eve|
-3843|1|4|2|30|27030.00|0.01|0.05|N|O|1997-02-14|1997-03-25|1997-03-13|DELIVER IN PERSON|AIR| wake. slyly even packages boost |
-3844|135|1|1|2|2070.26|0.03|0.07|R|F|1995-02-24|1995-02-03|1995-03-18|TAKE BACK RETURN|AIR|es haggle final acco|
-3844|102|7|2|5|5010.50|0.10|0.03|R|F|1995-04-29|1995-02-24|1995-05-05|TAKE BACK RETURN|RAIL| unwind quickly about the pending, i|
-3845|34|5|1|44|41097.32|0.01|0.08|A|F|1992-07-20|1992-07-15|1992-07-24|DELIVER IN PERSON|REG AIR|s haggle among the fluffily regula|
-3845|24|7|2|16|14784.32|0.09|0.05|A|F|1992-08-08|1992-06-08|1992-08-26|DELIVER IN PERSON|SHIP|ely bold ideas use. ex|
-3845|59|1|3|17|16303.85|0.08|0.01|A|F|1992-06-12|1992-07-05|1992-06-26|TAKE BACK RETURN|RAIL|counts haggle. reg|
-3845|46|9|4|1|946.04|0.04|0.05|R|F|1992-05-21|1992-06-07|1992-06-17|COLLECT COD|REG AIR| blithely ironic t|
-3845|196|7|5|27|29597.13|0.00|0.05|R|F|1992-08-20|1992-07-17|1992-09-02|COLLECT COD|REG AIR|kages. care|
-3845|105|8|6|30|30153.00|0.09|0.06|R|F|1992-08-21|1992-07-07|1992-08-25|COLLECT COD|FOB|counts do wake blithely. ironic requests |
-3846|61|10|1|15|14415.90|0.06|0.03|N|O|1998-02-17|1998-04-27|1998-02-21|NONE|REG AIR|uternes. carefully even|
-3846|171|2|2|30|32135.10|0.08|0.07|N|O|1998-05-01|1998-03-12|1998-05-20|TAKE BACK RETURN|FOB|deposits according to the fur|
-3846|15|5|3|49|44835.49|0.08|0.07|N|O|1998-02-14|1998-03-22|1998-02-17|DELIVER IN PERSON|RAIL|efully even packages against the blithe|
-3846|165|10|4|33|35150.28|0.05|0.00|N|O|1998-05-12|1998-03-14|1998-05-14|DELIVER IN PERSON|TRUCK|s instructions are. fu|
-3847|189|10|1|7|7624.26|0.08|0.00|A|F|1993-05-06|1993-06-06|1993-05-22|COLLECT COD|MAIL| about the blithely daring Tiresias. fl|
-3872|181|2|1|28|30273.04|0.10|0.04|N|O|1996-11-05|1996-11-10|1996-11-24|DELIVER IN PERSON|REG AIR|t after the carefully ironic excuses. f|
-3872|17|4|2|38|34846.38|0.04|0.05|N|O|1996-10-18|1996-12-03|1996-11-15|TAKE BACK RETURN|AIR|iously against the ironic, unusual a|
-3872|169|4|3|18|19244.88|0.07|0.07|N|O|1996-12-25|1996-10-24|1997-01-08|TAKE BACK RETURN|SHIP|s. regular, brave accounts sleep blith|
-3872|11|2|4|41|37351.41|0.07|0.03|N|O|1996-11-23|1996-11-12|1996-12-03|COLLECT COD|REG AIR|ly regular epitaphs boost|
-3872|70|7|5|42|40742.94|0.03|0.00|N|O|1997-01-03|1996-10-12|1997-01-16|COLLECT COD|MAIL|s the furio|
-3872|140|6|6|40|41605.60|0.07|0.05|N|O|1997-01-02|1996-10-29|1997-01-14|NONE|REG AIR|nts? regularly ironic ex|
-3873|68|3|1|19|18393.14|0.04|0.04|N|O|1998-05-15|1998-05-10|1998-05-17|NONE|FOB|y final ac|
-3873|145|8|2|44|45986.16|0.05|0.05|N|O|1998-07-23|1998-05-22|1998-08-14|COLLECT COD|AIR|yly even platelets wake. |
-3873|140|6|3|29|30164.06|0.01|0.04|N|O|1998-06-22|1998-05-20|1998-07-05|COLLECT COD|REG AIR|olphins af|
-3874|170|7|1|21|22473.57|0.09|0.08|R|F|1993-06-19|1993-07-20|1993-07-08|DELIVER IN PERSON|SHIP| requests cajole fluff|
-3874|19|6|2|48|44112.48|0.06|0.07|R|F|1993-06-13|1993-07-20|1993-06-20|NONE|RAIL| ideas throughout |
-3875|81|2|1|24|23545.92|0.02|0.08|N|O|1997-10-15|1997-11-27|1997-11-09|COLLECT COD|AIR|ecial packages. |
-3875|113|7|2|49|49642.39|0.04|0.04|N|O|1997-10-18|1997-10-13|1997-10-19|NONE|MAIL|sleep furiously about the deposits. quickl|
-3876|141|8|1|12|12493.68|0.06|0.07|N|O|1996-09-16|1996-10-23|1996-10-05|TAKE BACK RETURN|REG AIR|y above the pending tithes. blithely ironi|
-3876|140|6|2|37|38485.18|0.00|0.03|N|O|1996-11-30|1996-10-18|1996-12-18|DELIVER IN PERSON|AIR|t dependencies. blithely final packages u|
-3876|127|8|3|41|42111.92|0.02|0.04|N|O|1996-10-15|1996-10-17|1996-10-19|NONE|AIR| quickly blit|
-3877|50|7|1|12|11400.60|0.06|0.01|R|F|1993-05-30|1993-08-09|1993-06-24|TAKE BACK RETURN|FOB|nal requests. even requests are. pac|
-3877|145|4|2|47|49121.58|0.05|0.00|A|F|1993-08-01|1993-08-16|1993-08-04|NONE|FOB|furiously quick requests nag along the theo|
-3877|80|8|3|44|43123.52|0.09|0.00|A|F|1993-06-07|1993-07-15|1993-07-06|DELIVER IN PERSON|REG AIR|elets. quickly regular accounts caj|
-3877|148|9|4|36|37733.04|0.06|0.01|A|F|1993-07-27|1993-07-13|1993-08-11|DELIVER IN PERSON|AIR|lithely about the dogged ideas. ac|
-3877|5|6|5|41|37105.00|0.03|0.07|A|F|1993-06-30|1993-07-20|1993-07-01|DELIVER IN PERSON|FOB|integrate against the expres|
-3877|123|4|6|7|7161.84|0.04|0.08|R|F|1993-06-14|1993-07-09|1993-06-28|NONE|TRUCK|lar dolphins cajole silently |
-3878|200|1|1|6|6601.20|0.07|0.04|N|O|1997-06-21|1997-05-22|1997-07-01|COLLECT COD|FOB|s. regular instru|
-3878|88|9|2|13|12845.04|0.01|0.06|N|O|1997-06-08|1997-06-03|1997-06-25|TAKE BACK RETURN|TRUCK|leep ruthlessly about the carefu|
-3878|41|8|3|20|18820.80|0.08|0.03|N|O|1997-06-20|1997-05-24|1997-07-20|TAKE BACK RETURN|MAIL|the furiously careful ideas cajole slyly sl|
-3878|152|3|4|20|21043.00|0.01|0.07|N|O|1997-07-13|1997-05-22|1997-07-20|NONE|FOB|about the carefully ironic pa|
-3879|126|5|1|45|46175.40|0.10|0.08|N|O|1996-03-18|1996-01-03|1996-04-03|COLLECT COD|RAIL|ly according to the expr|
-3879|45|4|2|35|33076.40|0.00|0.07|N|O|1995-12-08|1996-01-23|1995-12-28|TAKE BACK RETURN|MAIL|o beans. accounts cajole furiously. re|
-3904|38|4|1|22|20636.66|0.04|0.03|N|O|1998-02-02|1998-02-09|1998-02-10|TAKE BACK RETURN|REG AIR|structions cajole carefully. carefully f|
-3904|184|5|2|19|20599.42|0.09|0.01|N|O|1998-02-10|1998-02-13|1998-02-20|TAKE BACK RETURN|AIR| excuses sleep slyly according to th|
-3905|101|8|1|43|43047.30|0.07|0.08|A|F|1994-03-30|1994-02-18|1994-04-09|DELIVER IN PERSON|REG AIR|uses are care|
-3905|116|10|2|7|7112.77|0.03|0.00|R|F|1994-03-01|1994-02-19|1994-03-11|DELIVER IN PERSON|AIR|ully furiously furious packag|
-3905|170|7|3|6|6421.02|0.07|0.02|R|F|1994-04-07|1994-03-07|1994-04-21|DELIVER IN PERSON|RAIL|ow furiously. deposits wake ironic |
-3906|153|1|1|42|44232.30|0.00|0.04|R|F|1992-09-03|1992-07-22|1992-09-04|COLLECT COD|RAIL|jole blithely after the furiously regular |
-3906|40|1|2|50|47002.00|0.01|0.07|R|F|1992-09-24|1992-08-24|1992-09-29|NONE|MAIL|ke slyly. stealt|
-3906|180|9|3|15|16202.70|0.06|0.02|R|F|1992-07-30|1992-08-26|1992-08-02|TAKE BACK RETURN|FOB|dependencies at the |
-3906|59|10|4|36|34525.80|0.08|0.08|A|F|1992-08-07|1992-08-08|1992-08-24|NONE|SHIP|y. ironic deposits haggle sl|
-3907|112|6|1|41|41496.51|0.06|0.02|A|F|1992-09-13|1992-10-23|1992-09-29|COLLECT COD|MAIL|ackages wake along the carefully regul|
-3907|145|4|2|41|42850.74|0.03|0.00|A|F|1992-10-25|1992-10-17|1992-11-01|TAKE BACK RETURN|RAIL|s above the unusual ideas sleep furiousl|
-3907|52|4|3|45|42842.25|0.02|0.07|R|F|1992-09-21|1992-09-19|1992-10-18|COLLECT COD|REG AIR| about the regular pac|
-3907|176|5|4|48|51656.16|0.05|0.07|A|F|1992-09-24|1992-10-16|1992-10-06|DELIVER IN PERSON|TRUCK|nt asymptotes lose across th|
-3907|62|3|5|22|21165.32|0.09|0.01|R|F|1992-09-20|1992-10-30|1992-09-29|TAKE BACK RETURN|TRUCK|ly. furiously unusual deposits use afte|
-3907|126|9|6|34|34888.08|0.02|0.02|R|F|1992-09-06|1992-10-08|1992-09-12|COLLECT COD|FOB| requests according to the slyly pending |
-3907|110|5|7|8|8080.88|0.10|0.01|A|F|1992-09-18|1992-10-29|1992-09-27|NONE|REG AIR|furiously final packages.|
-3908|92|4|1|50|49604.50|0.05|0.04|R|F|1993-06-19|1993-04-27|1993-07-05|DELIVER IN PERSON|MAIL| even accounts wake |
-3908|148|9|2|8|8385.12|0.06|0.03|A|F|1993-03-12|1993-04-13|1993-03-22|DELIVER IN PERSON|SHIP|r instructions was requests. ironically |
-3909|178|6|1|30|32345.10|0.03|0.07|N|O|1998-10-17|1998-10-14|1998-10-28|COLLECT COD|TRUCK|ly even deposits across the ironic notorni|
-3909|191|4|2|46|50194.74|0.03|0.01|N|O|1998-10-08|1998-10-15|1998-10-24|NONE|FOB|the blithely unusual ideas|
-3910|139|10|1|10|10391.30|0.00|0.08|N|O|1996-10-18|1996-10-31|1996-11-14|DELIVER IN PERSON|FOB|tions boost furiously unusual e|
-3910|71|10|2|31|30103.17|0.05|0.03|N|O|1996-12-22|1996-11-14|1997-01-01|TAKE BACK RETURN|SHIP|ess instructions. |
-3910|20|7|3|6|5520.12|0.04|0.04|N|O|1996-12-08|1996-10-30|1996-12-31|DELIVER IN PERSON|MAIL|ly sly platelets are fluffily slyly si|
-3910|153|1|4|1|1053.15|0.03|0.06|N|O|1996-09-12|1996-10-21|1996-09-19|DELIVER IN PERSON|FOB|s sleep neve|
-3911|113|7|1|10|10131.10|0.07|0.06|N|O|1995-06-22|1995-05-30|1995-06-28|COLLECT COD|FOB|ss theodolites are blithely along t|
-3911|119|9|2|14|14267.54|0.08|0.05|R|F|1995-04-28|1995-05-03|1995-05-22|NONE|RAIL|e blithely brave depo|
-3911|92|5|3|12|11905.08|0.10|0.05|R|F|1995-04-04|1995-04-16|1995-04-10|COLLECT COD|FOB|uctions. blithely regula|
-3936|137|8|1|25|25928.25|0.06|0.03|N|O|1996-12-03|1996-12-27|1997-01-01|DELIVER IN PERSON|RAIL|gular requests nag quic|
-3936|188|9|2|24|26116.32|0.10|0.07|N|O|1996-11-22|1997-01-01|1996-12-08|NONE|AIR|ns. accounts mold fl|
-3936|83|4|3|42|41289.36|0.00|0.07|N|O|1997-01-03|1997-01-29|1997-01-14|COLLECT COD|AIR|elets wake amo|
-3936|62|7|4|12|11544.72|0.06|0.05|N|O|1996-11-25|1997-01-09|1996-12-06|DELIVER IN PERSON|SHIP|ithely across the carefully brave req|
-3936|84|5|5|35|34442.80|0.02|0.08|N|O|1996-12-04|1997-01-06|1996-12-22|NONE|SHIP|lly ironic requ|
-3936|103|6|6|26|26080.60|0.01|0.02|N|O|1997-02-27|1997-01-16|1997-03-22|NONE|RAIL|quickly pen|
-3937|70|7|1|48|46563.36|0.10|0.02|N|O|1998-03-15|1998-02-22|1998-03-30|DELIVER IN PERSON|FOB|gainst the thinl|
-3937|48|1|2|30|28441.20|0.01|0.07|N|O|1998-01-17|1998-01-03|1998-02-08|COLLECT COD|TRUCK|al packages slee|
-3937|115|5|3|27|27407.97|0.03|0.00|N|O|1998-02-06|1998-01-12|1998-02-20|NONE|MAIL|ven ideas. slyly expr|
-3937|154|2|4|50|52707.50|0.01|0.02|N|O|1998-01-15|1998-01-09|1998-02-04|DELIVER IN PERSON|AIR|ong the carefully exp|
-3937|3|10|5|29|26187.00|0.03|0.07|N|O|1998-03-06|1998-02-22|1998-03-14|NONE|TRUCK|nt pinto beans above the pending instr|
-3937|193|6|6|6|6559.14|0.00|0.00|N|O|1998-01-24|1998-02-13|1998-01-27|DELIVER IN PERSON|FOB|into beans. slyly silent orbits alongside o|
-3937|164|9|7|1|1064.16|0.02|0.05|N|O|1998-03-29|1998-01-08|1998-04-27|TAKE BACK RETURN|TRUCK|refully agains|
-3938|159|4|1|46|48720.90|0.10|0.07|R|F|1993-05-20|1993-05-04|1993-06-12|DELIVER IN PERSON|FOB|ly even foxes are slyly fu|
-3939|160|8|1|8|8481.28|0.03|0.06|N|O|1996-01-29|1996-04-05|1996-02-26|COLLECT COD|REG AIR|e packages. express, pen|
-3940|178|7|1|33|35579.61|0.10|0.07|N|O|1996-05-19|1996-04-19|1996-05-23|TAKE BACK RETURN|RAIL|ly ironic packages about the pending accou|
-3940|69|4|2|40|38762.40|0.08|0.02|N|O|1996-02-29|1996-03-22|1996-03-04|NONE|MAIL|ts. regular fox|
-3940|89|10|3|8|7912.64|0.07|0.08|N|O|1996-04-04|1996-04-12|1996-04-18|DELIVER IN PERSON|RAIL|ions cajole furiously regular pinto beans. |
-3940|137|3|4|11|11408.43|0.09|0.05|N|O|1996-03-09|1996-05-13|1996-03-17|COLLECT COD|REG AIR|e of the special packages. furiously|
-3940|1|6|5|41|36941.00|0.00|0.07|N|O|1996-05-08|1996-05-03|1996-06-03|COLLECT COD|MAIL|thily. deposits cajole.|
-3941|41|2|1|47|44228.88|0.05|0.07|N|O|1996-11-24|1996-10-09|1996-12-22|DELIVER IN PERSON|RAIL| carefully pending|
-3941|123|6|2|19|19439.28|0.05|0.00|N|O|1996-11-10|1996-10-26|1996-12-05|COLLECT COD|RAIL|eposits haggle furiously even|
-3941|10|3|3|2|1820.02|0.01|0.03|N|O|1996-12-04|1996-10-01|1996-12-25|NONE|REG AIR|es wake after the|
-3941|110|7|4|29|29293.19|0.00|0.03|N|O|1996-09-14|1996-10-04|1996-09-19|NONE|MAIL|g the blithely|
-3942|183|4|1|6|6499.08|0.05|0.05|A|F|1993-07-01|1993-09-14|1993-07-23|DELIVER IN PERSON|SHIP|ep ruthlessly carefully final accounts: s|
-3942|194|7|2|5|5470.95|0.06|0.02|R|F|1993-09-27|1993-09-24|1993-10-07|DELIVER IN PERSON|MAIL|. fluffily pending deposits above the flu|
-3942|156|4|3|25|26403.75|0.04|0.06|R|F|1993-09-13|1993-08-01|1993-09-29|COLLECT COD|RAIL|d the quick packages|
-3943|198|2|1|15|16472.85|0.03|0.01|N|O|1997-01-13|1996-12-17|1997-02-02|COLLECT COD|REG AIR| grow fluffily according to the |
-3943|96|7|2|9|8964.81|0.00|0.06|N|O|1996-11-27|1997-01-03|1996-12-17|COLLECT COD|RAIL|refully ironic |
-3943|17|4|3|32|29344.32|0.00|0.02|N|O|1996-10-22|1996-12-17|1996-11-04|TAKE BACK RETURN|TRUCK| unusual ideas into the furiously even pack|
-3943|50|1|4|5|4750.25|0.04|0.04|N|O|1997-01-09|1996-11-10|1997-02-06|COLLECT COD|RAIL|arefully regular deposits accord|
-3968|54|2|1|27|25759.35|0.04|0.05|N|O|1997-04-25|1997-04-17|1997-05-11|TAKE BACK RETURN|MAIL|t silently.|
-3968|26|9|2|45|41670.90|0.00|0.07|N|O|1997-06-18|1997-04-24|1997-06-25|DELIVER IN PERSON|FOB|ully slyly fi|
-3968|156|7|3|43|45414.45|0.07|0.06|N|O|1997-04-30|1997-05-14|1997-05-18|TAKE BACK RETURN|SHIP|ly regular accounts|
-3968|61|8|4|7|6727.42|0.07|0.02|N|O|1997-03-30|1997-05-01|1997-04-12|DELIVER IN PERSON|SHIP|efully bold instructions. express|
-3969|52|4|1|39|37129.95|0.04|0.04|N|O|1997-06-12|1997-06-13|1997-07-05|NONE|MAIL|ly bold ideas s|
-3969|197|1|2|26|28526.94|0.05|0.03|N|O|1997-07-08|1997-07-30|1997-07-10|TAKE BACK RETURN|AIR|fluffily; braids detect.|
-3969|79|8|3|46|45037.22|0.04|0.02|N|O|1997-05-29|1997-06-15|1997-06-10|TAKE BACK RETURN|SHIP|fully final requests sleep stealthily. care|
-3969|151|9|4|21|22074.15|0.07|0.04|N|O|1997-08-31|1997-07-16|1997-09-02|TAKE BACK RETURN|MAIL|unts doze quickly final reque|
-3969|72|3|5|40|38882.80|0.09|0.00|N|O|1997-05-19|1997-08-02|1997-06-05|COLLECT COD|TRUCK|lar requests cajole furiously blithely regu|
-3969|105|8|6|4|4020.40|0.02|0.01|N|O|1997-06-04|1997-07-31|1997-06-13|COLLECT COD|REG AIR|dencies wake blithely? quickly even theodo|
-3970|88|9|1|2|1976.16|0.01|0.07|R|F|1992-04-24|1992-06-03|1992-05-16|TAKE BACK RETURN|RAIL|carefully pending foxes wake blithely |
-3970|109|6|2|18|18163.80|0.03|0.08|A|F|1992-06-06|1992-06-18|1992-07-05|DELIVER IN PERSON|TRUCK| maintain slyly. ir|
-3970|154|6|3|10|10541.50|0.10|0.04|A|F|1992-07-01|1992-05-31|1992-07-02|NONE|AIR| special packages wake after the final br|
-3970|22|5|4|34|31348.68|0.05|0.00|A|F|1992-06-25|1992-05-23|1992-07-12|COLLECT COD|SHIP|y final gifts are. carefully pe|
-3970|30|3|5|23|21390.69|0.05|0.04|A|F|1992-06-04|1992-06-14|1992-06-13|COLLECT COD|TRUCK| above the final braids. regular|
-3970|9|6|6|46|41814.00|0.07|0.04|R|F|1992-04-29|1992-05-14|1992-05-24|NONE|FOB|yly ironic|
-3970|5|8|7|46|41630.00|0.08|0.08|R|F|1992-05-02|1992-05-12|1992-05-10|COLLECT COD|MAIL|ix slyly. quickly silen|
-3971|96|8|1|47|46816.23|0.06|0.04|N|O|1996-07-07|1996-08-08|1996-08-01|TAKE BACK RETURN|RAIL|e slyly final dependencies x-ray |
-3971|191|5|2|2|2182.38|0.04|0.03|N|O|1996-07-15|1996-08-12|1996-07-26|NONE|SHIP|haggle abou|
-3972|51|3|1|2|1902.10|0.05|0.03|A|F|1994-07-24|1994-06-30|1994-08-13|TAKE BACK RETURN|SHIP|y final theodolite|
-3973|30|9|1|21|19530.63|0.02|0.06|R|F|1992-06-18|1992-06-03|1992-07-02|COLLECT COD|REG AIR|equests. furiously|
-3973|115|2|2|37|37559.07|0.07|0.00|A|F|1992-05-29|1992-05-04|1992-06-23|TAKE BACK RETURN|SHIP|inos wake fluffily. pending requests nag |
-3973|40|6|3|40|37601.60|0.08|0.05|R|F|1992-05-03|1992-06-09|1992-05-21|COLLECT COD|RAIL|g the carefully blithe f|
-3974|22|1|1|47|43334.94|0.10|0.03|N|O|1996-06-03|1996-05-08|1996-06-28|NONE|TRUCK|dencies above the re|
-3974|61|8|2|17|16338.02|0.05|0.07|N|O|1996-04-05|1996-05-21|1996-04-28|COLLECT COD|TRUCK|ions eat slyly after the blithely |
-3975|57|9|1|38|36367.90|0.01|0.05|N|O|1995-08-02|1995-06-18|1995-08-19|COLLECT COD|TRUCK|es are furiously: furi|
-4000|196|7|1|41|44943.79|0.06|0.01|A|F|1992-03-02|1992-03-14|1992-03-27|COLLECT COD|FOB|ve the even, fi|
-4000|75|5|2|44|42903.08|0.09|0.06|A|F|1992-03-27|1992-02-18|1992-03-31|COLLECT COD|AIR|equests use blithely blithely bold d|
-4001|106|1|1|26|26158.60|0.00|0.01|N|O|1997-07-26|1997-06-18|1997-08-08|DELIVER IN PERSON|RAIL|tegrate blithely|
-4001|41|10|2|19|17879.76|0.03|0.02|N|O|1997-08-23|1997-06-15|1997-09-18|COLLECT COD|SHIP|ackages. carefully ironi|
-4001|94|5|3|18|17893.62|0.07|0.00|N|O|1997-06-04|1997-06-22|1997-06-13|DELIVER IN PERSON|MAIL|lithely ironic d|
-4001|2|9|4|39|35178.00|0.00|0.00|N|O|1997-06-13|1997-06-17|1997-06-25|NONE|SHIP| dogged excuses. blithe|
-4002|111|5|1|35|35388.85|0.01|0.08|N|O|1997-05-16|1997-06-15|1997-06-02|DELIVER IN PERSON|TRUCK|eep. quickly|
-4002|198|9|2|20|21963.80|0.00|0.03|N|O|1997-06-15|1997-05-20|1997-07-11|NONE|MAIL|lly even ins|
-4002|40|1|3|6|5640.24|0.08|0.07|N|O|1997-05-02|1997-07-07|1997-05-16|TAKE BACK RETURN|RAIL| furiously furiously special theodoli|
-4002|199|3|4|6|6595.14|0.06|0.06|N|O|1997-07-01|1997-05-15|1997-07-31|NONE|MAIL|he slyly iro|
-4002|99|1|5|4|3996.36|0.08|0.07|N|O|1997-05-06|1997-06-15|1997-05-24|NONE|REG AIR|ccording to the careful|
-4003|52|4|1|18|17136.90|0.04|0.07|R|F|1993-02-02|1993-04-15|1993-02-28|TAKE BACK RETURN|AIR|ar grouches s|
-4004|121|2|1|23|23485.76|0.07|0.02|A|F|1993-08-12|1993-07-13|1993-08-16|TAKE BACK RETURN|TRUCK| bold theodolites? special packages accordi|
-4004|64|5|2|47|45310.82|0.07|0.04|R|F|1993-06-25|1993-08-03|1993-07-12|NONE|SHIP|thely instead of the even, unu|
-4004|114|5|3|39|39550.29|0.10|0.05|R|F|1993-07-12|1993-07-27|1993-07-18|NONE|MAIL|ccounts sleep furious|
-4004|74|4|4|46|44807.22|0.10|0.04|R|F|1993-09-04|1993-07-13|1993-09-28|COLLECT COD|FOB|ncies. slyly pending dolphins sleep furio|
-4004|155|3|5|9|9496.35|0.04|0.06|A|F|1993-08-25|1993-06-10|1993-09-24|COLLECT COD|MAIL|ly ironic requests. quickly pending ide|
-4004|161|10|6|44|46691.04|0.07|0.05|R|F|1993-07-25|1993-07-23|1993-08-16|TAKE BACK RETURN|REG AIR|ut the sauternes. bold, ironi|
-4004|126|9|7|20|20522.40|0.07|0.05|A|F|1993-06-19|1993-06-14|1993-07-04|COLLECT COD|REG AIR|. ironic deposits cajole blithely?|
-4005|4|1|1|26|23504.00|0.09|0.05|N|O|1996-12-01|1997-02-03|1996-12-15|NONE|REG AIR| to the quic|
-4005|17|8|2|28|25676.28|0.02|0.06|N|O|1996-12-11|1997-01-24|1996-12-17|DELIVER IN PERSON|REG AIR|ly carefully ironic deposits. slyly|
-4005|72|10|3|28|27217.96|0.03|0.01|N|O|1996-12-08|1997-01-14|1996-12-30|TAKE BACK RETURN|MAIL|y pending dependenc|
-4005|15|9|4|49|44835.49|0.09|0.00|N|O|1997-01-31|1996-12-24|1997-03-02|NONE|RAIL|tions sleep across the silent d|
-4005|6|7|5|14|12684.00|0.09|0.08|N|O|1996-11-27|1997-01-09|1996-12-25|NONE|TRUCK|ld requests. slyly final instructi|
-4006|55|7|1|11|10505.55|0.05|0.08|A|F|1995-04-29|1995-02-21|1995-05-20|TAKE BACK RETURN|RAIL|ress foxes cajole quick|
-4006|159|4|2|18|19064.70|0.05|0.03|A|F|1995-01-29|1995-03-08|1995-02-02|TAKE BACK RETURN|MAIL|gouts! slyly iron|
-4006|24|5|3|15|13860.30|0.01|0.02|R|F|1995-02-23|1995-04-02|1995-02-25|TAKE BACK RETURN|RAIL|n deposits cajole slyl|
-4006|114|5|4|25|25352.75|0.00|0.07|A|F|1995-02-23|1995-02-09|1995-02-24|DELIVER IN PERSON|SHIP| requests use depos|
-4007|57|2|1|32|30625.60|0.00|0.03|R|F|1993-09-30|1993-08-16|1993-10-03|DELIVER IN PERSON|RAIL|nal accounts across t|
-4007|116|10|2|41|41660.51|0.04|0.06|A|F|1993-10-11|1993-08-30|1993-11-04|DELIVER IN PERSON|TRUCK|eposits. regular epitaphs boost blithely.|
-4007|102|9|3|5|5010.50|0.09|0.06|A|F|1993-09-17|1993-08-29|1993-10-12|TAKE BACK RETURN|FOB|y unusual packa|
-4007|138|4|4|15|15571.95|0.05|0.02|A|F|1993-09-01|1993-07-19|1993-09-03|DELIVER IN PERSON|FOB|le furiously quickly |
-4007|26|7|5|23|21298.46|0.02|0.07|A|F|1993-10-08|1993-09-09|1993-10-23|COLLECT COD|MAIL|ter the accounts. expr|
-4032|102|3|1|8|8016.80|0.06|0.00|N|O|1998-06-04|1998-05-17|1998-07-03|TAKE BACK RETURN|RAIL|ometimes even cou|
-4032|2|9|2|27|24354.00|0.09|0.00|N|O|1998-05-31|1998-04-19|1998-06-24|COLLECT COD|REG AIR|le furiously according to|
-4032|154|2|3|23|24245.45|0.09|0.06|N|O|1998-06-12|1998-05-11|1998-06-24|COLLECT COD|MAIL|ording to the |
-4032|85|6|4|10|9850.80|0.09|0.05|N|O|1998-03-31|1998-04-22|1998-04-07|NONE|REG AIR| carefully bol|
-4033|110|1|1|27|27272.97|0.01|0.04|R|F|1993-08-08|1993-08-14|1993-08-09|NONE|AIR|pinto beans|
-4033|38|4|2|34|31893.02|0.07|0.00|R|F|1993-07-19|1993-08-05|1993-07-26|NONE|RAIL|t the blithely dogg|
-4034|190|1|1|48|52329.12|0.03|0.03|A|F|1994-03-01|1994-01-16|1994-03-16|NONE|RAIL| blithely regular requests play carefull|
-4034|57|5|2|47|44981.35|0.07|0.05|A|F|1994-01-27|1993-12-26|1994-02-04|NONE|TRUCK|eodolites was slyly ironic ideas. de|
-4034|54|5|3|43|41024.15|0.10|0.03|A|F|1993-11-29|1994-01-08|1993-12-10|DELIVER IN PERSON|FOB|posits wake carefully af|
-4034|28|9|4|46|42688.92|0.06|0.00|A|F|1994-02-22|1994-01-09|1994-03-04|DELIVER IN PERSON|AIR|uests. furiously unusual instructions wake|
-4034|196|10|5|7|7673.33|0.07|0.06|R|F|1994-03-04|1994-01-22|1994-04-01|NONE|AIR|y even theodolites. slyly regular instru|
-4034|50|9|6|5|4750.25|0.01|0.06|A|F|1994-02-12|1994-01-24|1994-02-13|COLLECT COD|AIR|fully around the furiously ironic re|
-4035|97|8|1|4|3988.36|0.08|0.03|R|F|1992-04-21|1992-04-23|1992-04-25|COLLECT COD|AIR|ilent, even pear|
-4035|136|7|2|4|4144.52|0.07|0.00|A|F|1992-05-21|1992-04-24|1992-05-24|DELIVER IN PERSON|FOB|en instructions sleep blith|
-4035|118|8|3|1|1018.11|0.03|0.01|R|F|1992-06-18|1992-05-19|1992-07-02|COLLECT COD|FOB| requests. quickly |
-4035|182|3|4|13|14068.34|0.00|0.01|R|F|1992-06-10|1992-05-16|1992-07-10|NONE|SHIP|s. furiously even courts wake slyly|
-4036|6|1|1|46|41676.00|0.09|0.00|N|O|1997-06-21|1997-05-29|1997-07-18|NONE|REG AIR|usly across the even th|
-4036|53|1|2|21|20014.05|0.09|0.07|N|O|1997-08-08|1997-06-28|1997-08-09|COLLECT COD|MAIL|e carefully. qui|
-4036|142|3|3|6|6252.84|0.07|0.01|N|O|1997-06-19|1997-06-16|1997-07-01|DELIVER IN PERSON|SHIP|equests wake about the bold id|
-4036|127|10|4|20|20542.40|0.08|0.02|N|O|1997-08-11|1997-07-11|1997-09-03|NONE|TRUCK|slyly bold deposits cajole pending, blithe|
-4037|64|9|1|32|30849.92|0.00|0.06|A|F|1993-05-06|1993-06-08|1993-05-31|DELIVER IN PERSON|AIR|e of the pending, iron|
-4037|47|8|2|4|3788.16|0.09|0.07|A|F|1993-07-05|1993-06-12|1993-08-03|DELIVER IN PERSON|RAIL|s around the blithely ironic ac|
-4038|196|10|1|40|43847.60|0.05|0.01|N|O|1996-01-15|1996-03-13|1996-01-25|COLLECT COD|TRUCK|t. slyly silent pinto beans amo|
-4038|12|9|2|37|33744.37|0.04|0.03|N|O|1996-03-17|1996-03-19|1996-04-07|DELIVER IN PERSON|REG AIR| packages |
-4038|32|3|3|24|22368.72|0.10|0.04|N|O|1996-04-06|1996-02-15|1996-04-18|TAKE BACK RETURN|RAIL|the furiously regu|
-4038|150|1|4|29|30454.35|0.07|0.06|N|O|1996-01-07|1996-03-08|1996-01-13|NONE|FOB|ffix. quietly ironic packages a|
-4038|79|7|5|24|23497.68|0.07|0.06|N|O|1996-04-01|1996-04-05|1996-04-28|DELIVER IN PERSON|TRUCK|ake quickly after the final, ironic ac|
-4038|36|2|6|6|5616.18|0.07|0.05|N|O|1996-02-09|1996-03-05|1996-03-10|COLLECT COD|SHIP| special instructions. packa|
-4039|94|5|1|38|37775.42|0.03|0.06|N|O|1998-03-09|1997-12-31|1998-03-21|DELIVER IN PERSON|REG AIR|sual asymptotes. ironic deposits nag aft|
-4039|122|5|2|17|17376.04|0.10|0.04|N|O|1998-01-15|1998-01-20|1998-01-28|TAKE BACK RETURN|MAIL| regular foxes haggle carefully bo|
-4039|64|1|3|9|8676.54|0.10|0.01|N|O|1998-03-08|1998-02-05|1998-04-05|TAKE BACK RETURN|FOB|t? pinto beans cajole across the thinly r|
-4039|28|3|4|43|39904.86|0.01|0.02|N|O|1998-01-02|1997-12-22|1998-01-15|NONE|FOB|beans believe bene|
-4039|134|5|5|43|44467.59|0.09|0.00|N|O|1998-01-20|1998-01-11|1998-02-05|COLLECT COD|SHIP|sts along the regular in|
-4064|199|1|1|3|3297.57|0.10|0.04|N|O|1997-01-04|1997-01-01|1997-01-23|NONE|SHIP|its! quickly sp|
-4064|40|6|2|15|14100.60|0.02|0.02|N|O|1996-11-09|1996-12-04|1996-11-18|DELIVER IN PERSON|MAIL|braids affix across the regular sheave|
-4064|197|10|3|32|35110.08|0.04|0.07|N|O|1997-01-14|1997-01-01|1997-01-21|COLLECT COD|REG AIR|es boost. careful|
-4064|163|8|4|24|25515.84|0.02|0.02|N|O|1997-01-01|1996-12-31|1997-01-23|DELIVER IN PERSON|SHIP|ly regular ideas.|
-4064|21|2|5|12|11052.24|0.08|0.08|N|O|1997-02-08|1996-12-18|1997-03-06|TAKE BACK RETURN|RAIL|ding to the requests|
-4064|184|5|6|46|49872.28|0.03|0.00|N|O|1996-10-13|1997-01-05|1996-11-06|DELIVER IN PERSON|REG AIR|alongside of the f|
-4064|200|2|7|9|9901.80|0.01|0.06|N|O|1996-12-17|1996-12-13|1997-01-12|NONE|AIR|furiously f|
-4065|138|9|1|14|14533.82|0.04|0.02|A|F|1994-08-22|1994-07-29|1994-09-19|DELIVER IN PERSON|TRUCK|e furiously outside |
-4065|15|6|2|46|42090.46|0.03|0.05|A|F|1994-06-29|1994-08-01|1994-07-03|TAKE BACK RETURN|SHIP|, regular requests may mold above the |
-4065|97|10|3|33|32903.97|0.00|0.03|A|F|1994-09-03|1994-08-16|1994-09-13|DELIVER IN PERSON|AIR|ain blithely |
-4065|107|2|4|8|8056.80|0.00|0.01|R|F|1994-10-04|1994-08-05|1994-10-25|TAKE BACK RETURN|SHIP|ages haggle carefully|
-4065|123|4|5|29|29670.48|0.02|0.07|A|F|1994-06-29|1994-08-19|1994-07-17|NONE|RAIL|equests. packages sleep slyl|
-4065|110|5|6|16|16161.76|0.05|0.00|R|F|1994-08-25|1994-08-06|1994-09-09|COLLECT COD|TRUCK|ncies use furiously. quickly un|
-4065|144|7|7|11|11485.54|0.10|0.04|A|F|1994-07-25|1994-08-02|1994-07-30|NONE|RAIL|hang silently about |
-4066|139|5|1|9|9352.17|0.01|0.05|N|O|1997-05-06|1997-03-25|1997-05-27|COLLECT COD|FOB|nal, ironic accounts. blithel|
-4066|93|5|2|19|18868.71|0.05|0.00|N|O|1997-05-13|1997-04-17|1997-06-08|NONE|TRUCK|quests. slyly regu|
-4066|76|5|3|8|7808.56|0.03|0.03|N|O|1997-04-24|1997-03-11|1997-05-20|NONE|REG AIR|accounts. special pinto beans|
-4066|179|9|4|49|52879.33|0.01|0.01|N|O|1997-02-17|1997-03-24|1997-02-19|NONE|TRUCK|ial braids. furiously final deposits sl|
-4066|171|2|5|43|46060.31|0.05|0.02|N|O|1997-02-16|1997-04-14|1997-02-18|DELIVER IN PERSON|MAIL|r instructions. slyly special |
-4066|109|2|6|44|44400.40|0.01|0.00|N|O|1997-03-01|1997-04-27|1997-03-29|DELIVER IN PERSON|MAIL|express accounts nag bli|
-4067|180|1|1|18|19443.24|0.03|0.08|A|F|1993-01-24|1992-12-23|1993-02-20|TAKE BACK RETURN|FOB|e the slyly final packages d|
-4067|96|10|2|14|13945.26|0.00|0.00|R|F|1993-02-03|1992-12-02|1993-02-07|TAKE BACK RETURN|TRUCK|ructions. quickly ironic accounts detect |
-4067|141|10|3|17|17699.38|0.03|0.05|A|F|1993-01-26|1992-11-23|1993-01-27|NONE|REG AIR|ts haggle slyly unusual, final|
-4067|90|1|4|40|39603.60|0.07|0.08|R|F|1993-01-09|1992-11-21|1993-01-16|DELIVER IN PERSON|TRUCK|lar theodolites nag blithely above the|
-4067|85|6|5|17|16746.36|0.08|0.03|A|F|1993-01-20|1992-12-29|1993-02-03|DELIVER IN PERSON|REG AIR|r accounts. slyly special pa|
-4067|96|8|6|12|11953.08|0.04|0.03|A|F|1992-12-12|1992-11-28|1992-12-15|DELIVER IN PERSON|AIR|lly slyly even theodol|
-4067|83|4|7|17|16712.36|0.01|0.01|R|F|1992-12-12|1992-12-23|1992-12-30|NONE|AIR|ts affix. regular, regular requests s|
-4068|110|1|1|43|43434.73|0.05|0.06|N|O|1996-11-28|1996-11-16|1996-12-22|NONE|AIR|ructions. regular, special packag|
-4068|57|5|2|31|29668.55|0.08|0.03|N|O|1996-12-11|1996-12-07|1996-12-30|NONE|SHIP|ds wake carefully amon|
-4069|129|2|1|39|40135.68|0.09|0.02|R|F|1992-09-06|1992-07-22|1992-09-25|COLLECT COD|SHIP|ven theodolites nag quickly. fluffi|
-4069|43|4|2|32|30177.28|0.10|0.08|A|F|1992-06-18|1992-07-20|1992-07-07|TAKE BACK RETURN|TRUCK|unts. deposit|
-4069|186|7|3|3|3258.54|0.06|0.01|R|F|1992-07-26|1992-07-07|1992-08-04|COLLECT COD|FOB|l packages. even, |
-4069|79|8|4|22|21539.54|0.10|0.05|A|F|1992-08-05|1992-08-04|1992-08-25|COLLECT COD|SHIP|ts. slyly special instruction|
-4069|157|5|5|50|52857.50|0.09|0.06|A|F|1992-07-26|1992-06-30|1992-08-01|TAKE BACK RETURN|REG AIR|even foxes among the express wate|
-4069|125|8|6|3|3075.36|0.02|0.01|A|F|1992-05-24|1992-06-18|1992-06-12|COLLECT COD|MAIL|y final deposits wake furiously! slyl|
-4069|184|5|7|50|54209.00|0.00|0.01|R|F|1992-09-03|1992-06-14|1992-10-01|NONE|REG AIR|ages. carefully regular |
-4070|183|4|1|2|2166.36|0.09|0.08|N|O|1995-08-03|1995-09-10|1995-08-17|TAKE BACK RETURN|REG AIR|ptotes affix|
-4070|155|3|2|40|42206.00|0.07|0.07|N|O|1995-07-13|1995-07-23|1995-08-06|COLLECT COD|MAIL|about the sentiments. quick|
-4070|62|3|3|11|10582.66|0.00|0.08|N|O|1995-08-23|1995-08-15|1995-08-31|TAKE BACK RETURN|MAIL| carefully final pack|
-4070|29|4|4|46|42734.92|0.02|0.02|N|O|1995-06-22|1995-07-14|1995-07-11|DELIVER IN PERSON|REG AIR|nticing ideas. boldly|
-4071|112|2|1|22|22266.42|0.02|0.07|N|O|1996-10-31|1996-12-14|1996-11-05|NONE|REG AIR|sits cajole carefully final instructio|
-4071|18|8|2|47|43146.47|0.00|0.03|N|O|1996-11-04|1996-12-09|1996-11-16|NONE|TRUCK|ts cajole furiously along the|
-4096|27|10|1|31|28737.62|0.10|0.02|A|F|1992-07-14|1992-09-03|1992-07-31|COLLECT COD|TRUCK|y final, even platelets. boldly|
-4096|57|9|2|17|16269.85|0.07|0.03|R|F|1992-09-30|1992-08-11|1992-10-11|TAKE BACK RETURN|REG AIR|platelets alongside of the |
-4096|9|10|3|21|19089.00|0.08|0.00|A|F|1992-08-24|1992-09-04|1992-09-11|DELIVER IN PERSON|MAIL|tes mold flu|
-4096|128|3|4|20|20562.40|0.02|0.07|R|F|1992-08-24|1992-09-13|1992-08-28|DELIVER IN PERSON|TRUCK|sual requests. furiously bold packages wake|
-4097|74|5|1|50|48703.50|0.04|0.04|N|O|1996-08-31|1996-08-14|1996-09-27|DELIVER IN PERSON|MAIL|egular deposits. blithely pending|
-4097|74|4|2|46|44807.22|0.10|0.01|N|O|1996-07-29|1996-08-19|1996-08-25|COLLECT COD|AIR| even depend|
-4097|174|2|3|42|45115.14|0.06|0.06|N|O|1996-08-11|1996-07-30|1996-08-15|NONE|FOB|carefully silent foxes are against the |
-4098|200|1|1|46|50609.20|0.07|0.03|N|O|1997-01-26|1997-01-27|1997-02-13|TAKE BACK RETURN|SHIP|e slyly blithely silent deposits. fluff|
-4099|4|7|1|29|26216.00|0.09|0.07|R|F|1992-11-21|1992-11-04|1992-11-30|NONE|FOB| slowly final warthogs sleep blithely. q|
-4099|137|3|2|3|3111.39|0.04|0.06|A|F|1992-09-12|1992-10-18|1992-10-01|NONE|RAIL|. special packages sleep|
-4099|51|3|3|36|34237.80|0.06|0.06|R|F|1992-11-06|1992-09-28|1992-12-02|NONE|FOB|beans cajole slyly quickly ironic |
-4099|139|5|4|7|7273.91|0.05|0.02|A|F|1992-09-12|1992-11-13|1992-09-14|TAKE BACK RETURN|AIR|onic foxes. quickly final fox|
-4099|163|10|5|48|51031.68|0.00|0.02|R|F|1992-10-18|1992-10-14|1992-11-01|NONE|REG AIR|ts haggle according to the slyly f|
-4099|59|10|6|39|37402.95|0.07|0.02|R|F|1992-12-13|1992-11-13|1992-12-26|DELIVER IN PERSON|REG AIR|fluffy accounts impress pending, iro|
-4099|180|8|7|46|49688.28|0.06|0.07|R|F|1992-10-29|1992-11-03|1992-11-10|DELIVER IN PERSON|REG AIR|ages nag requests.|
-4100|74|5|1|4|3896.28|0.03|0.03|N|O|1996-06-20|1996-04-29|1996-06-21|TAKE BACK RETURN|FOB|lyly regular, bold requ|
-4101|115|2|1|22|22332.42|0.05|0.02|R|F|1994-02-02|1994-02-19|1994-02-12|COLLECT COD|AIR|ly express instructions. careful|
-4102|10|3|1|17|15470.17|0.02|0.02|N|O|1996-06-03|1996-05-06|1996-07-02|COLLECT COD|AIR|ly silent theodolites sleep unusual exc|
-4102|69|8|2|5|4845.30|0.08|0.02|N|O|1996-05-11|1996-05-11|1996-05-16|COLLECT COD|AIR| the furiously even|
-4102|67|4|3|39|37715.34|0.08|0.01|N|O|1996-04-14|1996-05-18|1996-04-20|DELIVER IN PERSON|AIR|ffix blithely slyly special |
-4102|140|6|4|39|40565.46|0.02|0.00|N|O|1996-06-15|1996-06-06|1996-06-30|DELIVER IN PERSON|SHIP|y among the furiously special|
-4102|1|6|5|32|28832.00|0.08|0.01|N|O|1996-05-14|1996-04-29|1996-05-29|NONE|RAIL| the even requests; regular pinto|
-4102|137|8|6|7|7259.91|0.02|0.01|N|O|1996-06-19|1996-05-21|1996-07-15|NONE|REG AIR|bove the carefully pending the|
-4103|75|4|1|40|39002.80|0.05|0.03|R|F|1992-09-19|1992-08-14|1992-09-21|COLLECT COD|RAIL|usly across the slyly busy accounts! fin|
-4128|196|8|1|5|5480.95|0.04|0.04|N|O|1995-10-18|1995-11-28|1995-10-28|TAKE BACK RETURN|FOB|ake permanently |
-4129|56|8|1|32|30593.60|0.03|0.04|A|F|1993-09-16|1993-08-25|1993-09-25|TAKE BACK RETURN|MAIL|ckages haggl|
-4129|27|6|2|39|36153.78|0.06|0.07|R|F|1993-10-21|1993-08-04|1993-10-29|COLLECT COD|MAIL|y regular foxes. slyly ironic deposits |
-4130|178|6|1|44|47439.48|0.07|0.04|N|O|1996-05-14|1996-04-15|1996-05-15|COLLECT COD|TRUCK|eaves haggle qui|
-4130|63|10|2|2|1926.12|0.05|0.06|N|O|1996-05-19|1996-04-24|1996-06-17|TAKE BACK RETURN|RAIL|uriously regular instructions around th|
-4131|50|7|1|6|5700.30|0.05|0.01|N|O|1998-04-27|1998-04-18|1998-04-29|TAKE BACK RETURN|MAIL|ns cajole slyly. even, iro|
-4131|178|8|2|32|34501.44|0.08|0.01|N|O|1998-03-02|1998-03-21|1998-03-07|TAKE BACK RETURN|TRUCK| furiously regular asymptotes nod sly|
-4131|26|9|3|25|23150.50|0.02|0.07|N|O|1998-02-24|1998-03-01|1998-02-27|TAKE BACK RETURN|FOB|uickly exp|
-4131|36|7|4|8|7488.24|0.04|0.01|N|O|1998-03-03|1998-03-15|1998-03-26|COLLECT COD|FOB| after the furiously ironic d|
-4131|125|6|5|30|30753.60|0.01|0.01|N|O|1998-04-01|1998-04-13|1998-04-08|TAKE BACK RETURN|FOB|he fluffily express depen|
-4131|102|7|6|47|47098.70|0.02|0.00|N|O|1998-03-09|1998-04-05|1998-03-13|TAKE BACK RETURN|RAIL|ges. ironic pinto be|
-4132|138|4|1|28|29067.64|0.07|0.03|N|O|1995-08-16|1995-08-01|1995-08-29|TAKE BACK RETURN|SHIP|pths wake against the stealthily special pi|
-4132|15|5|2|23|21045.23|0.07|0.07|N|O|1995-06-27|1995-07-27|1995-07-13|TAKE BACK RETURN|FOB|d deposits. fluffily even requests haggle b|
-4132|87|8|3|18|17767.44|0.09|0.04|A|F|1995-06-01|1995-08-01|1995-06-02|TAKE BACK RETURN|RAIL|y final de|
-4133|24|5|1|35|32340.70|0.02|0.00|A|F|1992-11-25|1992-09-15|1992-12-25|NONE|AIR|g above the quickly bold packages. ev|
-4134|121|4|1|34|34718.08|0.02|0.05|R|F|1995-04-29|1995-03-13|1995-05-11|DELIVER IN PERSON|FOB|e furiously regular sheaves sleep|
-4134|96|10|2|34|33867.06|0.01|0.03|A|F|1995-05-06|1995-03-28|1995-05-13|DELIVER IN PERSON|SHIP|ual asymptotes wake carefully alo|
-4134|171|9|3|12|12854.04|0.05|0.04|A|F|1995-03-19|1995-03-27|1995-04-14|COLLECT COD|TRUCK|kly above the quickly regular |
-4134|100|4|4|45|45004.50|0.08|0.02|A|F|1995-04-11|1995-03-27|1995-04-17|TAKE BACK RETURN|MAIL|ironic pin|
-4135|2|3|1|23|20746.00|0.06|0.01|N|O|1997-04-09|1997-05-12|1997-04-16|TAKE BACK RETURN|FOB|posits cajole furiously carefully|
-4135|120|1|2|32|32643.84|0.07|0.00|N|O|1997-03-14|1997-04-23|1997-04-12|TAKE BACK RETURN|TRUCK| ideas. requests use. furiously|
-4135|160|5|3|33|34985.28|0.05|0.05|N|O|1997-05-01|1997-05-23|1997-05-23|DELIVER IN PERSON|AIR|he fluffil|
-4135|195|6|4|13|14237.47|0.04|0.07|N|O|1997-03-16|1997-05-19|1997-04-03|COLLECT COD|RAIL|efully special account|
-4160|113|10|1|25|25327.75|0.10|0.04|N|O|1996-09-22|1996-10-17|1996-09-24|NONE|SHIP|ar accounts sleep blithe|
-4160|122|7|2|12|12265.44|0.00|0.03|N|O|1996-11-22|1996-09-25|1996-12-10|DELIVER IN PERSON|REG AIR|y bold package|
-4160|63|4|3|48|46226.88|0.04|0.04|N|O|1996-09-19|1996-11-02|1996-09-24|COLLECT COD|FOB| unusual dolphins |
-4161|122|7|1|12|12265.44|0.08|0.02|R|F|1993-08-25|1993-10-04|1993-09-22|COLLECT COD|RAIL|onic dolphins. in|
-4161|28|3|2|47|43616.94|0.05|0.00|A|F|1993-12-20|1993-10-29|1994-01-19|TAKE BACK RETURN|RAIL|r requests about the final, even foxes hag|
-4161|138|4|3|42|43601.46|0.03|0.04|R|F|1993-11-12|1993-10-04|1993-11-27|COLLECT COD|MAIL|thely across the even attainments. express|
-4161|10|5|4|45|40950.45|0.02|0.06|A|F|1993-10-22|1993-10-17|1993-10-30|COLLECT COD|REG AIR|about the ironic packages cajole blithe|
-4161|29|10|5|46|42734.92|0.05|0.01|A|F|1993-11-09|1993-11-17|1993-11-17|TAKE BACK RETURN|TRUCK|he stealthily ironic foxes. ideas haggl|
-4161|148|9|6|19|19914.66|0.07|0.00|R|F|1993-08-22|1993-11-11|1993-09-01|TAKE BACK RETURN|REG AIR|beans breach s|
-4162|74|3|1|45|43833.15|0.10|0.07|A|F|1992-03-21|1992-05-02|1992-03-29|DELIVER IN PERSON|AIR|elets. slyly regular i|
-4162|90|1|2|29|28712.61|0.00|0.05|R|F|1992-02-25|1992-04-25|1992-03-17|NONE|REG AIR|nding pinto beans haggle blithe|
-4163|33|4|1|13|12129.39|0.08|0.03|A|F|1993-02-17|1993-03-13|1993-03-15|DELIVER IN PERSON|REG AIR|phins wake. pending requests inte|
-4164|120|7|1|9|9181.08|0.07|0.02|N|O|1998-08-25|1998-08-13|1998-09-19|DELIVER IN PERSON|SHIP|re fluffily slyly bold requests. |
-4165|41|2|1|12|11292.48|0.00|0.01|N|O|1997-09-20|1997-10-20|1997-10-12|TAKE BACK RETURN|REG AIR|nwind slow theodolites. carefully pending |
-4166|141|10|1|8|8329.12|0.00|0.08|A|F|1993-06-05|1993-04-10|1993-07-05|COLLECT COD|MAIL|uickly. blithely pending de|
-4166|93|5|2|8|7944.72|0.06|0.04|A|F|1993-06-07|1993-04-17|1993-06-16|DELIVER IN PERSON|REG AIR|es along the furiously regular acc|
-4166|7|10|3|17|15419.00|0.02|0.06|R|F|1993-06-29|1993-05-15|1993-07-24|DELIVER IN PERSON|SHIP|ackages. re|
-4166|86|7|4|36|35498.88|0.06|0.05|R|F|1993-03-01|1993-05-25|1993-03-05|COLLECT COD|MAIL|unts. furiously express accounts w|
-4166|77|6|5|5|4885.35|0.08|0.01|A|F|1993-06-19|1993-04-24|1993-06-27|NONE|REG AIR|hely unusual packages are above the f|
-4166|102|5|6|6|6012.60|0.04|0.08|R|F|1993-04-30|1993-04-17|1993-05-08|DELIVER IN PERSON|MAIL|ily ironic deposits print furiously. iron|
-4166|24|5|7|26|24024.52|0.09|0.01|R|F|1993-03-17|1993-05-09|1993-03-25|NONE|MAIL|lar dependencies. s|
-4167|61|8|1|47|45169.82|0.04|0.02|N|O|1998-08-02|1998-08-24|1998-08-28|DELIVER IN PERSON|REG AIR| carefully final asymptotes. slyly bo|
-4167|87|8|2|17|16780.36|0.06|0.07|N|O|1998-09-18|1998-09-06|1998-10-07|COLLECT COD|REG AIR|ly around the even instr|
-4167|73|3|3|1|973.07|0.03|0.06|N|O|1998-10-11|1998-08-14|1998-10-13|COLLECT COD|TRUCK|xpress platelets. blithely |
-4192|11|1|1|36|32796.36|0.06|0.08|N|O|1998-04-25|1998-05-26|1998-05-03|COLLECT COD|TRUCK|eodolites sleep|
-4192|121|6|2|15|15316.80|0.04|0.08|N|O|1998-06-26|1998-05-26|1998-07-16|COLLECT COD|AIR|e slyly special grouches. express pinto b|
-4192|135|6|3|7|7245.91|0.06|0.03|N|O|1998-05-19|1998-07-08|1998-05-31|COLLECT COD|FOB|y; excuses use. ironic, close instru|
-4192|24|3|4|32|29568.64|0.09|0.04|N|O|1998-06-23|1998-06-25|1998-07-17|NONE|FOB|ounts are fluffily slyly bold req|
-4192|48|7|5|48|45505.92|0.08|0.01|N|O|1998-08-17|1998-07-11|1998-09-03|NONE|AIR|ests. quickly bol|
-4192|150|7|6|44|46206.60|0.10|0.02|N|O|1998-08-06|1998-07-09|1998-08-20|NONE|FOB|structions mai|
-4192|170|5|7|27|28894.59|0.02|0.00|N|O|1998-07-03|1998-06-26|1998-07-13|TAKE BACK RETURN|AIR| carefully even escapades. care|
-4193|131|7|1|37|38151.81|0.09|0.06|A|F|1994-04-25|1994-02-24|1994-05-08|NONE|AIR|er the quickly regular dependencies wake|
-4193|117|7|2|3|3051.33|0.09|0.05|R|F|1994-04-29|1994-03-20|1994-05-29|TAKE BACK RETURN|REG AIR|osits above the depo|
-4193|179|10|3|10|10791.70|0.06|0.03|A|F|1994-02-10|1994-03-22|1994-03-09|COLLECT COD|RAIL|uffily spe|
-4193|51|9|4|29|27580.45|0.09|0.05|A|F|1994-02-11|1994-03-11|1994-03-13|TAKE BACK RETURN|RAIL|ly. final packages use blit|
-4193|20|7|5|50|46001.00|0.01|0.01|R|F|1994-04-28|1994-03-23|1994-05-09|NONE|FOB| beans. regular accounts cajole. de|
-4193|66|1|6|21|20287.26|0.02|0.04|R|F|1994-04-26|1994-03-22|1994-05-23|DELIVER IN PERSON|TRUCK|accounts cajole b|
-4194|197|1|1|43|47179.17|0.08|0.06|A|F|1994-11-06|1994-12-09|1994-11-16|NONE|TRUCK|olites are after the exp|
-4194|47|10|2|18|17046.72|0.07|0.07|A|F|1995-02-14|1994-12-04|1995-03-11|TAKE BACK RETURN|TRUCK|ld packages. quickly eve|
-4195|6|9|1|14|12684.00|0.09|0.04|R|F|1993-09-06|1993-07-21|1993-09-18|DELIVER IN PERSON|REG AIR|ironic packages. carefully express|
-4195|66|1|2|22|21253.32|0.10|0.08|R|F|1993-07-01|1993-07-23|1993-07-28|COLLECT COD|RAIL|lly express pinto bea|
-4195|194|8|3|19|20789.61|0.01|0.06|R|F|1993-09-06|1993-08-13|1993-09-15|TAKE BACK RETURN|REG AIR|telets sleep even requests. final, even i|
-4196|156|4|1|30|31684.50|0.02|0.06|N|O|1998-08-09|1998-06-30|1998-09-05|COLLECT COD|SHIP|egular foxes us|
-4196|9|6|2|31|28179.00|0.09|0.08|N|O|1998-06-12|1998-07-28|1998-07-11|NONE|MAIL|ut the blithely ironic inst|
-4196|178|9|3|46|49595.82|0.05|0.00|N|O|1998-09-05|1998-06-28|1998-09-10|TAKE BACK RETURN|MAIL|according to t|
-4196|114|8|4|42|42592.62|0.04|0.06|N|O|1998-08-13|1998-07-18|1998-09-07|TAKE BACK RETURN|AIR| instructions. courts cajole slyly ev|
-4196|72|2|5|3|2916.21|0.01|0.03|N|O|1998-05-17|1998-07-21|1998-05-18|DELIVER IN PERSON|TRUCK| accounts. fu|
-4196|87|8|6|43|42444.44|0.01|0.06|N|O|1998-08-12|1998-07-12|1998-08-22|DELIVER IN PERSON|FOB|es. slyly even |
-4196|4|1|7|3|2712.00|0.00|0.06|N|O|1998-08-05|1998-07-28|1998-08-15|DELIVER IN PERSON|REG AIR|y regular packages haggle furiously alongs|
-4197|129|8|1|50|51456.00|0.06|0.03|N|O|1996-11-15|1996-11-01|1996-11-20|NONE|FOB|. carefully bold asymptotes nag blithe|
-4197|70|9|2|39|37832.73|0.02|0.08|N|O|1996-10-07|1996-10-11|1996-10-18|DELIVER IN PERSON|RAIL|ronic requests. quickly bold packages in|
-4197|32|8|3|28|26096.84|0.06|0.02|N|O|1996-10-05|1996-10-24|1996-10-22|TAKE BACK RETURN|AIR|regular pin|
-4197|96|7|4|23|22910.07|0.00|0.03|N|O|1996-09-10|1996-10-10|1996-09-25|NONE|AIR|l instructions print slyly past the reg|
-4197|121|6|5|37|37781.44|0.03|0.04|N|O|1996-10-20|1996-10-10|1996-11-10|COLLECT COD|TRUCK|carefully enticing decoys boo|
-4197|31|7|6|48|44689.44|0.08|0.00|N|O|1996-10-07|1996-10-25|1996-10-23|COLLECT COD|REG AIR| final instructions. blithe, spe|
-4198|146|9|1|48|50214.72|0.09|0.05|N|O|1997-09-03|1997-07-18|1997-09-11|NONE|REG AIR|cajole carefully final, ironic ide|
-4198|143|6|2|46|47984.44|0.09|0.01|N|O|1997-08-17|1997-09-08|1997-09-11|COLLECT COD|TRUCK|posits among th|
-4198|145|4|3|13|13586.82|0.03|0.04|N|O|1997-07-18|1997-07-24|1997-08-10|NONE|REG AIR| furious excuses. bli|
-4199|70|5|1|16|15521.12|0.10|0.00|A|F|1992-06-11|1992-04-10|1992-07-10|COLLECT COD|TRUCK|ncies. furiously special accounts|
-4199|9|10|2|18|16362.00|0.00|0.01|A|F|1992-06-01|1992-03-30|1992-06-28|DELIVER IN PERSON|RAIL|pending, regular accounts. carefully|
-4224|199|10|1|27|29678.13|0.05|0.03|N|O|1997-09-05|1997-08-19|1997-09-30|NONE|SHIP|ly special deposits sleep qui|
-4224|37|3|2|20|18740.60|0.07|0.05|N|O|1997-11-09|1997-08-23|1997-11-14|NONE|FOB|unts promise across the requests. blith|
-4224|24|7|3|4|3696.08|0.08|0.05|N|O|1997-09-07|1997-09-05|1997-09-25|TAKE BACK RETURN|FOB| even dinos. carefull|
-4224|160|2|4|50|53008.00|0.10|0.06|N|O|1997-07-30|1997-09-10|1997-08-19|COLLECT COD|RAIL|side of the carefully silent dep|
-4224|85|6|5|48|47283.84|0.00|0.04|N|O|1997-10-03|1997-08-31|1997-10-10|NONE|RAIL| final, regular asymptotes use alway|
-4225|49|8|1|25|23726.00|0.08|0.04|N|O|1997-07-10|1997-08-08|1997-07-31|TAKE BACK RETURN|TRUCK|se fluffily. busily ironic requests are;|
-4225|96|8|2|23|22910.07|0.02|0.04|N|O|1997-09-18|1997-08-31|1997-10-11|TAKE BACK RETURN|RAIL|. quickly b|
-4225|98|10|3|28|27946.52|0.08|0.03|N|O|1997-07-11|1997-09-01|1997-08-03|DELIVER IN PERSON|FOB|ts are requests. even, bold depos|
-4226|188|9|1|27|29380.86|0.06|0.08|A|F|1993-05-03|1993-04-12|1993-05-16|COLLECT COD|AIR|sly alongside of the slyly ironic pac|
-4227|158|6|1|19|20104.85|0.01|0.08|A|F|1995-05-05|1995-05-03|1995-05-22|COLLECT COD|REG AIR|ns sleep along the blithely even theodolit|
-4227|33|4|2|8|7464.24|0.09|0.00|N|F|1995-06-11|1995-04-30|1995-06-28|COLLECT COD|REG AIR| packages since the bold, u|
-4227|75|6|3|11|10725.77|0.10|0.04|A|F|1995-03-30|1995-05-02|1995-04-26|DELIVER IN PERSON|SHIP|l requests-- bold requests cajole dogg|
-4227|200|4|4|2|2200.40|0.02|0.05|R|F|1995-04-24|1995-05-09|1995-05-21|DELIVER IN PERSON|AIR|ep. specia|
-4227|147|6|5|49|51309.86|0.05|0.06|R|F|1995-05-19|1995-04-12|1995-06-12|TAKE BACK RETURN|REG AIR|ts sleep blithely carefully unusual ideas.|
-4228|141|10|1|20|20822.80|0.00|0.06|N|O|1997-04-24|1997-05-29|1997-05-17|NONE|RAIL|f the slyly fluffy pinto beans are|
-4229|96|9|1|44|43827.96|0.02|0.05|N|O|1998-05-29|1998-05-12|1998-06-16|DELIVER IN PERSON|AIR|s. carefully e|
-4229|5|8|2|34|30770.00|0.07|0.05|N|O|1998-05-26|1998-04-13|1998-06-08|DELIVER IN PERSON|MAIL|thely final accounts use even packa|
-4230|46|5|1|38|35949.52|0.10|0.03|A|F|1992-04-28|1992-04-21|1992-05-28|TAKE BACK RETURN|FOB|ly regular packages. regular ideas boost|
-4230|199|3|2|43|47265.17|0.02|0.08|R|F|1992-03-14|1992-05-13|1992-03-28|NONE|FOB|ses lose blithely slyly final e|
-4230|196|9|3|10|10961.90|0.06|0.02|A|F|1992-06-11|1992-04-11|1992-07-02|TAKE BACK RETURN|MAIL|ar packages are |
-4230|75|6|4|28|27301.96|0.01|0.03|R|F|1992-05-12|1992-05-10|1992-06-01|TAKE BACK RETURN|MAIL|nt instruct|
-4230|125|10|5|50|51256.00|0.00|0.01|A|F|1992-03-29|1992-05-19|1992-04-20|TAKE BACK RETURN|SHIP|ts. final instructions in|
-4230|35|6|6|30|28050.90|0.05|0.07|A|F|1992-03-11|1992-04-29|1992-03-30|NONE|AIR|s. final excuses across the|
-4230|152|3|7|18|18938.70|0.10|0.04|R|F|1992-06-23|1992-05-10|1992-07-04|COLLECT COD|SHIP| the final acco|
-4231|142|3|1|47|48980.58|0.09|0.03|N|O|1997-11-27|1998-01-26|1997-12-17|NONE|REG AIR|hely along the silent at|
-4231|166|3|2|4|4264.64|0.06|0.02|N|O|1997-11-28|1998-01-26|1997-12-12|TAKE BACK RETURN|MAIL|lithely even packages. |
-4231|121|2|3|31|31654.72|0.07|0.08|N|O|1998-02-14|1997-12-27|1998-03-01|DELIVER IN PERSON|FOB|ublate. theodoli|
-4231|40|1|4|35|32901.40|0.10|0.00|N|O|1998-02-21|1998-01-24|1998-03-18|DELIVER IN PERSON|FOB|le quickly regular, unus|
-4256|151|9|1|22|23125.30|0.05|0.05|R|F|1992-07-30|1992-05-14|1992-08-14|NONE|TRUCK|, final platelets are slyly final pint|
-4257|65|10|1|3|2895.18|0.10|0.03|N|O|1995-06-18|1995-05-01|1995-07-12|DELIVER IN PERSON|MAIL|thin the theodolites use after the bl|
-4257|35|6|2|5|4675.15|0.01|0.04|R|F|1995-04-29|1995-06-05|1995-05-13|TAKE BACK RETURN|TRUCK|n deposits. furiously e|
-4257|128|9|3|33|33927.96|0.03|0.04|A|F|1995-05-23|1995-05-03|1995-05-31|COLLECT COD|AIR|uffily regular accounts ar|
-4258|166|7|1|36|38381.76|0.02|0.06|N|O|1997-02-23|1997-01-25|1997-02-27|TAKE BACK RETURN|SHIP|ns use alongs|
-4258|162|1|2|19|20181.04|0.03|0.02|N|O|1997-01-14|1996-12-12|1997-01-20|TAKE BACK RETURN|AIR|ly busily ironic foxes. f|
-4258|31|7|3|46|42827.38|0.04|0.07|N|O|1997-01-02|1996-12-26|1997-01-12|DELIVER IN PERSON|AIR| furiously pend|
-4258|35|6|4|22|20570.66|0.04|0.04|N|O|1996-12-12|1996-12-06|1996-12-20|TAKE BACK RETURN|AIR|e regular, even asym|
-4258|163|10|5|9|9568.44|0.04|0.03|N|O|1996-12-04|1996-12-08|1996-12-20|DELIVER IN PERSON|TRUCK|counts wake permanently after the bravely|
-4259|43|6|1|14|13202.56|0.05|0.03|N|O|1998-01-09|1997-11-21|1998-01-29|TAKE BACK RETURN|RAIL| furiously pending excuses. ideas hagg|
-4260|24|7|1|21|19404.42|0.08|0.04|R|F|1992-08-06|1992-06-18|1992-08-22|NONE|AIR|al, pending accounts must|
-4261|110|1|1|12|12121.32|0.05|0.01|A|F|1992-11-01|1993-01-01|1992-11-12|NONE|FOB|into beans |
-4261|82|3|2|4|3928.32|0.02|0.07|R|F|1992-12-11|1992-12-18|1992-12-24|DELIVER IN PERSON|FOB|ackages unwind furiously fluff|
-4261|175|5|3|3|3225.51|0.07|0.02|R|F|1992-11-10|1992-12-14|1992-11-17|COLLECT COD|RAIL|ly even deposits eat blithely alo|
-4261|174|3|4|36|38670.12|0.04|0.06|R|F|1992-12-02|1992-12-18|1992-12-25|NONE|REG AIR| slyly pendi|
-4261|24|7|5|28|25872.56|0.07|0.06|A|F|1992-10-08|1992-12-23|1992-10-11|TAKE BACK RETURN|MAIL|packages. fluffily i|
-4262|76|7|1|30|29282.10|0.01|0.03|N|O|1996-08-11|1996-10-11|1996-09-09|TAKE BACK RETURN|RAIL|tes after the carefully|
-4262|96|7|2|5|4980.45|0.02|0.05|N|O|1996-09-27|1996-09-05|1996-10-25|COLLECT COD|SHIP|blithely final asymptotes integrate|
-4262|162|1|3|5|5310.80|0.08|0.00|N|O|1996-10-02|1996-10-16|1996-10-05|NONE|REG AIR|ironic accounts are unusu|
-4262|74|2|4|45|43833.15|0.02|0.01|N|O|1996-11-09|1996-09-09|1996-11-12|DELIVER IN PERSON|SHIP|ackages boost. pending, even instruction|
-4262|100|3|5|28|28002.80|0.06|0.02|N|O|1996-10-22|1996-09-06|1996-11-13|DELIVER IN PERSON|FOB|ironic, regular depend|
-4262|17|7|6|26|23842.26|0.03|0.02|N|O|1996-08-29|1996-09-25|1996-08-31|NONE|RAIL|s boost slyly along the bold, iro|
-4262|160|5|7|41|43466.56|0.03|0.01|N|O|1996-08-28|1996-09-14|1996-09-20|COLLECT COD|RAIL|cuses unwind ac|
-4263|18|9|1|9|8262.09|0.08|0.07|N|O|1998-04-04|1998-04-29|1998-05-04|COLLECT COD|AIR|structions cajole quic|
-4263|196|10|2|28|30693.32|0.05|0.03|N|O|1998-06-24|1998-06-08|1998-07-14|NONE|MAIL|ideas for the carefully re|
-4263|11|1|3|38|34618.38|0.01|0.01|N|O|1998-07-10|1998-05-08|1998-07-17|NONE|TRUCK|rding to the dep|
-4263|19|3|4|20|18380.20|0.02|0.07|N|O|1998-04-09|1998-04-30|1998-05-04|NONE|RAIL|uietly regular deposits. sly deposits w|
-4263|198|2|5|14|15374.66|0.09|0.06|N|O|1998-05-06|1998-04-17|1998-05-11|DELIVER IN PERSON|TRUCK|d accounts. daringly regular accounts hagg|
-4263|113|10|6|47|47616.17|0.08|0.06|N|O|1998-06-28|1998-05-09|1998-07-02|DELIVER IN PERSON|TRUCK|y. theodolites wake idly ironic do|
-4263|29|4|7|6|5574.12|0.04|0.04|N|O|1998-05-01|1998-06-02|1998-05-14|TAKE BACK RETURN|REG AIR|g the final, regular instructions: |
-4288|74|5|1|32|31170.24|0.10|0.07|R|F|1993-03-19|1993-01-26|1993-04-18|TAKE BACK RETURN|AIR|e blithely even instructions. speci|
-4288|105|6|2|39|39198.90|0.05|0.02|R|F|1993-03-25|1993-02-06|1993-03-28|DELIVER IN PERSON|AIR|uffy theodolites run|
-4288|125|8|3|7|7175.84|0.03|0.01|A|F|1993-01-15|1993-02-05|1993-01-26|NONE|TRUCK|ngside of the special platelet|
-4289|196|7|1|19|20827.61|0.06|0.06|R|F|1993-12-31|1993-11-06|1994-01-23|DELIVER IN PERSON|TRUCK|e carefully regular ideas. sl|
-4290|137|3|1|23|23853.99|0.06|0.04|R|F|1995-04-04|1995-02-16|1995-04-07|TAKE BACK RETURN|REG AIR|uests cajole carefully.|
-4290|99|2|2|3|2997.27|0.09|0.03|A|F|1995-03-25|1995-03-07|1995-04-11|NONE|RAIL|lar platelets cajole|
-4291|192|6|1|3|3276.57|0.08|0.08|A|F|1994-03-17|1994-02-21|1994-03-27|COLLECT COD|SHIP|tes sleep slyly above the quickly sl|
-4291|125|8|2|43|44080.16|0.01|0.06|A|F|1994-02-01|1994-02-27|1994-02-06|DELIVER IN PERSON|REG AIR|s. quietly regular |
-4291|8|1|3|25|22700.00|0.09|0.08|R|F|1994-02-14|1994-02-08|1994-03-15|COLLECT COD|AIR|uctions. furiously regular ins|
-4292|44|3|1|22|20768.88|0.08|0.03|R|F|1992-02-14|1992-02-16|1992-03-01|NONE|FOB|refully expres|
-4292|40|6|2|1|940.04|0.03|0.01|A|F|1992-02-07|1992-03-16|1992-02-10|DELIVER IN PERSON|FOB| the furiously ev|
-4292|120|10|3|35|35704.20|0.03|0.06|A|F|1992-03-23|1992-04-04|1992-04-02|COLLECT COD|TRUCK|dugouts use. furiously bold packag|
-4292|163|10|4|40|42526.40|0.05|0.04|A|F|1992-04-27|1992-03-07|1992-05-04|COLLECT COD|REG AIR|ounts according to the furiously |
-4292|131|7|5|6|6186.78|0.07|0.08|R|F|1992-03-03|1992-02-24|1992-03-25|COLLECT COD|FOB|bove the silently regula|
-4292|4|1|6|47|42488.00|0.05|0.00|R|F|1992-05-02|1992-03-21|1992-05-27|TAKE BACK RETURN|FOB|y packages; even ideas boost|
-4293|1|6|1|34|30634.00|0.03|0.08|N|O|1996-11-05|1996-10-12|1996-12-04|NONE|FOB|ions sleep blithely on|
-4293|77|5|2|50|48853.50|0.01|0.05|N|O|1996-11-27|1996-10-30|1996-12-22|COLLECT COD|MAIL| special deposits. furiousl|
-4293|199|1|3|47|51661.93|0.08|0.02|N|O|1996-09-07|1996-10-24|1996-09-15|NONE|RAIL|ithely pending deposits af|
-4293|88|9|4|25|24702.00|0.04|0.04|N|O|1996-09-11|1996-11-14|1996-09-22|DELIVER IN PERSON|FOB|inal asympt|
-4293|181|2|5|1|1081.18|0.06|0.05|N|O|1996-11-15|1996-10-09|1996-11-26|COLLECT COD|AIR|eposits should boost along the |
-4293|79|7|6|45|44058.15|0.10|0.04|N|O|1996-11-04|1996-11-06|1996-11-23|NONE|MAIL|lar ideas use carefully|
-4294|105|8|1|19|19096.90|0.03|0.04|A|F|1992-10-16|1992-11-13|1992-10-26|DELIVER IN PERSON|AIR|nt dependencies. furiously regular ideas d|
-4294|27|2|2|16|14832.32|0.01|0.02|R|F|1992-08-17|1992-09-24|1992-09-04|TAKE BACK RETURN|REG AIR|lithely pint|
-4294|198|1|3|30|32945.70|0.01|0.00|A|F|1992-09-12|1992-11-06|1992-09-25|NONE|MAIL|olites. bold foxes affix ironic theodolite|
-4294|105|2|4|34|34173.40|0.02|0.01|R|F|1992-09-09|1992-11-06|1992-10-04|TAKE BACK RETURN|REG AIR|pendencies!|
-4294|119|3|5|37|37707.07|0.05|0.01|R|F|1992-09-07|1992-10-13|1992-09-08|NONE|REG AIR|cial packages nag f|
-4294|87|8|6|42|41457.36|0.02|0.03|A|F|1992-09-30|1992-11-13|1992-10-15|DELIVER IN PERSON|FOB| carefully; furiously ex|
-4294|175|3|7|47|50532.99|0.02|0.08|R|F|1992-11-09|1992-11-03|1992-12-05|TAKE BACK RETURN|SHIP|es. blithely r|
-4295|29|2|1|49|45521.98|0.09|0.01|N|O|1996-05-25|1996-03-17|1996-06-19|TAKE BACK RETURN|REG AIR|refully silent requests. f|
-4295|71|9|2|4|3884.28|0.09|0.07|N|O|1996-06-05|1996-04-26|1996-06-13|DELIVER IN PERSON|TRUCK|arefully according to the pending ac|
-4295|193|4|3|3|3279.57|0.04|0.00|N|O|1996-06-04|1996-04-24|1996-06-24|DELIVER IN PERSON|AIR|telets cajole bravely|
-4295|80|9|4|30|29402.40|0.07|0.06|N|O|1996-03-22|1996-04-23|1996-04-20|NONE|SHIP|yly ironic frets. pending foxes after |
-4320|46|5|1|28|26489.12|0.02|0.06|N|O|1997-01-28|1997-02-07|1997-02-07|COLLECT COD|FOB|nts. even, ironic excuses hagg|
-4320|140|6|2|6|6240.84|0.08|0.08|N|O|1997-01-11|1997-01-26|1997-01-22|DELIVER IN PERSON|SHIP|against the carefully careful asym|
-4320|188|9|3|33|35909.94|0.09|0.02|N|O|1996-12-11|1997-02-27|1997-01-08|TAKE BACK RETURN|SHIP|ess asymptotes so|
-4321|147|6|1|33|34555.62|0.09|0.02|A|F|1994-09-01|1994-08-17|1994-09-05|DELIVER IN PERSON|TRUCK|yly special excuses. fluffily |
-4321|54|2|2|45|42932.25|0.00|0.08|R|F|1994-11-13|1994-09-15|1994-11-18|DELIVER IN PERSON|SHIP| haggle ironically bold theodolites. quick|
-4321|186|7|3|23|24982.14|0.01|0.05|A|F|1994-11-03|1994-10-08|1994-11-06|DELIVER IN PERSON|SHIP|ly even orbits slee|
-4321|91|2|4|4|3964.36|0.02|0.00|R|F|1994-09-10|1994-10-06|1994-09-11|NONE|FOB|ironic deposi|
-4321|172|2|5|10|10721.70|0.04|0.03|A|F|1994-09-07|1994-08-23|1994-09-17|TAKE BACK RETURN|SHIP|wake carefully alongside of |
-4322|69|4|1|39|37793.34|0.04|0.02|N|O|1998-04-27|1998-06-03|1998-05-04|TAKE BACK RETURN|MAIL|its integrate fluffily |
-4322|140|1|2|9|9361.26|0.05|0.08|N|O|1998-05-18|1998-04-27|1998-05-28|COLLECT COD|AIR|ual instructio|
-4322|8|9|3|12|10896.00|0.09|0.05|N|O|1998-03-29|1998-06-05|1998-04-16|DELIVER IN PERSON|TRUCK|e blithely against the slyly unusu|
-4322|46|7|4|17|16082.68|0.09|0.08|N|O|1998-05-31|1998-05-31|1998-06-10|TAKE BACK RETURN|FOB|ructions boost |
-4322|102|7|5|10|10021.00|0.00|0.05|N|O|1998-05-31|1998-04-27|1998-06-25|TAKE BACK RETURN|REG AIR| regular ideas engage carefully quick|
-4322|60|8|6|39|37442.34|0.09|0.08|N|O|1998-03-16|1998-05-21|1998-04-11|COLLECT COD|AIR|ccounts. dogged pin|
-4322|14|4|7|34|31076.34|0.05|0.00|N|O|1998-05-27|1998-04-12|1998-06-16|NONE|REG AIR|ounts haggle fluffily ideas. pend|
-4323|1|2|1|33|29733.00|0.09|0.02|A|F|1994-05-04|1994-03-06|1994-05-23|COLLECT COD|TRUCK|the slyly bold deposits slee|
-4324|51|2|1|44|41846.20|0.05|0.04|N|O|1995-10-15|1995-09-07|1995-11-07|DELIVER IN PERSON|AIR|ainst the u|
-4324|48|7|2|12|11376.48|0.04|0.02|N|O|1995-10-05|1995-09-07|1995-10-18|NONE|REG AIR|c packages. furiously express sauternes|
-4324|82|3|3|14|13749.12|0.07|0.06|N|O|1995-11-12|1995-08-26|1995-11-21|COLLECT COD|AIR| packages nag express excuses. qui|
-4324|50|7|4|14|13300.70|0.02|0.04|N|O|1995-09-20|1995-10-08|1995-10-06|COLLECT COD|RAIL| express ideas. blithely blit|
-4324|84|5|5|22|21649.76|0.07|0.03|N|O|1995-09-13|1995-10-04|1995-09-23|DELIVER IN PERSON|SHIP|ke express, special ideas.|
-4324|43|2|6|31|29234.24|0.08|0.04|N|O|1995-10-23|1995-09-14|1995-11-09|COLLECT COD|RAIL|efully flu|
-4324|154|6|7|46|48490.90|0.00|0.03|N|O|1995-11-03|1995-09-28|1995-11-22|NONE|SHIP|ular, final theodo|
-4325|160|2|1|18|19082.88|0.01|0.07|N|O|1996-10-07|1996-09-28|1996-10-31|DELIVER IN PERSON|RAIL|. blithely|
-4326|163|4|1|11|11694.76|0.01|0.01|N|O|1997-02-02|1996-12-10|1997-02-20|DELIVER IN PERSON|TRUCK|press reque|
-4326|167|6|2|27|28813.32|0.06|0.01|N|O|1996-11-29|1997-01-20|1996-12-23|COLLECT COD|AIR|inal packages. final asymptotes about t|
-4327|95|8|1|18|17911.62|0.08|0.00|N|F|1995-06-16|1995-04-20|1995-07-12|COLLECT COD|RAIL|y final excuses. ironic, special requests a|
-4327|106|9|2|40|40244.00|0.07|0.01|N|F|1995-05-26|1995-04-17|1995-06-18|NONE|AIR|quests. packages are after th|
-4327|145|2|3|11|11496.54|0.10|0.07|R|F|1995-04-24|1995-05-27|1995-05-24|TAKE BACK RETURN|FOB| ironic dolphins|
-4327|21|10|4|8|7368.16|0.04|0.08|N|F|1995-05-26|1995-05-28|1995-06-19|DELIVER IN PERSON|AIR|eodolites cajole; unusual Tiresias|
-4327|190|1|5|39|42517.41|0.01|0.00|N|O|1995-06-23|1995-04-18|1995-07-13|TAKE BACK RETURN|FOB|kages against the blit|
-4327|152|4|6|10|10521.50|0.00|0.06|A|F|1995-04-28|1995-06-11|1995-05-07|TAKE BACK RETURN|TRUCK|arefully sile|
-4352|106|9|1|18|18109.80|0.00|0.03|N|O|1998-02-27|1998-02-02|1998-03-01|DELIVER IN PERSON|RAIL|ding to th|
-4353|94|8|1|22|21869.98|0.05|0.05|N|O|1998-01-19|1998-01-23|1998-02-10|COLLECT COD|FOB|ent packages. accounts are slyly. |
-4354|15|9|1|30|27450.30|0.08|0.07|R|F|1995-01-27|1994-11-24|1995-02-25|TAKE BACK RETURN|REG AIR|around the ir|
-4354|153|8|2|23|24222.45|0.01|0.08|R|F|1994-11-20|1994-12-23|1994-11-27|TAKE BACK RETURN|AIR|kly along the ironic, ent|
-4354|51|6|3|2|1902.10|0.10|0.04|A|F|1995-01-09|1994-12-15|1995-01-24|TAKE BACK RETURN|REG AIR|s nag quickly |
-4354|86|7|4|36|35498.88|0.05|0.05|A|F|1994-11-20|1994-12-06|1994-12-06|DELIVER IN PERSON|AIR| wake slyly eve|
-4354|65|10|5|37|35707.22|0.06|0.02|R|F|1995-01-13|1994-12-29|1995-01-31|DELIVER IN PERSON|FOB|deas use blithely! special foxes print af|
-4354|108|3|6|36|36291.60|0.03|0.04|R|F|1994-12-03|1994-12-05|1995-01-02|TAKE BACK RETURN|TRUCK|efully special packages use fluffily|
-4354|139|5|7|18|18704.34|0.03|0.04|A|F|1994-12-07|1994-12-11|1994-12-11|TAKE BACK RETURN|SHIP|ross the furiously |
-4355|195|7|1|32|35046.08|0.10|0.02|N|O|1996-12-29|1997-02-08|1997-01-24|DELIVER IN PERSON|REG AIR|y silent deposits. b|
-4355|17|1|2|4|3668.04|0.05|0.02|N|O|1997-02-25|1997-01-29|1997-03-17|TAKE BACK RETURN|TRUCK|slyly blithely regular packag|
-4355|1|2|3|13|11713.00|0.07|0.05|N|O|1997-01-21|1996-12-22|1997-02-14|COLLECT COD|TRUCK| ought to mold. blithely pending ideas |
-4355|194|6|4|14|15318.66|0.04|0.02|N|O|1997-03-08|1997-01-22|1997-03-26|NONE|RAIL|he furiously ironic accounts. quickly iro|
-4355|31|7|5|50|46551.50|0.10|0.00|N|O|1996-11-25|1997-01-01|1996-12-06|DELIVER IN PERSON|REG AIR| regular accounts boost along the |
-4355|122|7|6|35|35774.20|0.00|0.08|N|O|1997-01-28|1997-01-28|1997-02-20|NONE|FOB|ess accounts affix ironic|
-4355|101|4|7|47|47051.70|0.09|0.02|N|O|1996-12-28|1996-12-29|1997-01-09|NONE|RAIL|e. realms integrate |
-4356|194|5|1|35|38296.65|0.00|0.04|R|F|1994-05-30|1994-06-14|1994-06-08|COLLECT COD|MAIL|arefully ironic |
-4357|84|5|1|50|49204.00|0.04|0.07|N|O|1997-11-25|1997-12-03|1997-12-17|DELIVER IN PERSON|RAIL|s. final, e|
-4357|108|9|2|17|17137.70|0.10|0.07|N|O|1998-02-01|1997-12-08|1998-02-09|DELIVER IN PERSON|MAIL|e carefully furiou|
-4358|126|5|1|47|48227.64|0.04|0.00|N|O|1997-10-15|1997-10-14|1997-11-04|DELIVER IN PERSON|SHIP|refully busy dep|
-4359|174|3|1|41|44040.97|0.03|0.07|A|F|1993-04-06|1993-05-06|1993-04-14|COLLECT COD|RAIL|s affix sly|
-4359|153|8|2|8|8425.20|0.03|0.08|R|F|1993-06-27|1993-05-16|1993-07-04|DELIVER IN PERSON|MAIL|packages affix. fluffily regular f|
-4359|193|6|3|32|34982.08|0.10|0.03|R|F|1993-06-18|1993-04-04|1993-07-18|COLLECT COD|MAIL|olites nag quietly caref|
-4359|78|8|4|1|978.07|0.05|0.03|R|F|1993-04-27|1993-05-09|1993-05-08|NONE|MAIL| fluffily ironic, bold pac|
-4359|33|4|5|22|20526.66|0.04|0.01|A|F|1993-03-28|1993-06-01|1993-04-13|NONE|REG AIR|accounts wake ironic deposits. ironic|
-4384|136|7|1|5|5180.65|0.09|0.01|A|F|1992-08-22|1992-08-24|1992-09-20|DELIVER IN PERSON|MAIL|instructions sleep. blithely express pa|
-4384|89|10|2|38|37585.04|0.07|0.06|A|F|1992-10-18|1992-09-24|1992-11-04|NONE|FOB|ly final requests. regu|
-4384|89|10|3|11|10879.88|0.05|0.04|R|F|1992-08-31|1992-10-04|1992-09-28|TAKE BACK RETURN|FOB|deposits promise carefully even, regular e|
-4385|111|8|1|38|38422.18|0.00|0.02|N|O|1996-11-22|1996-10-30|1996-12-21|DELIVER IN PERSON|TRUCK|inal frays. final, bold exc|
-4386|130|3|1|10|10301.30|0.05|0.07|N|O|1998-06-03|1998-04-16|1998-06-28|TAKE BACK RETURN|MAIL|gainst the quickly expre|
-4386|118|2|2|28|28507.08|0.03|0.06|N|O|1998-03-19|1998-05-01|1998-03-27|NONE|FOB|. quick packages play slyly |
-4386|140|1|3|4|4160.56|0.07|0.05|N|O|1998-04-07|1998-03-25|1998-04-19|COLLECT COD|FOB|ns wake carefully carefully iron|
-4386|121|2|4|21|21443.52|0.09|0.00|N|O|1998-05-05|1998-03-19|1998-05-13|NONE|RAIL|e pending, sp|
-4386|130|3|5|39|40175.07|0.09|0.06|N|O|1998-03-05|1998-03-15|1998-03-16|NONE|RAIL|structions cajole quickly express|
-4386|90|1|6|18|17821.62|0.02|0.05|N|O|1998-04-12|1998-04-09|1998-05-12|TAKE BACK RETURN|SHIP| deposits use according to the pending, |
-4386|20|4|7|16|14720.32|0.07|0.02|N|O|1998-05-05|1998-03-17|1998-06-03|COLLECT COD|AIR|e furiously final pint|
-4387|122|5|1|3|3066.36|0.02|0.01|N|O|1996-01-17|1996-01-14|1996-01-28|COLLECT COD|AIR| boost slyly ironic instructions. furiou|
-4387|177|5|2|48|51704.16|0.06|0.05|N|O|1995-10-29|1995-12-11|1995-11-01|NONE|REG AIR|sleep slyly. blithely sl|
-4387|2|5|3|15|13530.00|0.00|0.03|N|O|1996-01-11|1996-01-14|1996-01-30|TAKE BACK RETURN|REG AIR|s hinder quietly across the pla|
-4387|47|8|4|9|8523.36|0.00|0.03|N|O|1996-01-04|1995-12-26|1996-01-12|DELIVER IN PERSON|REG AIR|c ideas. slyly regular packages sol|
-4387|82|3|5|3|2946.24|0.05|0.08|N|O|1995-11-17|1995-12-28|1995-11-25|COLLECT COD|SHIP| pinto beans |
-4387|6|3|6|40|36240.00|0.02|0.04|N|O|1995-11-29|1995-12-10|1995-12-20|NONE|REG AIR|deas according to the blithely regular fox|
-4388|65|10|1|30|28951.80|0.02|0.07|N|O|1996-06-07|1996-05-07|1996-06-22|DELIVER IN PERSON|FOB|s cajole fluffil|
-4388|84|5|2|28|27554.24|0.05|0.04|N|O|1996-05-08|1996-06-20|1996-05-12|TAKE BACK RETURN|RAIL|ove the ide|
-4388|52|4|3|13|12376.65|0.07|0.05|N|O|1996-06-28|1996-05-23|1996-07-04|DELIVER IN PERSON|REG AIR|ly even, expre|
-4389|157|2|1|20|21143.00|0.08|0.00|A|F|1994-06-06|1994-06-17|1994-06-17|DELIVER IN PERSON|SHIP|ng the carefully express d|
-4389|153|5|2|13|13690.95|0.00|0.00|A|F|1994-08-18|1994-06-06|1994-08-20|NONE|RAIL|nal, regula|
-4389|79|9|3|39|38183.73|0.04|0.07|A|F|1994-06-08|1994-06-04|1994-06-10|TAKE BACK RETURN|TRUCK| unusual, final excuses cajole carefully |
-4389|160|2|4|5|5300.80|0.09|0.00|A|F|1994-09-03|1994-06-23|1994-09-16|NONE|FOB| ironic request|
-4389|11|5|5|22|20042.22|0.08|0.00|R|F|1994-07-05|1994-06-12|1994-07-12|NONE|TRUCK|lly silent de|
-4389|2|3|6|22|19844.00|0.01|0.04|R|F|1994-06-07|1994-06-29|1994-06-19|COLLECT COD|TRUCK|at the final excuses hinder carefully a|
-4389|185|6|7|4|4340.72|0.09|0.08|R|F|1994-06-14|1994-06-30|1994-07-06|NONE|REG AIR| blithely even d|
-4390|152|10|1|35|36825.25|0.07|0.04|R|F|1995-05-30|1995-07-02|1995-06-15|DELIVER IN PERSON|TRUCK|ongside of the slyly regular ideas|
-4390|196|8|2|28|30693.32|0.03|0.00|N|O|1995-09-07|1995-06-22|1995-10-05|COLLECT COD|SHIP|ld braids haggle atop the for|
-4390|101|8|3|42|42046.20|0.05|0.08|A|F|1995-06-12|1995-07-16|1995-06-17|NONE|AIR|arefully even accoun|
-4390|98|2|4|32|31938.88|0.07|0.08|N|O|1995-09-15|1995-08-12|1995-10-05|TAKE BACK RETURN|TRUCK|ctions across|
-4391|161|10|1|1|1061.16|0.09|0.00|R|F|1992-06-18|1992-04-27|1992-06-20|COLLECT COD|TRUCK|ong the silent deposits|
-4391|187|8|2|45|48923.10|0.07|0.04|R|F|1992-04-01|1992-05-01|1992-04-13|TAKE BACK RETURN|TRUCK|ep quickly after |
-4416|94|7|1|37|36781.33|0.08|0.03|A|F|1992-10-23|1992-08-23|1992-11-16|COLLECT COD|RAIL|fluffily ironic |
-4416|89|10|2|3|2967.24|0.06|0.03|R|F|1992-10-22|1992-08-06|1992-11-13|DELIVER IN PERSON|SHIP| requests sleep along the |
-4416|9|6|3|45|40905.00|0.09|0.03|A|F|1992-10-16|1992-09-09|1992-10-28|COLLECT COD|AIR|the final pinto beans. special frets |
-4417|75|5|1|28|27301.96|0.08|0.02|N|O|1998-09-04|1998-10-04|1998-09-19|TAKE BACK RETURN|REG AIR|ies across the furious|
-4417|181|2|2|1|1081.18|0.06|0.08|N|O|1998-10-23|1998-08-22|1998-10-24|NONE|REG AIR|press deposits promise stealthily amo|
-4417|98|2|3|35|34933.15|0.06|0.04|N|O|1998-08-08|1998-09-23|1998-09-02|DELIVER IN PERSON|FOB|slyly regular, silent courts. even packag|
-4418|35|1|1|32|29920.96|0.02|0.06|A|F|1993-05-28|1993-06-02|1993-05-30|TAKE BACK RETURN|RAIL|ly. bold pinto b|
-4418|22|5|2|14|12908.28|0.03|0.04|A|F|1993-05-20|1993-06-18|1993-06-05|TAKE BACK RETURN|SHIP| blithely regular requests. blith|
-4418|79|7|3|3|2937.21|0.00|0.02|R|F|1993-04-08|1993-06-04|1993-05-02|NONE|SHIP|luffily across the unusual ideas. reque|
-4419|108|9|1|45|45364.50|0.01|0.05|N|O|1996-07-20|1996-09-07|1996-08-18|DELIVER IN PERSON|TRUCK|s doze sometimes fluffily regular a|
-4419|32|8|2|42|39145.26|0.00|0.03|N|O|1996-09-18|1996-07-25|1996-09-21|COLLECT COD|RAIL|sts. furious|
-4419|132|3|3|6|6192.78|0.02|0.08|N|O|1996-06-25|1996-09-04|1996-07-20|DELIVER IN PERSON|AIR|ts wake slyly final dugou|
-4420|8|5|1|7|6356.00|0.07|0.03|R|F|1994-08-30|1994-09-03|1994-09-25|NONE|FOB| regular instructions sleep around|
-4421|98|2|1|37|36929.33|0.09|0.08|N|O|1997-07-22|1997-06-27|1997-07-25|DELIVER IN PERSON|SHIP|l accounts. ironic request|
-4421|56|1|2|46|43978.30|0.04|0.04|N|O|1997-04-21|1997-05-13|1997-05-15|DELIVER IN PERSON|FOB|reful packages. bold, |
-4421|167|6|3|46|49089.36|0.00|0.06|N|O|1997-05-25|1997-05-21|1997-06-23|COLLECT COD|TRUCK|g dependenci|
-4421|191|4|4|32|34918.08|0.06|0.04|N|O|1997-07-09|1997-06-03|1997-07-25|NONE|SHIP|ar ideas eat among the furiousl|
-4421|190|1|5|32|34886.08|0.06|0.04|N|O|1997-07-28|1997-06-14|1997-08-13|NONE|REG AIR|uickly final pinto beans impress. bold |
-4421|47|6|6|44|41669.76|0.09|0.06|N|O|1997-06-17|1997-06-20|1997-06-29|NONE|TRUCK|le carefully. bl|
-4421|116|3|7|18|18289.98|0.01|0.00|N|O|1997-06-07|1997-05-13|1997-06-10|DELIVER IN PERSON|FOB|. regular, s|
-4422|135|1|1|5|5175.65|0.09|0.07|N|O|1995-07-17|1995-08-13|1995-07-25|NONE|SHIP|e furiously about t|
-4422|48|5|2|41|38869.64|0.08|0.05|N|F|1995-06-12|1995-07-09|1995-06-20|COLLECT COD|TRUCK| theodolites shal|
-4422|103|10|3|39|39120.90|0.00|0.05|N|O|1995-09-02|1995-06-24|1995-09-14|NONE|TRUCK|en hockey players engage|
-4422|153|4|4|4|4212.60|0.02|0.05|N|O|1995-09-18|1995-08-12|1995-10-18|COLLECT COD|FOB|cies along the bo|
-4422|80|9|5|20|19601.60|0.07|0.05|N|O|1995-08-17|1995-07-16|1995-09-13|DELIVER IN PERSON|RAIL|ructions wake slyly al|
-4423|150|9|1|3|3150.45|0.03|0.00|A|F|1995-03-22|1995-04-06|1995-04-19|NONE|TRUCK| final theodolites nag after the bli|
-4423|60|5|2|2|1920.12|0.07|0.04|A|F|1995-03-04|1995-04-04|1995-03-08|TAKE BACK RETURN|REG AIR|old sheaves sleep|
-4448|52|7|1|24|22849.20|0.10|0.07|N|O|1998-09-09|1998-07-06|1998-09-27|DELIVER IN PERSON|SHIP|nal packages along the ironic instructi|
-4448|189|10|2|13|14159.34|0.00|0.01|N|O|1998-07-26|1998-07-03|1998-08-14|COLLECT COD|MAIL|fluffily express accounts integrate furiou|
-4448|41|4|3|35|32936.40|0.10|0.06|N|O|1998-09-18|1998-07-27|1998-10-08|NONE|REG AIR|aggle carefully alongside of the q|
-4448|141|2|4|3|3123.42|0.01|0.01|N|O|1998-07-20|1998-07-10|1998-08-07|DELIVER IN PERSON|TRUCK|ronic theod|
-4448|91|2|5|41|40634.69|0.00|0.08|N|O|1998-07-30|1998-08-09|1998-08-03|NONE|AIR|pon the permanently even excuses nag |
-4448|172|3|6|12|12866.04|0.06|0.03|N|O|1998-08-21|1998-06-30|1998-09-09|COLLECT COD|RAIL|sits about the ironic, bu|
-4449|32|3|1|42|39145.26|0.10|0.07|N|O|1998-03-22|1998-05-09|1998-04-03|NONE|FOB| packages. blithely final |
-4449|141|8|2|10|10411.40|0.02|0.03|N|O|1998-05-09|1998-05-04|1998-05-15|NONE|SHIP|ccounts alongside of the platelets integr|
-4450|174|5|1|44|47263.48|0.10|0.00|N|O|1997-10-12|1997-10-13|1997-10-29|DELIVER IN PERSON|RAIL| the slyly eve|
-4450|15|6|2|9|8235.09|0.03|0.03|N|O|1997-08-13|1997-08-16|1997-08-15|NONE|FOB|gular requests cajole carefully. regular c|
-4450|96|8|3|45|44824.05|0.08|0.01|N|O|1997-09-01|1997-10-06|1997-09-19|NONE|TRUCK|express ideas are furiously regular|
-4450|62|9|4|13|12506.78|0.00|0.00|N|O|1997-08-26|1997-09-18|1997-09-20|COLLECT COD|MAIL| brave foxes. slyly unusual|
-4450|56|7|5|6|5736.30|0.09|0.01|N|O|1997-09-02|1997-09-30|1997-09-09|NONE|FOB|eposits. foxes cajole unusual fox|
-4451|164|5|1|40|42566.40|0.03|0.03|A|F|1994-11-18|1994-12-25|1994-11-26|DELIVER IN PERSON|RAIL|y. slyly special deposits are sly|
-4451|63|4|2|34|32744.04|0.10|0.02|A|F|1994-11-30|1994-12-04|1994-12-13|COLLECT COD|SHIP| regular ideas.|
-4451|159|10|3|19|20123.85|0.05|0.06|R|F|1994-10-09|1994-11-26|1994-10-23|COLLECT COD|FOB|ly after the fluffi|
-4452|114|8|1|21|21296.31|0.07|0.03|R|F|1994-10-06|1994-08-23|1994-10-15|COLLECT COD|TRUCK|multipliers x-ray carefully in place of |
-4452|1|8|2|47|42347.00|0.01|0.06|A|F|1994-10-08|1994-08-09|1994-10-09|TAKE BACK RETURN|TRUCK|ts. slyly regular cour|
-4453|147|10|1|41|42932.74|0.00|0.08|N|O|1997-07-17|1997-05-15|1997-07-31|NONE|REG AIR|anent theodolites are slyly except t|
-4453|133|4|2|16|16530.08|0.03|0.00|N|O|1997-07-22|1997-05-05|1997-08-03|COLLECT COD|FOB|ar excuses nag quickly even accounts. b|
-4453|62|7|3|48|46178.88|0.02|0.07|N|O|1997-05-29|1997-06-24|1997-06-03|NONE|SHIP|eep. fluffily express accounts at the furi|
-4453|102|5|4|26|26054.60|0.06|0.07|N|O|1997-05-07|1997-06-07|1997-05-22|NONE|TRUCK|express packages are|
-4454|151|9|1|20|21023.00|0.10|0.08|R|F|1994-05-06|1994-03-17|1994-05-20|COLLECT COD|SHIP|lar theodolites. even instructio|
-4454|152|10|2|22|23147.30|0.06|0.02|A|F|1994-02-06|1994-04-11|1994-03-06|DELIVER IN PERSON|RAIL|ully. carefully final accounts accordi|
-4454|192|3|3|45|49148.55|0.07|0.04|A|F|1994-03-29|1994-03-26|1994-04-04|TAKE BACK RETURN|RAIL|ests promise. packages print fur|
-4454|2|3|4|1|902.00|0.09|0.05|A|F|1994-02-05|1994-04-19|1994-02-12|COLLECT COD|RAIL|equests run.|
-4454|52|4|5|48|45698.40|0.00|0.07|R|F|1994-04-23|1994-04-03|1994-04-26|COLLECT COD|FOB|to beans wake across th|
-4454|160|8|6|20|21203.20|0.10|0.03|A|F|1994-04-08|1994-03-06|1994-04-26|DELIVER IN PERSON|TRUCK|quickly regular requests. furiously|
-4455|70|5|1|20|19401.40|0.01|0.05|A|F|1994-01-31|1993-11-21|1994-03-02|DELIVER IN PERSON|MAIL| express packages. packages boost quickly|
-4455|153|4|2|47|49498.05|0.09|0.01|R|F|1994-01-01|1993-12-25|1994-01-05|COLLECT COD|FOB| requests. even, even accou|
-4455|123|2|3|34|34786.08|0.00|0.06|A|F|1993-10-24|1993-11-27|1993-11-04|TAKE BACK RETURN|AIR| slyly ironic requests. quickly even d|
-4480|108|5|1|30|30243.00|0.08|0.03|R|F|1994-07-29|1994-06-22|1994-08-01|NONE|FOB|ven braids us|
-4481|24|9|1|50|46201.00|0.02|0.06|N|O|1996-07-22|1996-05-13|1996-08-14|DELIVER IN PERSON|RAIL|ar packages. regula|
-4481|190|1|2|27|29435.13|0.02|0.03|N|O|1996-04-06|1996-05-17|1996-04-12|TAKE BACK RETURN|AIR|ackages haggle even, |
-4482|71|2|1|32|31074.24|0.06|0.03|A|F|1995-05-16|1995-07-22|1995-06-07|NONE|RAIL| quickly pendin|
-4482|96|9|2|32|31874.88|0.01|0.06|N|O|1995-08-16|1995-06-26|1995-09-10|DELIVER IN PERSON|AIR|eans wake according |
-4483|6|7|1|32|28992.00|0.07|0.07|R|F|1992-04-05|1992-05-25|1992-04-08|DELIVER IN PERSON|MAIL|ests haggle. slyl|
-4483|62|1|2|50|48103.00|0.01|0.06|A|F|1992-06-19|1992-05-12|1992-07-08|DELIVER IN PERSON|TRUCK|ag blithely even|
-4483|9|4|3|50|45450.00|0.00|0.04|R|F|1992-06-10|1992-04-18|1992-06-17|DELIVER IN PERSON|MAIL|ackages. furiously ironi|
-4484|95|9|1|4|3980.36|0.06|0.03|N|O|1997-04-09|1997-02-11|1997-04-12|TAKE BACK RETURN|TRUCK|packages de|
-4484|137|8|2|39|40448.07|0.05|0.02|N|O|1997-04-01|1997-01-26|1997-04-21|NONE|RAIL|onic accounts wake blithel|
-4484|190|1|3|38|41427.22|0.06|0.07|N|O|1997-03-07|1997-01-31|1997-04-01|COLLECT COD|REG AIR|. even requests un|
-4484|122|5|4|41|41906.92|0.06|0.03|N|O|1997-01-25|1997-02-15|1997-01-29|TAKE BACK RETURN|REG AIR|ress accounts. ironic deposits unwind fur|
-4484|3|4|5|42|37926.00|0.03|0.07|N|O|1997-03-25|1997-02-21|1997-04-05|DELIVER IN PERSON|REG AIR|ding, pending requests wake. fluffily |
-4484|36|7|6|29|27144.87|0.09|0.06|N|O|1996-12-27|1997-03-10|1997-01-13|NONE|FOB| wake blithely ironic|
-4484|103|8|7|50|50155.00|0.07|0.01|N|O|1997-03-17|1997-03-16|1997-03-21|COLLECT COD|FOB|the ironic, final theodo|
-4485|191|5|1|1|1091.19|0.03|0.05|R|F|1994-12-04|1995-02-07|1994-12-09|NONE|AIR|play according to the ironic, ironic|
-4485|141|10|2|46|47892.44|0.04|0.06|R|F|1995-03-09|1994-12-14|1995-03-23|DELIVER IN PERSON|AIR|. ironic foxes haggle. regular war|
-4485|175|6|3|43|46232.31|0.01|0.05|R|F|1995-01-17|1995-02-11|1995-02-07|DELIVER IN PERSON|TRUCK|al accounts according to the slyly r|
-4485|144|5|4|43|44898.02|0.08|0.06|R|F|1995-01-28|1995-01-26|1995-02-07|DELIVER IN PERSON|AIR|. blithely|
-4485|6|7|5|47|42582.00|0.08|0.04|R|F|1995-03-11|1995-01-11|1995-03-21|TAKE BACK RETURN|RAIL|luffily pending acc|
-4486|135|1|1|46|47615.98|0.08|0.00|N|O|1998-05-02|1998-04-05|1998-05-08|COLLECT COD|MAIL|ackages. specia|
-4486|49|2|2|19|18031.76|0.10|0.01|N|O|1998-06-07|1998-05-28|1998-07-02|NONE|MAIL|pending foxes after|
-4486|96|7|3|47|46816.23|0.02|0.07|N|O|1998-04-09|1998-05-24|1998-05-07|DELIVER IN PERSON|MAIL|ts around the quiet packages ar|
-4486|91|4|4|28|27750.52|0.07|0.02|N|O|1998-04-21|1998-04-19|1998-04-26|TAKE BACK RETURN|AIR|to the furious, regular foxes play abov|
-4487|138|4|1|37|38410.81|0.03|0.07|R|F|1993-02-28|1993-04-18|1993-03-17|TAKE BACK RETURN|MAIL|bove the fu|
-4487|113|10|2|49|49642.39|0.10|0.00|R|F|1993-06-13|1993-05-08|1993-07-10|COLLECT COD|FOB|sual packages should ha|
-4487|190|1|3|1|1090.19|0.02|0.07|A|F|1993-05-11|1993-05-23|1993-05-17|TAKE BACK RETURN|FOB|ithely final asym|
-4487|93|4|4|25|24827.25|0.07|0.03|A|F|1993-03-09|1993-04-27|1993-03-30|COLLECT COD|RAIL|g the final instructions. slyly c|
-4512|162|1|1|30|31864.80|0.07|0.07|N|O|1996-01-28|1995-12-22|1996-02-22|TAKE BACK RETURN|TRUCK|ly unusual package|
-4512|41|4|2|24|22584.96|0.04|0.06|N|O|1995-12-16|1996-01-16|1995-12-25|NONE|SHIP|ly regular pinto beans. carefully bold depo|
-4512|145|8|3|21|21947.94|0.00|0.00|N|O|1995-10-31|1995-12-30|1995-11-15|NONE|REG AIR|lly unusual pinto b|
-4512|141|2|4|32|33316.48|0.10|0.01|N|O|1995-11-25|1995-12-28|1995-12-06|NONE|FOB|counts are against the quickly regular |
-4512|133|4|5|43|44424.59|0.06|0.00|N|O|1995-12-20|1995-11-28|1996-01-14|NONE|AIR|are carefully. theodolites wake|
-4513|170|1|1|29|31034.93|0.03|0.01|N|O|1996-05-18|1996-05-23|1996-06-08|NONE|REG AIR|cajole. regular packages boost. s|
-4513|70|9|2|39|37832.73|0.01|0.04|N|O|1996-06-25|1996-05-14|1996-07-24|NONE|MAIL|slyly furiously unusual deposits. blit|
-4513|138|4|3|34|35296.42|0.00|0.03|N|O|1996-03-27|1996-06-12|1996-04-06|DELIVER IN PERSON|SHIP|sits. quickly even instructions |
-4513|192|6|4|13|14198.47|0.08|0.08|N|O|1996-04-12|1996-05-19|1996-04-25|DELIVER IN PERSON|AIR|l, final excuses detect furi|
-4514|164|9|1|27|28732.32|0.06|0.06|R|F|1994-07-01|1994-07-13|1994-07-26|COLLECT COD|AIR| even, silent foxes be|
-4514|46|3|2|15|14190.60|0.10|0.04|R|F|1994-08-24|1994-07-11|1994-09-14|DELIVER IN PERSON|RAIL|! unusual, special deposits afte|
-4514|78|8|3|10|9780.70|0.09|0.05|A|F|1994-06-19|1994-06-25|1994-07-01|COLLECT COD|SHIP|ake furiously. carefully regular requests|
-4514|81|2|4|9|8829.72|0.10|0.03|A|F|1994-08-04|1994-07-01|1994-09-01|DELIVER IN PERSON|REG AIR|wly. quick|
-4514|149|8|5|12|12589.68|0.02|0.03|R|F|1994-08-20|1994-06-09|1994-09-15|TAKE BACK RETURN|FOB| carefully ironic foxes nag caref|
-4514|189|10|6|38|41388.84|0.03|0.05|A|F|1994-07-28|1994-07-06|1994-08-25|NONE|AIR|ending excuses. sl|
-4514|177|8|7|27|29083.59|0.04|0.06|A|F|1994-06-24|1994-07-14|1994-06-30|TAKE BACK RETURN|TRUCK|. slyly sile|
-4515|39|10|1|15|14085.45|0.06|0.01|R|F|1992-05-26|1992-05-25|1992-06-03|NONE|SHIP|posits wake|
-4515|103|10|2|50|50155.00|0.06|0.03|A|F|1992-03-28|1992-05-16|1992-04-20|NONE|AIR|ding instructions again|
-4515|154|6|3|27|28462.05|0.09|0.01|A|F|1992-06-06|1992-06-08|1992-06-07|DELIVER IN PERSON|REG AIR| against the even re|
-4515|54|5|4|32|30529.60|0.06|0.03|R|F|1992-04-07|1992-05-11|1992-04-09|COLLECT COD|MAIL|carefully express depo|
-4515|45|8|5|22|20790.88|0.09|0.07|A|F|1992-07-16|1992-05-07|1992-07-23|NONE|SHIP|le quickly above the even, bold ideas.|
-4515|180|8|6|23|24844.14|0.04|0.00|R|F|1992-05-23|1992-06-15|1992-06-20|TAKE BACK RETURN|FOB|ns. bold r|
-4516|170|9|1|34|36385.78|0.05|0.04|A|F|1994-05-16|1994-06-23|1994-06-12|NONE|SHIP|even pinto beans wake qui|
-4517|43|4|1|50|47152.00|0.01|0.02|N|O|1998-06-08|1998-04-18|1998-06-20|DELIVER IN PERSON|MAIL|refully pending acco|
-4518|144|7|1|9|9397.26|0.09|0.04|N|O|1997-06-26|1997-07-07|1997-07-10|NONE|RAIL| pending deposits. slyly re|
-4518|45|6|2|19|17955.76|0.10|0.05|N|O|1997-08-09|1997-06-06|1997-08-27|COLLECT COD|RAIL|ter the slyly bo|
-4519|55|3|1|30|28651.50|0.09|0.07|R|F|1993-04-11|1993-06-05|1993-04-22|DELIVER IN PERSON|REG AIR|totes. slyly bold somas after the |
-4519|191|3|2|37|40374.03|0.06|0.08|R|F|1993-07-22|1993-06-16|1993-08-19|COLLECT COD|AIR|ly slyly furious depth|
-4544|131|7|1|40|41245.20|0.07|0.01|N|O|1997-08-15|1997-10-16|1997-08-20|DELIVER IN PERSON|RAIL| detect slyly. evenly pending instru|
-4544|172|2|2|19|20371.23|0.08|0.01|N|O|1997-08-14|1997-09-08|1997-08-25|NONE|SHIP|regular ideas are furiously about|
-4544|71|9|3|20|19421.40|0.02|0.07|N|O|1997-10-12|1997-10-11|1997-10-13|COLLECT COD|REG AIR| waters about the|
-4544|51|6|4|39|37090.95|0.07|0.05|N|O|1997-08-20|1997-09-07|1997-08-27|COLLECT COD|REG AIR|ular packages. s|
-4544|133|4|5|31|32027.03|0.09|0.03|N|O|1997-08-09|1997-09-29|1997-08-17|COLLECT COD|TRUCK|dolites detect quickly reg|
-4544|27|8|6|8|7416.16|0.10|0.03|N|O|1997-10-13|1997-10-06|1997-10-25|COLLECT COD|AIR|olites. fi|
-4545|173|1|1|38|40780.46|0.06|0.06|R|F|1993-01-27|1993-03-01|1993-02-04|NONE|TRUCK|nts serve according to th|
-4545|63|4|2|27|26002.62|0.01|0.06|R|F|1993-02-07|1993-02-18|1993-02-18|NONE|FOB|ously bold asymptotes! blithely pen|
-4545|87|8|3|9|8883.72|0.10|0.06|R|F|1993-03-20|1993-02-23|1993-04-11|TAKE BACK RETURN|AIR|xpress accounts|
-4545|64|9|4|2|1928.12|0.10|0.00|R|F|1993-04-16|1993-04-17|1993-05-03|NONE|REG AIR|ages use. slyly even i|
-4545|117|1|5|27|27461.97|0.08|0.05|A|F|1993-03-18|1993-02-22|1993-03-23|NONE|RAIL|ccounts haggle carefully. deposits |
-4545|109|2|6|8|8072.80|0.03|0.02|A|F|1993-05-01|1993-03-12|1993-05-15|NONE|FOB| boost slyly. slyly|
-4545|9|2|7|36|32724.00|0.10|0.04|R|F|1993-01-28|1993-03-30|1993-02-04|DELIVER IN PERSON|SHIP|sublate slyly. furiously ironic accounts b|
-4546|133|4|1|10|10331.30|0.09|0.02|N|O|1995-09-23|1995-10-10|1995-10-23|COLLECT COD|TRUCK|osits alongside of the|
-4546|171|10|2|15|16067.55|0.04|0.07|N|O|1995-07-31|1995-10-17|1995-08-06|NONE|REG AIR|ught to cajole furiously. qu|
-4546|77|8|3|4|3908.28|0.06|0.08|N|O|1995-08-14|1995-10-07|1995-08-16|COLLECT COD|MAIL|kly pending dependencies along the furio|
-4546|149|6|4|10|10491.40|0.08|0.02|N|O|1995-09-02|1995-09-16|1995-09-10|DELIVER IN PERSON|FOB|above the enticingly ironic dependencies|
-4547|188|9|1|15|16322.70|0.10|0.04|A|F|1993-12-08|1993-11-15|1993-12-22|NONE|REG AIR|ets haggle. regular dinos affix fu|
-4547|116|10|2|7|7112.77|0.10|0.02|A|F|1993-09-04|1993-09-29|1993-09-20|COLLECT COD|RAIL|slyly express a|
-4547|45|2|3|15|14175.60|0.00|0.00|R|F|1993-11-18|1993-10-06|1993-12-13|NONE|TRUCK|e carefully across the unus|
-4547|148|7|4|15|15722.10|0.05|0.08|R|F|1993-11-29|1993-10-12|1993-12-29|COLLECT COD|REG AIR|ironic gifts integrate |
-4548|14|8|1|21|19194.21|0.10|0.05|N|O|1996-07-11|1996-09-04|1996-07-30|COLLECT COD|REG AIR|pecial theodoli|
-4548|47|10|2|17|16099.68|0.00|0.08|N|O|1996-07-23|1996-09-21|1996-07-26|DELIVER IN PERSON|REG AIR|y ironic requests above the fluffily d|
-4548|123|2|3|47|48086.64|0.05|0.04|N|O|1996-07-24|1996-09-12|1996-08-08|NONE|MAIL|ts. excuses use slyly spec|
-4548|177|6|4|22|23697.74|0.07|0.01|N|O|1996-07-06|1996-08-23|1996-07-15|DELIVER IN PERSON|RAIL|s. furiously ironic theodolites c|
-4548|45|4|5|36|34021.44|0.04|0.06|N|O|1996-08-19|1996-09-12|1996-09-08|COLLECT COD|FOB|tions integrat|
-4549|159|1|1|44|46602.60|0.08|0.00|N|O|1998-03-13|1998-04-15|1998-03-27|TAKE BACK RETURN|TRUCK|ding to the regular, silent requests|
-4549|89|10|2|1|989.08|0.05|0.08|N|O|1998-05-04|1998-04-11|1998-05-14|TAKE BACK RETURN|AIR| requests wake. furiously even |
-4550|150|7|1|9|9451.35|0.05|0.06|R|F|1995-04-19|1995-02-07|1995-04-24|COLLECT COD|SHIP|l dependencies boost slyly after th|
-4550|66|5|2|19|18355.14|0.06|0.04|A|F|1995-01-01|1995-02-13|1995-01-20|NONE|AIR|quests. express |
-4551|11|1|1|6|5466.06|0.08|0.08|N|O|1996-05-18|1996-04-23|1996-06-13|DELIVER IN PERSON|TRUCK|fily silent fo|
-4551|179|8|2|26|28058.42|0.02|0.04|N|O|1996-04-14|1996-04-26|1996-04-17|TAKE BACK RETURN|RAIL|le. carefully dogged accounts use furiousl|
-4551|22|1|3|22|20284.44|0.08|0.01|N|O|1996-05-12|1996-03-17|1996-05-29|TAKE BACK RETURN|REG AIR|ly ironic reques|
-4551|198|10|4|27|29651.13|0.00|0.01|N|O|1996-04-28|1996-03-22|1996-05-22|TAKE BACK RETURN|RAIL|y along the slyly even |
-4576|90|1|1|5|4950.45|0.09|0.03|N|O|1996-08-23|1996-11-08|1996-09-20|TAKE BACK RETURN|AIR|ly express, special asymptote|
-4576|58|9|2|43|41196.15|0.08|0.06|N|O|1996-10-24|1996-09-23|1996-11-10|NONE|SHIP|ly final deposits. never|
-4576|42|1|3|14|13188.56|0.09|0.01|N|O|1996-09-12|1996-09-30|1996-09-24|COLLECT COD|MAIL|detect slyly.|
-4577|185|6|1|43|46662.74|0.01|0.03|N|O|1998-06-16|1998-07-09|1998-06-17|TAKE BACK RETURN|AIR|packages. |
-4577|177|6|2|43|46318.31|0.05|0.03|N|O|1998-08-24|1998-06-02|1998-09-14|TAKE BACK RETURN|RAIL|ly accounts. carefully |
-4577|69|6|3|12|11628.72|0.07|0.05|N|O|1998-07-29|1998-06-17|1998-08-04|DELIVER IN PERSON|TRUCK|equests alongsi|
-4578|74|2|1|10|9740.70|0.09|0.06|R|F|1993-01-01|1992-11-19|1993-01-28|TAKE BACK RETURN|REG AIR|uests. blithely unus|
-4578|169|10|2|42|44904.72|0.06|0.00|R|F|1993-01-05|1992-11-06|1993-01-13|DELIVER IN PERSON|FOB|s are caref|
-4578|179|8|3|15|16187.55|0.01|0.01|R|F|1992-10-23|1992-11-22|1992-11-09|DELIVER IN PERSON|REG AIR|gular theodo|
-4578|139|10|4|7|7273.91|0.09|0.08|A|F|1992-12-07|1992-11-27|1993-01-05|TAKE BACK RETURN|SHIP|odolites. carefully unusual ideas accor|
-4578|163|2|5|20|21263.20|0.04|0.02|A|F|1993-01-11|1992-11-09|1993-01-23|TAKE BACK RETURN|RAIL|iously pending theodolites--|
-4579|175|4|1|14|15052.38|0.02|0.02|N|O|1996-02-01|1996-01-08|1996-02-08|TAKE BACK RETURN|MAIL|nding theodolites. fluffil|
-4579|42|3|2|28|26377.12|0.02|0.05|N|O|1996-01-22|1996-02-13|1996-02-03|DELIVER IN PERSON|RAIL|slyly across the |
-4579|178|9|3|34|36657.78|0.05|0.02|N|O|1996-02-26|1996-02-22|1996-03-16|COLLECT COD|MAIL|hely. carefully blithe dependen|
-4579|120|1|4|8|8160.96|0.05|0.06|N|O|1995-12-16|1996-01-15|1995-12-18|TAKE BACK RETURN|AIR|posits. carefully perman|
-4580|92|5|1|22|21825.98|0.01|0.05|A|F|1994-01-16|1994-01-26|1994-02-05|COLLECT COD|AIR|nticingly final packag|
-4580|32|3|2|10|9320.30|0.05|0.04|R|F|1993-12-20|1993-12-30|1994-01-17|COLLECT COD|RAIL|gular, pending deposits. fina|
-4580|1|8|3|41|36941.00|0.00|0.07|R|F|1993-12-13|1994-01-31|1994-01-06|NONE|SHIP|requests. quickly silent asymptotes sle|
-4580|178|8|4|5|5390.85|0.07|0.00|A|F|1994-01-28|1993-12-17|1994-02-22|NONE|TRUCK|o beans. f|
-4580|189|10|5|39|42478.02|0.03|0.02|R|F|1993-12-28|1993-12-26|1994-01-23|NONE|RAIL|. fluffily final dolphins use furiously al|
-4581|165|4|1|37|39410.92|0.01|0.04|A|F|1992-10-17|1992-11-05|1992-11-04|DELIVER IN PERSON|MAIL|e the blithely bold pearls ha|
-4581|50|3|2|7|6650.35|0.01|0.02|A|F|1992-10-09|1992-10-20|1992-10-21|TAKE BACK RETURN|MAIL|express accounts d|
-4581|21|10|3|46|42366.92|0.04|0.04|A|F|1992-09-09|1992-11-27|1992-09-26|NONE|REG AIR|nag toward the carefully final accounts. |
-4582|192|5|1|17|18567.23|0.09|0.08|N|O|1996-08-17|1996-08-26|1996-08-20|COLLECT COD|REG AIR|ng packages. depo|
-4583|141|2|1|17|17699.38|0.01|0.05|A|F|1994-11-08|1994-11-03|1994-11-29|COLLECT COD|MAIL|romise. reques|
-4583|187|8|2|43|46748.74|0.04|0.04|A|F|1994-10-30|1994-12-17|1994-11-16|COLLECT COD|RAIL|fully after the speci|
-4583|196|10|3|28|30693.32|0.00|0.07|A|F|1994-10-29|1994-11-21|1994-11-28|NONE|SHIP|to beans haggle sly|
-4583|173|4|4|27|28975.59|0.08|0.03|R|F|1995-01-11|1994-12-24|1995-02-10|DELIVER IN PERSON|TRUCK| detect silent requests. furiously speci|
-4583|184|5|5|36|39030.48|0.09|0.06|A|F|1995-01-06|1994-11-25|1995-01-29|DELIVER IN PERSON|RAIL|ar requests haggle after the furiously |
-4583|122|7|6|14|14309.68|0.09|0.01|R|F|1994-11-17|1994-11-08|1994-11-21|DELIVER IN PERSON|AIR|detect. doggedly regular pi|
-4583|87|8|7|32|31586.56|0.04|0.00|A|F|1995-01-13|1994-10-29|1995-02-08|TAKE BACK RETURN|RAIL|across the pinto beans-- quickly|
-4608|173|1|1|30|32195.10|0.08|0.05|R|F|1994-10-08|1994-07-18|1994-10-25|DELIVER IN PERSON|SHIP|s cajole. slyly |
-4608|47|8|2|50|47352.00|0.06|0.01|A|F|1994-07-25|1994-09-01|1994-08-10|NONE|FOB| theodolites|
-4608|79|9|3|50|48953.50|0.03|0.01|A|F|1994-08-04|1994-09-10|1994-08-13|COLLECT COD|TRUCK| wake closely. even decoys haggle above|
-4608|31|2|4|36|33517.08|0.05|0.06|R|F|1994-10-04|1994-08-02|1994-10-21|COLLECT COD|FOB|ages wake quickly slyly iron|
-4609|47|6|1|28|26517.12|0.10|0.05|N|O|1997-02-02|1997-02-17|1997-03-02|DELIVER IN PERSON|REG AIR|ously. quickly final requests cajole fl|
-4609|185|6|2|3|3255.54|0.09|0.03|N|O|1996-12-28|1997-02-06|1997-01-20|NONE|FOB|nstructions. furious instructions |
-4609|23|4|3|46|42458.92|0.05|0.05|N|O|1997-02-11|1997-01-16|1997-03-07|NONE|FOB|r foxes. fluffily ironic ideas ha|
-4610|87|8|1|21|20728.68|0.07|0.07|R|F|1993-08-10|1993-08-05|1993-08-27|NONE|REG AIR|ly special theodolites. even,|
-4610|175|5|2|14|15052.38|0.00|0.07|R|F|1993-07-28|1993-07-25|1993-07-31|TAKE BACK RETURN|SHIP| ironic frays. dependencies detect blithel|
-4610|159|1|3|44|46602.60|0.05|0.03|A|F|1993-08-05|1993-07-20|1993-08-19|COLLECT COD|TRUCK| final theodolites |
-4610|75|3|4|26|25351.82|0.06|0.03|R|F|1993-07-01|1993-07-19|1993-07-19|NONE|MAIL| to the fluffily ironic requests h|
-4610|147|8|5|29|30367.06|0.08|0.04|R|F|1993-08-09|1993-07-27|1993-08-16|DELIVER IN PERSON|AIR| foxes. special, express package|
-4611|52|7|1|47|44746.35|0.09|0.06|A|F|1993-03-05|1993-03-01|1993-03-17|COLLECT COD|TRUCK|iously. furiously regular|
-4611|35|6|2|31|28985.93|0.04|0.02|A|F|1993-01-28|1993-02-14|1993-01-29|TAKE BACK RETURN|AIR| final pinto beans. permanent, sp|
-4611|82|3|3|50|49104.00|0.08|0.01|R|F|1993-01-22|1993-03-30|1993-02-16|TAKE BACK RETURN|AIR|l platelets. |
-4611|71|9|4|48|46611.36|0.02|0.08|R|F|1993-02-28|1993-02-12|1993-03-01|COLLECT COD|AIR|ular accounts |
-4612|6|9|1|20|18120.00|0.02|0.03|R|F|1993-09-24|1993-12-18|1993-10-22|NONE|AIR|beans sleep blithely iro|
-4612|50|7|2|17|16150.85|0.10|0.06|A|F|1994-01-09|1993-11-08|1994-02-06|TAKE BACK RETURN|REG AIR|equests haggle carefully silent excus|
-4612|137|8|3|40|41485.20|0.08|0.01|R|F|1993-10-08|1993-11-23|1993-10-24|DELIVER IN PERSON|RAIL|special platelets.|
-4612|185|6|4|10|10851.80|0.10|0.06|A|F|1993-11-11|1993-11-19|1993-11-13|TAKE BACK RETURN|SHIP|unusual theodol|
-4613|38|9|1|17|15946.51|0.09|0.07|N|O|1998-06-07|1998-05-11|1998-06-29|DELIVER IN PERSON|SHIP|liers cajole a|
-4613|108|1|2|25|25202.50|0.05|0.04|N|O|1998-05-22|1998-04-11|1998-05-27|TAKE BACK RETURN|SHIP|y pending platelets x-ray ironically! pend|
-4613|174|3|3|15|16112.55|0.10|0.02|N|O|1998-05-31|1998-04-16|1998-06-25|DELIVER IN PERSON|MAIL|against the quickly r|
-4613|8|1|4|36|32688.00|0.04|0.01|N|O|1998-04-22|1998-05-05|1998-05-04|DELIVER IN PERSON|AIR|gainst the furiously ironic|
-4613|111|8|5|35|35388.85|0.04|0.06|N|O|1998-06-04|1998-04-17|1998-06-20|COLLECT COD|MAIL|e blithely against the even, bold pi|
-4613|196|8|6|47|51520.93|0.04|0.04|N|O|1998-07-03|1998-05-26|1998-07-09|NONE|FOB|uriously special requests wak|
-4613|119|3|7|39|39745.29|0.09|0.05|N|O|1998-06-12|1998-06-01|1998-07-06|DELIVER IN PERSON|REG AIR|ously express|
-4614|7|2|1|19|17233.00|0.09|0.08|N|O|1996-05-17|1996-06-21|1996-06-08|TAKE BACK RETURN|AIR|ix. carefully regular |
-4614|65|6|2|3|2895.18|0.08|0.01|N|O|1996-07-22|1996-07-21|1996-08-07|NONE|MAIL|ions engage final, ironic |
-4614|8|1|3|36|32688.00|0.10|0.04|N|O|1996-07-05|1996-06-26|1996-07-07|NONE|REG AIR|onic foxes affix furi|
-4614|126|9|4|6|6156.72|0.09|0.01|N|O|1996-06-11|1996-05-30|1996-07-03|COLLECT COD|REG AIR|ake quickly quickly regular epitap|
-4614|73|3|5|24|23353.68|0.07|0.06|N|O|1996-07-01|1996-06-24|1996-07-08|COLLECT COD|REG AIR|regular, even|
-4614|34|5|6|32|29888.96|0.10|0.05|N|O|1996-08-21|1996-05-28|1996-09-16|NONE|REG AIR|ickly furio|
-4614|128|1|7|41|42152.92|0.01|0.07|N|O|1996-07-31|1996-07-12|1996-08-16|COLLECT COD|REG AIR|ackages haggle carefully about the even, b|
-4615|92|4|1|10|9920.90|0.02|0.08|A|F|1993-11-20|1993-10-05|1993-12-08|DELIVER IN PERSON|AIR|sits. slyly express deposits are|
-4640|88|9|1|5|4940.40|0.03|0.08|N|O|1996-02-05|1996-02-14|1996-02-15|TAKE BACK RETURN|RAIL| warthogs against the regular|
-4640|88|9|2|9|8892.72|0.03|0.05|N|O|1996-02-12|1996-02-14|1996-02-29|DELIVER IN PERSON|AIR| accounts. unu|
-4640|27|10|3|18|16686.36|0.02|0.07|N|O|1996-02-28|1996-03-06|1996-03-28|DELIVER IN PERSON|RAIL|boost furiously accord|
-4640|23|2|4|36|33228.72|0.06|0.08|N|O|1996-01-03|1996-03-09|1996-01-11|DELIVER IN PERSON|RAIL|iously furious accounts boost. carefully|
-4640|156|1|5|15|15842.25|0.03|0.02|N|O|1996-03-19|1996-02-09|1996-04-11|TAKE BACK RETURN|FOB|y regular instructions doze furiously. reg|
-4641|190|1|1|45|49058.55|0.07|0.03|R|F|1993-05-11|1993-04-19|1993-05-21|DELIVER IN PERSON|MAIL| about the close |
-4641|95|7|2|39|38808.51|0.06|0.00|R|F|1993-02-10|1993-03-06|1993-02-15|TAKE BACK RETURN|REG AIR| the bold reque|
-4641|36|7|3|15|14040.45|0.01|0.08|R|F|1993-01-25|1993-04-09|1993-02-05|TAKE BACK RETURN|AIR|s. carefully even exc|
-4642|194|7|1|11|12036.09|0.04|0.07|A|F|1995-05-23|1995-04-26|1995-06-04|COLLECT COD|TRUCK|lithely express asympt|
-4642|180|10|2|34|36726.12|0.04|0.07|R|F|1995-04-01|1995-05-11|1995-04-23|COLLECT COD|SHIP|theodolites detect among the ironically sp|
-4642|21|2|3|10|9210.20|0.04|0.02|R|F|1995-04-16|1995-04-28|1995-04-24|COLLECT COD|RAIL|urts. even deposits nag beneath |
-4642|94|7|4|18|17893.62|0.00|0.04|N|F|1995-06-16|1995-04-16|1995-06-21|NONE|TRUCK|ily pending accounts hag|
-4642|179|10|5|41|44245.97|0.10|0.00|R|F|1995-04-08|1995-04-13|1995-05-01|DELIVER IN PERSON|MAIL|s are blithely. requests wake above the fur|
-4643|185|6|1|50|54259.00|0.08|0.05|N|O|1995-09-11|1995-08-13|1995-09-30|DELIVER IN PERSON|SHIP|. ironic deposits cajo|
-4644|177|7|1|4|4308.68|0.06|0.03|N|O|1998-05-06|1998-03-19|1998-05-28|NONE|MAIL|gular requests? pendi|
-4644|97|8|2|16|15953.44|0.03|0.04|N|O|1998-03-13|1998-02-21|1998-04-03|COLLECT COD|SHIP|lar excuses across the |
-4644|115|9|3|10|10151.10|0.02|0.02|N|O|1998-02-21|1998-02-28|1998-03-19|COLLECT COD|REG AIR|osits according to the|
-4644|154|2|4|45|47436.75|0.10|0.07|N|O|1998-02-02|1998-04-08|1998-02-15|COLLECT COD|SHIP| carefully a|
-4644|87|8|5|10|9870.80|0.08|0.08|N|O|1998-03-12|1998-03-11|1998-03-19|TAKE BACK RETURN|REG AIR| the slow, final fo|
-4645|50|7|1|45|42752.25|0.09|0.05|A|F|1994-12-27|1994-11-02|1994-12-31|DELIVER IN PERSON|AIR|ular ideas. slyly|
-4645|66|7|2|32|30913.92|0.10|0.08|A|F|1994-11-17|1994-10-30|1994-11-18|COLLECT COD|REG AIR| final accounts alongside|
-4645|54|5|3|25|23851.25|0.03|0.00|R|F|1994-10-25|1994-12-11|1994-11-14|NONE|REG AIR|braids. ironic dependencies main|
-4645|37|8|4|42|39355.26|0.10|0.02|R|F|1994-12-02|1994-12-18|1994-12-16|COLLECT COD|TRUCK|regular pinto beans amon|
-4645|161|10|5|35|37140.60|0.03|0.07|A|F|1994-12-08|1994-11-25|1994-12-09|TAKE BACK RETURN|FOB|sias believe bl|
-4645|42|9|6|27|25435.08|0.09|0.08|R|F|1994-11-26|1994-10-25|1994-12-04|NONE|SHIP|ously express pinto beans. ironic depos|
-4645|31|2|7|42|39103.26|0.10|0.06|A|F|1994-12-31|1994-10-22|1995-01-28|DELIVER IN PERSON|AIR|e slyly regular pinto beans. thin|
-4646|191|3|1|24|26188.56|0.02|0.05|N|O|1996-09-18|1996-08-09|1996-09-21|TAKE BACK RETURN|RAIL|ic platelets lose carefully. blithely unu|
-4646|178|6|2|26|28032.42|0.07|0.00|N|O|1996-10-02|1996-08-25|1996-10-27|DELIVER IN PERSON|MAIL|ix according to the slyly spe|
-4646|34|10|3|18|16812.54|0.01|0.00|N|O|1996-06-30|1996-08-10|1996-07-12|TAKE BACK RETURN|TRUCK|beans sleep car|
-4646|40|1|4|38|35721.52|0.08|0.01|N|O|1996-09-01|1996-08-23|1996-09-27|COLLECT COD|SHIP|al platelets cajole. slyly final dol|
-4646|26|1|5|22|20372.44|0.01|0.08|N|O|1996-07-14|1996-08-06|1996-07-29|DELIVER IN PERSON|MAIL|cies are blithely after the slyly reg|
-4647|93|6|1|16|15889.44|0.09|0.07|R|F|1994-09-07|1994-07-15|1994-10-06|COLLECT COD|RAIL|o beans about the fluffily special the|
-4647|129|2|2|34|34990.08|0.01|0.02|R|F|1994-05-20|1994-06-20|1994-05-29|COLLECT COD|TRUCK|ly sly accounts|
-4647|147|8|3|27|28272.78|0.03|0.08|R|F|1994-05-20|1994-06-26|1994-05-30|NONE|FOB|ully even ti|
-4647|139|10|4|2|2078.26|0.04|0.07|R|F|1994-07-03|1994-07-22|1994-07-22|TAKE BACK RETURN|RAIL|dolites wake furiously special pinto be|
-4647|187|8|5|2|2174.36|0.07|0.06|A|F|1994-05-27|1994-08-05|1994-06-10|TAKE BACK RETURN|FOB| pinto beans believe furiously slyly silent|
-4647|29|4|6|28|26012.56|0.02|0.03|A|F|1994-08-25|1994-08-06|1994-09-18|DELIVER IN PERSON|FOB| are above the fluffily fin|
-4672|59|7|1|22|21099.10|0.01|0.07|N|O|1995-12-03|1995-12-08|1995-12-17|COLLECT COD|AIR|l instructions. blithely ironic packages |
-4672|61|10|2|41|39403.46|0.00|0.00|N|O|1995-12-01|1995-12-15|1995-12-12|COLLECT COD|RAIL| slyly quie|
-4672|163|10|3|24|25515.84|0.04|0.03|N|O|1995-11-11|1995-12-28|1995-12-04|NONE|REG AIR|y fluffily stealt|
-4672|57|2|4|13|12441.65|0.10|0.03|N|O|1996-02-02|1995-12-13|1996-03-02|DELIVER IN PERSON|RAIL|ar requests? pending accounts against|
-4672|55|10|5|45|42977.25|0.08|0.07|N|O|1996-02-07|1996-01-16|1996-02-14|DELIVER IN PERSON|MAIL| platelets use amon|
-4672|141|8|6|20|20822.80|0.02|0.07|N|O|1995-12-08|1996-01-25|1995-12-19|COLLECT COD|REG AIR|s boost at the ca|
-4672|72|10|7|38|36938.66|0.01|0.01|N|O|1995-11-28|1995-12-08|1995-12-13|COLLECT COD|SHIP|ests. idle, regular ex|
-4673|17|8|1|8|7336.08|0.08|0.01|N|O|1996-10-12|1996-10-05|1996-11-04|TAKE BACK RETURN|FOB|lithely final re|
-4673|101|2|2|44|44048.40|0.06|0.01|N|O|1996-12-11|1996-10-31|1997-01-08|DELIVER IN PERSON|RAIL| gifts cajole dari|
-4673|123|2|3|9|9208.08|0.04|0.07|N|O|1996-10-15|1996-09-30|1996-10-30|DELIVER IN PERSON|MAIL|ages nag across |
-4674|150|7|1|50|52507.50|0.07|0.08|A|F|1994-05-13|1994-06-15|1994-06-05|COLLECT COD|RAIL|haggle about the blithel|
-4674|189|10|2|35|38121.30|0.02|0.05|A|F|1994-08-02|1994-06-04|1994-08-21|COLLECT COD|FOB|le quickly after the express sent|
-4674|111|5|3|3|3033.33|0.01|0.05|A|F|1994-07-19|1994-05-28|1994-07-23|TAKE BACK RETURN|RAIL| regular requests na|
-4674|13|7|4|21|19173.21|0.02|0.08|R|F|1994-05-08|1994-07-02|1994-06-04|COLLECT COD|RAIL|ent accounts sublate deposits. instruc|
-4675|171|2|1|6|6427.02|0.00|0.05|R|F|1994-01-22|1994-01-06|1994-02-12|TAKE BACK RETURN|TRUCK| unusual ideas thrash bl|
-4675|144|7|2|12|12529.68|0.00|0.04|A|F|1993-12-22|1994-01-12|1993-12-23|TAKE BACK RETURN|AIR|posits affix carefully|
-4675|181|2|3|5|5405.90|0.05|0.05|A|F|1994-01-16|1994-01-05|1994-01-18|DELIVER IN PERSON|RAIL|lent pinto beans|
-4675|34|10|4|26|24284.78|0.03|0.01|A|F|1993-12-16|1993-12-29|1993-12-23|DELIVER IN PERSON|SHIP|nts. express requests are quickly |
-4675|81|2|5|18|17659.44|0.01|0.08|R|F|1994-02-23|1994-01-18|1994-03-05|TAKE BACK RETURN|FOB|cajole unusual dep|
-4675|119|10|6|1|1019.11|0.10|0.06|R|F|1994-03-18|1994-02-14|1994-04-17|NONE|SHIP|unts. caref|
-4676|165|2|1|47|50062.52|0.03|0.06|N|O|1995-12-20|1995-10-04|1996-01-09|NONE|AIR|lithely about the carefully special requ|
-4676|6|1|2|33|29898.00|0.08|0.05|N|O|1995-12-29|1995-10-01|1996-01-18|TAKE BACK RETURN|FOB|yly express |
-4676|146|3|3|4|4184.56|0.10|0.06|N|O|1995-12-12|1995-10-22|1995-12-13|TAKE BACK RETURN|TRUCK|detect above the ironic platelets. fluffily|
-4676|111|2|4|50|50555.50|0.07|0.01|N|O|1995-09-20|1995-11-20|1995-10-18|TAKE BACK RETURN|AIR|r deposits boost boldly quickly quick asymp|
-4676|122|7|5|29|29641.48|0.01|0.02|N|O|1995-12-29|1995-11-12|1996-01-06|TAKE BACK RETURN|RAIL|ly regular theodolites sleep.|
-4676|46|7|6|8|7568.32|0.08|0.08|N|O|1995-12-05|1995-10-18|1996-01-02|COLLECT COD|AIR|cuses boost above|
-4676|64|1|7|13|12532.78|0.05|0.07|N|O|1995-11-18|1995-11-07|1995-12-10|TAKE BACK RETURN|TRUCK| at the slyly bold attainments. silently e|
-4677|128|3|1|25|25703.00|0.04|0.04|N|O|1998-04-11|1998-05-11|1998-04-18|TAKE BACK RETURN|REG AIR|unts doubt furiousl|
-4678|58|6|1|35|33531.75|0.04|0.08|N|O|1998-11-27|1998-10-02|1998-12-17|TAKE BACK RETURN|AIR|he accounts. fluffily bold sheaves b|
-4678|117|1|2|18|18307.98|0.03|0.06|N|O|1998-10-30|1998-09-22|1998-11-25|TAKE BACK RETURN|SHIP|usly ironic |
-4678|96|9|3|13|12949.17|0.10|0.07|N|O|1998-11-03|1998-10-17|1998-11-06|TAKE BACK RETURN|SHIP|its. carefully final fr|
-4678|22|1|4|23|21206.46|0.06|0.05|N|O|1998-09-03|1998-09-20|1998-09-04|DELIVER IN PERSON|SHIP|ily sly deposi|
-4678|178|9|5|40|43126.80|0.03|0.07|N|O|1998-11-11|1998-10-27|1998-11-24|TAKE BACK RETURN|AIR|. final, unusual requests sleep thinl|
-4679|190|1|1|7|7631.33|0.10|0.05|R|F|1993-05-11|1993-04-11|1993-05-16|NONE|TRUCK|kages. bold, regular packa|
-4704|78|6|1|14|13692.98|0.04|0.04|N|O|1996-10-27|1996-11-02|1996-11-07|DELIVER IN PERSON|TRUCK| above the slyly final requests. quickly |
-4704|28|3|2|7|6496.14|0.03|0.04|N|O|1996-12-04|1996-10-30|1996-12-23|DELIVER IN PERSON|SHIP|ers wake car|
-4704|64|5|3|44|42418.64|0.02|0.05|N|O|1996-09-02|1996-10-07|1996-09-17|DELIVER IN PERSON|REG AIR|out the care|
-4705|111|8|1|22|22244.42|0.04|0.04|R|F|1992-07-05|1992-05-11|1992-07-29|DELIVER IN PERSON|SHIP| fluffily pending accounts ca|
-4705|31|7|2|14|13034.42|0.00|0.08|R|F|1992-07-14|1992-05-23|1992-07-25|DELIVER IN PERSON|TRUCK|ain carefully amon|
-4705|56|1|3|16|15296.80|0.07|0.08|R|F|1992-07-02|1992-06-06|1992-07-06|DELIVER IN PERSON|RAIL|special ideas nag sl|
-4705|130|3|4|31|31934.03|0.03|0.03|R|F|1992-04-03|1992-05-30|1992-04-05|COLLECT COD|TRUCK|furiously final accou|
-4705|163|10|5|28|29768.48|0.10|0.01|A|F|1992-06-03|1992-06-07|1992-06-22|DELIVER IN PERSON|MAIL|tes wake according to the unusual plate|
-4705|184|5|6|23|24936.14|0.06|0.03|R|F|1992-06-22|1992-06-11|1992-07-18|DELIVER IN PERSON|MAIL| above the furiously ev|
-4705|89|10|7|40|39563.20|0.08|0.06|A|F|1992-04-19|1992-04-28|1992-05-07|COLLECT COD|TRUCK|blithely. sly|
-4706|182|3|1|37|40040.66|0.02|0.06|A|F|1993-02-20|1993-03-05|1993-03-03|DELIVER IN PERSON|TRUCK|kly final deposits c|
-4706|122|3|2|23|23508.76|0.03|0.01|A|F|1993-04-01|1993-03-13|1993-05-01|COLLECT COD|FOB|deas across t|
-4706|68|5|3|6|5808.36|0.01|0.04|R|F|1993-01-20|1993-03-18|1993-01-26|NONE|MAIL|efully eve|
-4706|116|10|4|5|5080.55|0.06|0.06|R|F|1993-02-14|1993-01-31|1993-02-26|NONE|REG AIR|ptotes haggle ca|
-4706|50|7|5|27|25651.35|0.06|0.08|A|F|1993-04-04|1993-03-11|1993-04-09|COLLECT COD|REG AIR|into beans. finally special instruct|
-4707|34|5|1|7|6538.21|0.02|0.05|R|F|1995-05-14|1995-04-06|1995-06-06|COLLECT COD|SHIP|ecial sheaves boost blithely accor|
-4707|136|7|2|49|50770.37|0.00|0.07|N|F|1995-06-17|1995-05-16|1995-06-25|COLLECT COD|FOB| alongside of the slyly ironic instructio|
-4708|191|4|1|18|19641.42|0.02|0.04|A|F|1994-11-11|1994-11-15|1994-11-26|NONE|REG AIR|special, eve|
-4708|75|3|2|5|4875.35|0.05|0.05|A|F|1994-10-15|1994-12-02|1994-11-12|COLLECT COD|MAIL|ely. carefully sp|
-4708|77|7|3|32|31266.24|0.04|0.07|A|F|1994-11-12|1994-11-14|1994-11-23|TAKE BACK RETURN|MAIL|the accounts. e|
-4709|25|6|1|25|23125.50|0.03|0.05|N|O|1996-02-21|1996-02-11|1996-03-17|DELIVER IN PERSON|AIR|deposits grow. fluffily unusual accounts |
-4709|177|5|2|25|26929.25|0.05|0.03|N|O|1996-01-22|1996-03-03|1996-02-21|DELIVER IN PERSON|REG AIR|inst the ironic, regul|
-4710|183|4|1|40|43327.20|0.10|0.08|A|F|1995-03-09|1995-02-25|1995-03-29|TAKE BACK RETURN|AIR|cross the blithely bold packages. silen|
-4710|128|3|2|47|48321.64|0.04|0.01|R|F|1995-02-22|1995-01-12|1995-02-28|NONE|RAIL|blithely express packages. even, ironic re|
-4711|133|4|1|7|7231.91|0.03|0.01|N|O|1998-05-12|1998-06-24|1998-05-24|COLLECT COD|MAIL|ly. bold accounts use fluff|
-4711|145|6|2|15|15677.10|0.08|0.07|N|O|1998-06-09|1998-07-30|1998-06-18|COLLECT COD|SHIP| beans wake. deposits could bo|
-4711|150|1|3|22|23103.30|0.02|0.03|N|O|1998-06-21|1998-06-18|1998-07-19|TAKE BACK RETURN|REG AIR|along the quickly careful packages. bli|
-4711|65|10|4|8|7720.48|0.07|0.00|N|O|1998-06-17|1998-06-13|1998-06-27|TAKE BACK RETURN|SHIP|g to the carefully ironic deposits. specia|
-4711|49|2|5|15|14235.60|0.05|0.01|N|O|1998-09-03|1998-07-15|1998-09-13|TAKE BACK RETURN|SHIP|ld requests: furiously final inst|
-4711|116|7|6|45|45724.95|0.05|0.06|N|O|1998-05-19|1998-07-14|1998-05-21|COLLECT COD|SHIP| ironic theodolites |
-4711|46|5|7|18|17028.72|0.05|0.04|N|O|1998-07-03|1998-07-31|1998-07-23|DELIVER IN PERSON|RAIL| blithely. bold asymptote|
-4736|196|10|1|26|28500.94|0.03|0.03|N|O|1996-02-02|1996-01-18|1996-02-09|DELIVER IN PERSON|AIR|efully speci|
-4736|4|1|2|43|38872.00|0.06|0.07|N|O|1996-02-05|1995-12-21|1996-02-06|COLLECT COD|MAIL|quests. carefully |
-4737|191|5|1|37|40374.03|0.03|0.04|R|F|1993-05-17|1993-04-10|1993-05-30|DELIVER IN PERSON|TRUCK|s. fluffily regular |
-4737|69|8|2|22|21319.32|0.04|0.04|A|F|1993-03-29|1993-05-22|1993-04-16|TAKE BACK RETURN|RAIL| hang fluffily around t|
-4738|187|8|1|9|9784.62|0.04|0.04|A|F|1992-06-01|1992-06-26|1992-06-02|COLLECT COD|TRUCK|posits serve slyly. unusual pint|
-4738|173|3|2|16|17170.72|0.07|0.08|A|F|1992-06-17|1992-06-20|1992-06-21|NONE|MAIL|nic deposits are slyly! carefu|
-4738|100|2|3|50|50005.00|0.04|0.02|A|F|1992-06-18|1992-07-04|1992-07-07|TAKE BACK RETURN|TRUCK|the blithely ironic braids sleep slyly|
-4738|29|4|4|22|20438.44|0.02|0.08|A|F|1992-05-25|1992-05-19|1992-06-12|COLLECT COD|SHIP|ld, even packages. furio|
-4738|187|8|5|13|14133.34|0.04|0.05|R|F|1992-05-30|1992-06-11|1992-06-26|COLLECT COD|AIR| wake. unusual platelets for the|
-4738|159|1|6|10|10591.50|0.10|0.01|R|F|1992-07-10|1992-06-16|1992-07-25|TAKE BACK RETURN|SHIP|hins above the|
-4738|83|4|7|28|27526.24|0.05|0.07|A|F|1992-06-09|1992-07-05|1992-06-25|NONE|AIR|e furiously ironic excuses. care|
-4739|168|9|1|8|8545.28|0.07|0.07|R|F|1993-06-22|1993-05-10|1993-07-11|TAKE BACK RETURN|SHIP|cording to the |
-4739|185|6|2|31|33640.58|0.09|0.06|R|F|1993-06-20|1993-05-18|1993-06-26|COLLECT COD|SHIP|blithely special pin|
-4739|100|4|3|30|30003.00|0.09|0.00|A|F|1993-05-29|1993-04-12|1993-06-18|NONE|TRUCK|ly even packages use across th|
-4740|3|4|1|22|19866.00|0.06|0.01|N|O|1996-10-04|1996-08-17|1996-10-05|TAKE BACK RETURN|RAIL|final dependencies nag |
-4740|153|5|2|24|25275.60|0.08|0.02|N|O|1996-09-10|1996-09-27|1996-10-07|TAKE BACK RETURN|TRUCK|hely regular deposits|
-4741|73|2|1|24|23353.68|0.00|0.01|A|F|1992-09-16|1992-09-19|1992-09-20|DELIVER IN PERSON|RAIL|deas boost furiously slyly regular id|
-4741|113|4|2|16|16209.76|0.01|0.07|R|F|1992-08-25|1992-08-10|1992-08-29|TAKE BACK RETURN|FOB|final foxes haggle r|
-4741|156|8|3|24|25347.60|0.05|0.08|A|F|1992-11-04|1992-08-14|1992-11-06|TAKE BACK RETURN|MAIL|even requests.|
-4741|51|3|4|39|37090.95|0.09|0.06|R|F|1992-10-28|1992-10-03|1992-11-11|COLLECT COD|SHIP|t, regular requests|
-4741|179|10|5|40|43166.80|0.09|0.03|R|F|1992-09-20|1992-09-23|1992-10-09|TAKE BACK RETURN|REG AIR| fluffily slow deposits. fluffily regu|
-4741|157|5|6|34|35943.10|0.02|0.07|R|F|1992-08-25|1992-08-18|1992-09-20|DELIVER IN PERSON|RAIL|sly special packages after the furiously|
-4742|156|4|1|32|33796.80|0.10|0.08|R|F|1995-04-04|1995-06-12|1995-04-19|COLLECT COD|RAIL|eposits boost blithely. carefully regular a|
-4742|155|7|2|29|30599.35|0.02|0.03|N|F|1995-06-15|1995-05-05|1995-06-24|COLLECT COD|REG AIR|integrate closely among t|
-4742|72|10|3|15|14581.05|0.06|0.04|N|O|1995-07-20|1995-05-26|1995-08-11|NONE|SHIP|terns are sl|
-4742|188|9|4|31|33733.58|0.05|0.08|N|F|1995-06-13|1995-05-08|1995-06-24|COLLECT COD|REG AIR|ke slyly among the furiousl|
-4742|100|1|5|45|45004.50|0.05|0.00|R|F|1995-05-12|1995-05-14|1995-06-07|TAKE BACK RETURN|RAIL|ke carefully. do|
-4743|60|5|1|19|18241.14|0.04|0.07|A|F|1993-06-23|1993-05-03|1993-07-20|COLLECT COD|AIR|hely even accounts|
-4743|159|4|2|3|3177.45|0.01|0.03|R|F|1993-04-14|1993-06-08|1993-05-09|NONE|TRUCK|al requests. express idea|
-4743|73|2|3|21|20434.47|0.08|0.03|A|F|1993-07-02|1993-06-15|1993-07-26|DELIVER IN PERSON|RAIL|ake blithely against the packages. reg|
-4743|34|5|4|27|25218.81|0.08|0.05|R|F|1993-07-26|1993-05-27|1993-08-24|DELIVER IN PERSON|AIR|aids use. express deposits|
-4768|36|7|1|5|4680.15|0.00|0.03|R|F|1993-12-27|1994-02-09|1994-01-11|NONE|MAIL|egular accounts. bravely final fra|
-4769|35|1|1|16|14960.48|0.08|0.05|N|O|1995-07-16|1995-07-05|1995-07-22|TAKE BACK RETURN|FOB| deposits. slyly even asymptote|
-4769|63|8|2|34|32744.04|0.06|0.07|N|O|1995-07-26|1995-05-18|1995-08-03|COLLECT COD|REG AIR|ven instructions. ca|
-4769|47|10|3|36|34093.44|0.10|0.03|N|O|1995-07-22|1995-06-16|1995-08-11|NONE|RAIL|. slyly even deposit|
-4769|69|10|4|45|43607.70|0.08|0.06|R|F|1995-06-01|1995-07-13|1995-06-04|TAKE BACK RETURN|RAIL|accounts are. even accounts sleep|
-4769|112|6|5|15|15181.65|0.07|0.08|N|F|1995-06-12|1995-07-07|1995-07-04|NONE|SHIP|egular platelets can cajole across the |
-4770|32|8|1|41|38213.23|0.00|0.08|N|O|1995-09-04|1995-08-08|1995-09-10|COLLECT COD|FOB|ithely even packages sleep caref|
-4770|157|5|2|30|31714.50|0.09|0.07|N|O|1995-08-25|1995-08-27|1995-09-07|COLLECT COD|SHIP|ffily carefully ironic ideas. ironic d|
-4771|49|10|1|9|8541.36|0.01|0.00|R|F|1993-02-28|1993-02-19|1993-03-25|NONE|FOB|riously after the packages. fina|
-4771|16|7|2|21|19236.21|0.09|0.01|R|F|1993-01-19|1993-02-10|1993-02-01|NONE|FOB|fluffily pendi|
-4771|12|3|3|5|4560.05|0.06|0.08|R|F|1993-01-07|1993-01-19|1993-01-26|NONE|RAIL|ar, quiet accounts nag furiously express id|
-4771|9|4|4|21|19089.00|0.05|0.04|A|F|1992-12-20|1993-01-22|1992-12-26|TAKE BACK RETURN|SHIP| carefully re|
-4772|87|8|1|1|987.08|0.10|0.00|R|F|1994-11-13|1994-10-25|1994-11-15|DELIVER IN PERSON|AIR|ans. slyly even acc|
-4772|146|9|2|16|16738.24|0.07|0.06|R|F|1994-10-27|1994-12-07|1994-10-29|TAKE BACK RETURN|MAIL|egular accounts wake s|
-4772|95|6|3|31|30847.79|0.02|0.04|A|F|1994-10-02|1994-10-21|1994-10-13|TAKE BACK RETURN|FOB|ests are thinly. furiously unusua|
-4772|71|10|4|15|14566.05|0.02|0.07|R|F|1994-09-19|1994-10-22|1994-09-26|COLLECT COD|TRUCK| requests. express, regular th|
-4773|144|5|1|23|24015.22|0.00|0.08|N|O|1996-01-01|1996-03-19|1996-01-04|NONE|FOB|ly express grouches wak|
-4773|197|9|2|36|39498.84|0.09|0.04|N|O|1996-04-08|1996-03-03|1996-05-01|COLLECT COD|REG AIR| dependencies. quickly|
-4773|167|8|3|49|52290.84|0.05|0.02|N|O|1996-01-26|1996-02-29|1996-01-27|TAKE BACK RETURN|FOB|y final reque|
-4773|20|10|4|49|45080.98|0.09|0.04|N|O|1996-01-12|1996-02-17|1996-02-05|TAKE BACK RETURN|TRUCK|ly pending theodolites cajole caref|
-4773|150|3|5|20|21003.00|0.02|0.07|N|O|1995-12-28|1996-02-17|1996-01-15|COLLECT COD|TRUCK| blithely final deposits nag after t|
-4773|190|1|6|11|11992.09|0.10|0.06|N|O|1996-01-02|1996-01-29|1996-01-24|DELIVER IN PERSON|REG AIR|en accounts. slyly b|
-4773|158|3|7|6|6348.90|0.07|0.01|N|O|1996-03-09|1996-03-18|1996-03-27|NONE|AIR|latelets haggle s|
-4774|84|5|1|45|44283.60|0.10|0.00|R|F|1993-07-07|1993-06-08|1993-07-31|COLLECT COD|TRUCK| haggle busily afte|
-4774|39|5|2|4|3756.12|0.02|0.03|A|F|1993-08-03|1993-05-30|1993-08-19|COLLECT COD|FOB|xes according to the foxes wake above the f|
-4774|173|4|3|47|50438.99|0.10|0.08|R|F|1993-06-13|1993-07-04|1993-07-09|TAKE BACK RETURN|FOB|regular dolphins above the furi|
-4774|130|3|4|30|30903.90|0.05|0.08|A|F|1993-08-18|1993-06-08|1993-08-21|DELIVER IN PERSON|REG AIR|tions against the blithely final theodolit|
-4775|74|4|1|1|974.07|0.10|0.02|N|O|1995-09-06|1995-09-28|1995-09-29|DELIVER IN PERSON|MAIL|furiously ironic theodolite|
-4775|153|1|2|37|38966.55|0.02|0.01|N|O|1995-09-06|1995-09-28|1995-09-28|COLLECT COD|TRUCK|ts. pinto beans use according to th|
-4775|153|5|3|34|35807.10|0.09|0.06|N|O|1995-09-14|1995-10-15|1995-09-21|DELIVER IN PERSON|MAIL|onic epitaphs. f|
-4775|119|9|4|39|39745.29|0.07|0.04|N|O|1995-08-30|1995-10-12|1995-09-20|NONE|AIR|eep never with the slyly regular acc|
-4800|97|10|1|11|10967.99|0.03|0.03|R|F|1992-01-27|1992-03-16|1992-02-19|TAKE BACK RETURN|RAIL|ic dependenc|
-4800|26|5|2|1|926.02|0.06|0.06|A|F|1992-02-23|1992-03-16|1992-03-20|TAKE BACK RETURN|MAIL|nal accounts are blithely deposits. bol|
-4800|11|8|3|21|19131.21|0.09|0.05|A|F|1992-02-14|1992-03-15|1992-02-26|NONE|SHIP|ithely according to |
-4800|176|7|4|38|40894.46|0.10|0.08|R|F|1992-02-01|1992-02-28|1992-02-21|NONE|TRUCK|s sleep fluffily. furiou|
-4800|53|4|5|24|22873.20|0.08|0.04|R|F|1992-01-14|1992-02-23|1992-01-25|NONE|TRUCK|ully carefully r|
-4801|184|5|1|37|40114.66|0.10|0.02|N|O|1996-03-09|1996-02-29|1996-03-25|TAKE BACK RETURN|FOB|uests hinder blithely against the instr|
-4801|26|1|2|34|31484.68|0.03|0.02|N|O|1996-02-05|1996-04-16|1996-02-23|NONE|SHIP|y final requests |
-4801|110|1|3|4|4040.44|0.04|0.04|N|O|1996-03-23|1996-04-04|1996-03-25|COLLECT COD|RAIL|pitaphs. regular, reg|
-4801|92|3|4|39|38691.51|0.07|0.01|N|O|1996-03-19|1996-03-21|1996-04-17|TAKE BACK RETURN|REG AIR|warhorses wake never for the care|
-4802|40|1|1|6|5640.24|0.00|0.06|N|O|1997-04-16|1997-03-25|1997-04-21|TAKE BACK RETURN|SHIP|unusual accounts wake blithely. b|
-4803|132|3|1|2|2064.26|0.08|0.03|N|O|1996-04-16|1996-03-20|1996-05-15|NONE|REG AIR|gular reque|
-4803|176|4|2|47|50579.99|0.10|0.00|N|O|1996-03-14|1996-03-30|1996-03-15|DELIVER IN PERSON|FOB|ly final excuses. slyly express requ|
-4803|196|8|3|42|46039.98|0.04|0.08|N|O|1996-04-27|1996-05-05|1996-05-17|NONE|TRUCK| accounts affix quickly ar|
-4803|22|1|4|24|22128.48|0.10|0.04|N|O|1996-02-24|1996-04-02|1996-02-28|NONE|MAIL|t blithely slyly special decoys. |
-4803|189|10|5|21|22872.78|0.03|0.06|N|O|1996-05-25|1996-03-15|1996-06-09|COLLECT COD|FOB| silent packages use. b|
-4803|194|5|6|19|20789.61|0.07|0.00|N|O|1996-04-20|1996-03-25|1996-04-27|TAKE BACK RETURN|RAIL|sts. enticing, even|
-4804|128|1|1|44|45237.28|0.06|0.08|A|F|1992-05-02|1992-03-24|1992-05-28|TAKE BACK RETURN|AIR|aggle quickly among the slyly fi|
-4804|35|6|2|41|38336.23|0.10|0.02|R|F|1992-04-06|1992-04-12|1992-05-03|COLLECT COD|MAIL|. deposits haggle express tithes?|
-4804|65|2|3|33|31846.98|0.09|0.05|A|F|1992-03-02|1992-04-14|1992-03-13|DELIVER IN PERSON|AIR|, thin excuses. |
-4805|150|1|1|7|7351.05|0.09|0.03|A|F|1992-05-01|1992-07-09|1992-05-09|NONE|FOB| requests. regular deposit|
-4805|189|10|2|45|49013.10|0.02|0.03|R|F|1992-06-16|1992-06-08|1992-07-03|NONE|TRUCK|the furiously sly t|
-4805|154|6|3|44|46382.60|0.01|0.02|R|F|1992-05-14|1992-06-23|1992-05-25|DELIVER IN PERSON|SHIP|eposits sleep furiously qui|
-4805|65|2|4|13|12545.78|0.04|0.04|R|F|1992-07-16|1992-06-07|1992-08-10|COLLECT COD|AIR|its serve about the accounts. slyly regu|
-4805|9|10|5|42|38178.00|0.03|0.03|R|F|1992-08-17|1992-07-03|1992-09-14|NONE|REG AIR|the regular, fina|
-4805|136|7|6|18|18650.34|0.06|0.04|A|F|1992-06-07|1992-07-10|1992-06-12|COLLECT COD|TRUCK|o use pending, unusu|
-4806|16|7|1|26|23816.26|0.10|0.05|R|F|1993-05-28|1993-06-07|1993-05-29|DELIVER IN PERSON|SHIP| bold pearls sublate blithely. quickly pe|
-4806|72|10|2|6|5832.42|0.01|0.06|A|F|1993-05-17|1993-07-19|1993-05-29|TAKE BACK RETURN|SHIP|even theodolites. packages sl|
-4806|29|4|3|8|7432.16|0.09|0.00|A|F|1993-05-08|1993-07-16|1993-05-28|NONE|TRUCK|requests boost blithely. qui|
-4807|122|1|1|9|9199.08|0.04|0.08|N|O|1997-04-23|1997-03-01|1997-05-15|TAKE BACK RETURN|TRUCK|may are blithely. carefully even pinto b|
-4807|10|1|2|41|37310.41|0.07|0.08|N|O|1997-05-02|1997-03-31|1997-05-15|TAKE BACK RETURN|AIR| fluffily re|
-4807|145|6|3|34|35534.76|0.06|0.02|N|O|1997-01-31|1997-03-13|1997-02-01|NONE|SHIP|ecial ideas. deposits according to the fin|
-4807|190|1|4|32|34886.08|0.05|0.00|N|O|1997-04-04|1997-03-21|1997-04-16|NONE|RAIL|efully even dolphins slee|
-4807|159|1|5|2|2118.30|0.02|0.05|N|O|1997-05-09|1997-04-03|1997-06-05|TAKE BACK RETURN|RAIL|deas wake bli|
-4807|160|1|6|22|23323.52|0.09|0.06|N|O|1997-03-13|1997-02-23|1997-04-01|NONE|FOB|es use final excuses. furiously final|
-4832|15|6|1|23|21045.23|0.03|0.01|N|O|1997-12-05|1998-01-05|1997-12-10|NONE|RAIL|y express depo|
-4832|152|4|2|10|10521.50|0.00|0.06|N|O|1998-01-08|1998-02-01|1998-01-11|DELIVER IN PERSON|MAIL|ly. blithely bold pinto beans should have|
-4832|149|6|3|4|4196.56|0.04|0.01|N|O|1998-01-16|1998-02-12|1998-02-08|TAKE BACK RETURN|AIR|ages. slyly express deposits cajole car|
-4832|64|5|4|6|5784.36|0.02|0.01|N|O|1997-12-08|1998-02-03|1997-12-10|COLLECT COD|TRUCK|ages cajole after the bold requests. furi|
-4832|138|4|5|43|44639.59|0.10|0.08|N|O|1997-12-31|1998-02-20|1998-01-26|COLLECT COD|RAIL|oze according to the accou|
-4833|107|10|1|31|31220.10|0.08|0.04|N|O|1996-06-24|1996-07-15|1996-07-02|NONE|SHIP|ven instructions cajole against the caref|
-4833|117|7|2|11|11188.21|0.03|0.01|N|O|1996-08-24|1996-07-26|1996-09-19|NONE|REG AIR|s nag above the busily sile|
-4833|18|9|3|26|23868.26|0.08|0.04|N|O|1996-05-13|1996-07-12|1996-05-31|NONE|SHIP|s packages. even gif|
-4833|36|7|4|19|17784.57|0.07|0.07|N|O|1996-08-21|1996-07-09|1996-09-10|TAKE BACK RETURN|AIR|y quick theodolit|
-4833|35|1|5|4|3740.12|0.10|0.02|N|O|1996-08-16|1996-06-29|1996-08-22|NONE|AIR|y pending packages sleep blithely regular r|
-4834|183|4|1|27|29245.86|0.06|0.02|N|O|1997-01-09|1996-10-27|1997-01-27|DELIVER IN PERSON|RAIL|es nag blithe|
-4834|71|1|2|26|25247.82|0.01|0.00|N|O|1996-10-04|1996-10-21|1996-10-10|DELIVER IN PERSON|TRUCK|ages dazzle carefully. slyly daring foxes|
-4834|23|2|3|34|31382.68|0.03|0.01|N|O|1996-12-09|1996-11-26|1996-12-10|NONE|MAIL|ounts haggle bo|
-4834|143|10|4|38|39639.32|0.03|0.06|N|O|1997-01-10|1996-12-06|1997-01-22|COLLECT COD|FOB|alongside of the carefully even plate|
-4835|179|10|1|18|19425.06|0.00|0.03|R|F|1995-02-17|1994-12-14|1995-03-17|DELIVER IN PERSON|MAIL|eat furiously against the slyly |
-4835|91|3|2|3|2973.27|0.09|0.06|R|F|1995-01-24|1995-01-12|1995-02-16|COLLECT COD|AIR|etimes final pac|
-4835|86|7|3|27|26624.16|0.05|0.00|A|F|1994-12-10|1994-12-13|1995-01-02|DELIVER IN PERSON|REG AIR| accounts after the car|
-4835|102|7|4|23|23048.30|0.08|0.07|A|F|1995-02-05|1995-01-04|1995-02-28|NONE|SHIP|e carefully regular foxes. deposits are sly|
-4836|162|1|1|22|23367.52|0.01|0.03|N|O|1997-03-03|1997-02-23|1997-03-04|NONE|SHIP|al pinto beans. care|
-4836|48|5|2|16|15168.64|0.07|0.08|N|O|1997-01-14|1997-03-05|1997-01-30|COLLECT COD|MAIL|gular packages against the express reque|
-4836|76|4|3|14|13664.98|0.03|0.08|N|O|1997-02-21|1997-02-06|1997-03-08|COLLECT COD|MAIL|lites. unusual, bold dolphins ar|
-4836|106|1|4|15|15091.50|0.10|0.00|N|O|1997-03-08|1997-03-14|1997-03-30|TAKE BACK RETURN|TRUCK|eep slyly. even requests cajole|
-4836|51|6|5|12|11412.60|0.01|0.04|N|O|1997-02-02|1997-02-10|1997-02-03|COLLECT COD|TRUCK|sly ironic accoun|
-4837|42|1|1|16|15072.64|0.09|0.04|N|O|1998-08-12|1998-06-06|1998-08-26|COLLECT COD|FOB|ing requests are blithely regular instructi|
-4837|193|5|2|16|17491.04|0.01|0.02|N|O|1998-08-19|1998-06-18|1998-08-26|NONE|RAIL|counts cajole slyly furiou|
-4837|68|5|3|42|40658.52|0.10|0.00|N|O|1998-06-19|1998-07-06|1998-06-23|COLLECT COD|MAIL|o the furiously final theodolites boost|
-4838|122|3|1|35|35774.20|0.01|0.00|R|F|1992-10-30|1992-10-23|1992-11-21|TAKE BACK RETURN|RAIL|ly blithely unusual foxes. even package|
-4838|148|5|2|2|2096.28|0.03|0.08|R|F|1992-08-11|1992-09-16|1992-08-26|COLLECT COD|MAIL|hely final notornis are furiously blithe|
-4838|52|3|3|26|24753.30|0.06|0.04|R|F|1992-09-03|1992-10-25|1992-09-11|TAKE BACK RETURN|FOB|ular requests boost about the packages. r|
-4839|60|2|1|5|4800.30|0.10|0.07|A|F|1994-09-07|1994-07-15|1994-10-05|DELIVER IN PERSON|FOB|ses integrate. regular deposits are about |
-4839|10|1|2|25|22750.25|0.02|0.02|R|F|1994-05-20|1994-07-08|1994-05-30|NONE|REG AIR|regular packages ab|
-4839|60|1|3|18|17281.08|0.06|0.01|R|F|1994-05-18|1994-06-13|1994-06-09|TAKE BACK RETURN|FOB|blithely ironic theodolites use along|
-4839|100|1|4|19|19001.90|0.07|0.08|R|F|1994-05-20|1994-07-14|1994-05-30|NONE|REG AIR| deposits sublate furiously ir|
-4839|71|10|5|9|8739.63|0.05|0.01|R|F|1994-06-17|1994-06-18|1994-07-10|NONE|SHIP|ounts haggle carefully above|
-4864|150|9|1|28|29404.20|0.06|0.08|A|F|1993-02-06|1992-12-15|1993-02-10|COLLECT COD|REG AIR|thely around the bli|
-4864|38|4|2|38|35645.14|0.10|0.02|R|F|1992-12-20|1993-01-07|1993-01-06|TAKE BACK RETURN|SHIP|ording to the ironic, ir|
-4864|133|4|3|45|46490.85|0.02|0.01|A|F|1992-11-17|1993-01-02|1992-11-26|COLLECT COD|SHIP|round the furiously careful pa|
-4864|31|2|4|46|42827.38|0.07|0.03|A|F|1993-02-24|1993-01-02|1993-03-17|TAKE BACK RETURN|RAIL|sts use carefully across the carefull|
-4865|162|7|1|16|16994.56|0.07|0.05|N|O|1997-10-02|1997-08-20|1997-10-04|COLLECT COD|TRUCK|osits haggle. fur|
-4865|137|8|2|4|4148.52|0.07|0.01|N|O|1997-07-24|1997-07-25|1997-08-07|TAKE BACK RETURN|FOB|sts. blithely special instruction|
-4865|68|3|3|44|42594.64|0.10|0.08|N|O|1997-07-25|1997-08-20|1997-08-22|COLLECT COD|FOB|even deposits sleep against the quickly r|
-4865|50|3|4|21|19951.05|0.04|0.02|N|O|1997-07-17|1997-08-10|1997-07-21|NONE|RAIL|eposits detect sly|
-4865|54|9|5|33|31483.65|0.00|0.05|N|O|1997-07-17|1997-08-16|1997-07-30|TAKE BACK RETURN|FOB|y pending notornis ab|
-4865|65|2|6|47|45357.82|0.00|0.05|N|O|1997-08-26|1997-08-07|1997-08-31|NONE|RAIL|y unusual packages. packages|
-4866|11|8|1|9|8199.09|0.01|0.05|N|O|1997-08-30|1997-09-18|1997-09-24|TAKE BACK RETURN|MAIL|ven dependencies x-ray. quic|
-4866|102|3|2|1|1002.10|0.06|0.00|N|O|1997-10-15|1997-10-01|1997-11-14|TAKE BACK RETURN|AIR|latelets nag. q|
-4866|131|7|3|17|17529.21|0.07|0.00|N|O|1997-11-26|1997-10-11|1997-12-12|COLLECT COD|TRUCK|ess packages doubt. even somas wake f|
-4867|82|3|1|7|6874.56|0.09|0.03|A|F|1992-07-17|1992-08-17|1992-07-22|COLLECT COD|FOB|e carefully even packages. slyly ironic i|
-4867|160|8|2|3|3180.48|0.04|0.08|R|F|1992-07-04|1992-07-15|1992-07-21|NONE|AIR|yly silent deposits|
-4868|73|3|1|47|45734.29|0.03|0.03|N|O|1997-04-29|1997-04-27|1997-05-11|DELIVER IN PERSON|SHIP|gle unusual, fluffy packages. foxes cajol|
-4868|180|1|2|8|8641.44|0.10|0.08|N|O|1997-03-26|1997-05-09|1997-04-16|NONE|RAIL|ly special th|
-4868|191|2|3|49|53468.31|0.09|0.03|N|O|1997-04-23|1997-05-07|1997-04-26|NONE|SHIP|ys engage. th|
-4868|80|1|4|34|33322.72|0.04|0.02|N|O|1997-05-19|1997-04-27|1997-06-15|NONE|RAIL|en instructions about th|
-4868|122|3|5|22|22486.64|0.07|0.06|N|O|1997-04-26|1997-05-16|1997-05-01|DELIVER IN PERSON|FOB|osits. final foxes boost regular,|
-4869|41|8|1|31|29172.24|0.10|0.01|A|F|1995-01-17|1994-11-30|1995-02-02|NONE|SHIP|ins. always unusual ideas across the ir|
-4869|58|3|2|24|22993.20|0.09|0.06|A|F|1994-11-17|1994-11-07|1994-11-27|COLLECT COD|MAIL|olites cajole after the ideas. special t|
-4869|157|8|3|25|26428.75|0.00|0.05|R|F|1994-11-25|1994-11-14|1994-12-19|DELIVER IN PERSON|AIR|e according t|
-4869|103|8|4|24|24074.40|0.10|0.07|R|F|1994-11-23|1994-11-18|1994-12-11|DELIVER IN PERSON|MAIL|se deposits above the sly, q|
-4869|173|2|5|42|45073.14|0.07|0.04|R|F|1994-10-16|1994-12-10|1994-11-07|TAKE BACK RETURN|REG AIR| slyly even instructions. |
-4869|122|5|6|30|30663.60|0.00|0.05|A|F|1995-01-09|1994-11-20|1995-02-02|COLLECT COD|RAIL|gedly even requests. s|
-4870|48|5|1|49|46453.96|0.05|0.05|R|F|1994-11-14|1994-10-24|1994-12-12|TAKE BACK RETURN|SHIP| regular packages |
-4870|127|10|2|6|6162.72|0.06|0.08|A|F|1994-09-09|1994-10-16|1994-09-21|DELIVER IN PERSON|TRUCK|ress requests. bold, silent pinto bea|
-4870|31|2|3|5|4655.15|0.05|0.00|R|F|1994-10-11|1994-10-07|1994-10-24|NONE|AIR|s haggle furiously. slyly ironic dinos|
-4870|6|9|4|4|3624.00|0.03|0.08|A|F|1994-10-23|1994-09-16|1994-11-04|COLLECT COD|RAIL|its wake quickly. slyly quick|
-4870|71|1|5|36|34958.52|0.09|0.06|A|F|1994-09-06|1994-09-17|1994-10-01|COLLECT COD|REG AIR| instructions. carefully pending pac|
-4871|177|5|1|14|15080.38|0.07|0.03|N|O|1995-09-30|1995-07-29|1995-10-18|TAKE BACK RETURN|REG AIR|inst the never ironic |
-4871|161|6|2|17|18039.72|0.07|0.03|N|O|1995-09-09|1995-09-01|1995-10-02|DELIVER IN PERSON|AIR|es. carefully ev|
-4871|63|4|3|3|2889.18|0.03|0.06|N|O|1995-10-03|1995-08-10|1995-10-06|DELIVER IN PERSON|TRUCK|y special packages wak|
-4871|149|8|4|35|36719.90|0.08|0.07|N|O|1995-08-11|1995-07-18|1995-08-29|DELIVER IN PERSON|TRUCK|ackages sle|
-4871|152|3|5|10|10521.50|0.09|0.02|N|O|1995-09-12|1995-09-02|1995-10-05|TAKE BACK RETURN|AIR|s integrate after the a|
-4871|136|2|6|36|37300.68|0.02|0.08|N|O|1995-09-18|1995-08-29|1995-10-05|TAKE BACK RETURN|AIR|ely according|
-4871|140|6|7|10|10401.40|0.10|0.02|N|O|1995-07-13|1995-08-19|1995-07-29|NONE|REG AIR|p ironic theodolites. slyly even platel|
-4896|41|2|1|19|17879.76|0.09|0.05|A|F|1992-12-13|1992-11-13|1993-01-09|NONE|AIR|nusual requ|
-4896|140|1|2|44|45766.16|0.04|0.03|A|F|1992-11-24|1992-11-15|1992-12-18|COLLECT COD|MAIL|e after the slowly f|
-4896|58|10|3|6|5748.30|0.04|0.04|A|F|1992-10-30|1992-11-12|1992-11-28|DELIVER IN PERSON|TRUCK|usly regular deposits|
-4896|23|4|4|5|4615.10|0.08|0.02|R|F|1992-12-02|1992-11-11|1992-12-19|COLLECT COD|SHIP|eposits hang carefully. sly|
-4896|86|7|5|21|20707.68|0.07|0.08|R|F|1992-11-18|1992-11-18|1992-11-29|DELIVER IN PERSON|TRUCK|ly express deposits. carefully pending depo|
-4897|55|6|1|26|24831.30|0.01|0.01|R|F|1992-12-22|1992-10-25|1992-12-27|DELIVER IN PERSON|TRUCK|. carefully ironic dep|
-4897|143|6|2|34|35466.76|0.02|0.00|R|F|1992-12-31|1992-11-11|1993-01-30|COLLECT COD|AIR|ts. special dependencies use fluffily |
-4897|55|7|3|42|40112.10|0.09|0.03|A|F|1992-09-23|1992-10-28|1992-10-02|DELIVER IN PERSON|FOB|sts. blithely regular deposits will have|
-4897|104|5|4|19|19077.90|0.03|0.00|A|F|1992-11-08|1992-12-14|1992-12-03|DELIVER IN PERSON|FOB|! ironic, pending dependencies doze furiou|
-4898|72|1|1|44|42771.08|0.07|0.02|A|F|1994-09-13|1994-08-18|1994-09-16|NONE|FOB|y regular grouches about|
-4899|34|10|1|14|13076.42|0.06|0.00|R|F|1993-11-10|1994-01-10|1993-11-20|NONE|REG AIR| foxes eat|
-4900|116|3|1|40|40644.40|0.10|0.03|A|F|1992-09-02|1992-09-25|1992-09-21|COLLECT COD|TRUCK|heodolites. request|
-4900|77|8|2|33|32243.31|0.06|0.06|R|F|1992-08-18|1992-09-20|1992-08-19|COLLECT COD|MAIL|nto beans nag slyly reg|
-4900|103|8|3|48|48148.80|0.02|0.00|R|F|1992-09-18|1992-08-14|1992-09-28|TAKE BACK RETURN|MAIL|uickly ironic ideas kindle s|
-4900|32|3|4|20|18640.60|0.05|0.00|R|F|1992-09-22|1992-09-23|1992-09-27|TAKE BACK RETURN|MAIL|yers. accounts affix somet|
-4900|105|8|5|40|40204.00|0.03|0.02|R|F|1992-07-14|1992-09-05|1992-07-20|NONE|REG AIR|luffily final dol|
-4900|103|6|6|46|46142.60|0.06|0.08|R|F|1992-07-11|1992-09-19|1992-07-16|TAKE BACK RETURN|SHIP|ly final acco|
-4901|141|10|1|37|38522.18|0.00|0.04|N|O|1998-01-26|1998-02-20|1998-01-31|DELIVER IN PERSON|TRUCK| furiously ev|
-4901|165|4|2|12|12781.92|0.00|0.04|N|O|1998-01-12|1998-02-06|1998-02-03|COLLECT COD|REG AIR|y unusual deposits prom|
-4901|120|4|3|16|16321.92|0.05|0.08|N|O|1998-04-19|1998-03-18|1998-04-21|NONE|AIR|deposits. blithely fin|
-4901|36|7|4|41|38377.23|0.03|0.00|N|O|1998-03-18|1998-02-18|1998-04-14|TAKE BACK RETURN|AIR|efully bold packages affix carefully eve|
-4901|116|7|5|40|40644.40|0.06|0.02|N|O|1998-01-08|1998-01-30|1998-01-15|DELIVER IN PERSON|MAIL|ect across the furiou|
-4902|196|10|1|22|24116.18|0.00|0.04|N|O|1998-10-17|1998-08-10|1998-10-21|COLLECT COD|RAIL|r the furiously final fox|
-4902|83|4|2|1|983.08|0.09|0.04|N|O|1998-10-12|1998-08-20|1998-11-08|NONE|RAIL|daring foxes? even, bold requests wake f|
-4903|121|2|1|1|1021.12|0.06|0.03|R|F|1992-04-23|1992-06-13|1992-05-03|NONE|SHIP|nusual requests|
-4903|165|6|2|6|6390.96|0.09|0.07|R|F|1992-04-01|1992-05-16|1992-04-11|DELIVER IN PERSON|SHIP|azzle quickly along the blithely final pla|
-4903|120|10|3|27|27543.24|0.07|0.06|A|F|1992-06-29|1992-06-09|1992-07-08|COLLECT COD|RAIL|pinto beans are; |
-4928|100|1|1|4|4000.40|0.04|0.02|R|F|1993-10-25|1993-12-24|1993-11-16|TAKE BACK RETURN|REG AIR|bout the slyly final accounts. carefull|
-4928|93|4|2|20|19861.80|0.03|0.08|A|F|1994-01-19|1993-11-29|1994-02-13|DELIVER IN PERSON|SHIP|quiet theodolites ca|
-4928|149|8|3|34|35670.76|0.06|0.05|A|F|1993-10-12|1993-12-31|1993-10-14|DELIVER IN PERSON|AIR|, regular depos|
-4929|14|1|1|20|18280.20|0.00|0.04|N|O|1996-03-12|1996-05-23|1996-03-20|COLLECT COD|REG AIR| final pinto beans detect. final,|
-4929|79|7|2|40|39162.80|0.08|0.03|N|O|1996-05-30|1996-04-13|1996-06-22|TAKE BACK RETURN|AIR|unts against |
-4929|77|7|3|32|31266.24|0.08|0.02|N|O|1996-04-28|1996-05-23|1996-04-30|COLLECT COD|TRUCK|usly at the blithely pending pl|
-4929|109|4|4|26|26236.60|0.00|0.05|N|O|1996-06-10|1996-05-29|1996-06-26|DELIVER IN PERSON|RAIL| slyly. fl|
-4929|67|8|5|24|23209.44|0.09|0.05|N|O|1996-04-15|1996-04-30|1996-05-09|NONE|MAIL| accounts boost|
-4930|187|8|1|35|38051.30|0.03|0.01|A|F|1994-07-09|1994-07-30|1994-07-15|NONE|RAIL|lose slyly regular dependencies. fur|
-4930|115|5|2|20|20302.20|0.02|0.04|A|F|1994-08-21|1994-06-17|1994-08-24|COLLECT COD|FOB|he carefully|
-4930|168|7|3|28|29908.48|0.00|0.08|R|F|1994-08-27|1994-06-27|1994-09-18|COLLECT COD|TRUCK|e ironic, unusual courts. regula|
-4930|166|7|4|42|44778.72|0.00|0.00|A|F|1994-06-18|1994-06-22|1994-07-10|COLLECT COD|AIR|ions haggle. furiously regular ideas use |
-4930|190|1|5|38|41427.22|0.02|0.03|A|F|1994-06-06|1994-06-18|1994-07-03|TAKE BACK RETURN|AIR|bold requests sleep never|
-4931|194|7|1|1|1094.19|0.08|0.06|A|F|1995-01-24|1994-12-19|1995-02-07|DELIVER IN PERSON|SHIP| furiously |
-4931|151|3|2|8|8409.20|0.06|0.02|R|F|1994-12-15|1995-01-14|1995-01-06|NONE|SHIP|ts boost. packages wake sly|
-4931|144|5|3|20|20882.80|0.09|0.00|A|F|1995-01-25|1994-12-21|1995-02-06|DELIVER IN PERSON|MAIL|the furious|
-4931|200|4|4|50|55010.00|0.04|0.01|A|F|1994-12-15|1994-12-18|1994-12-23|COLLECT COD|REG AIR|s haggle al|
-4931|150|7|5|25|26253.75|0.05|0.05|R|F|1994-12-19|1995-01-05|1994-12-21|COLLECT COD|FOB|aggle bravely according to the quic|
-4931|103|6|6|8|8024.80|0.02|0.03|A|F|1995-02-16|1994-12-30|1995-03-15|DELIVER IN PERSON|SHIP|dependencies are slyly|
-4932|51|3|1|13|12363.65|0.04|0.03|A|F|1993-09-13|1993-10-16|1993-09-20|DELIVER IN PERSON|SHIP|slyly according to the furiously fin|
-4932|103|10|2|15|15046.50|0.01|0.02|R|F|1993-11-15|1993-10-25|1993-11-29|NONE|REG AIR|yly. unusu|
-4932|87|8|3|5|4935.40|0.06|0.06|A|F|1993-10-01|1993-09-13|1993-10-04|NONE|MAIL| haggle furiously. slyly ironic packages sl|
-4932|98|1|4|11|10978.99|0.09|0.06|A|F|1993-09-21|1993-09-30|1993-09-23|COLLECT COD|SHIP|as. special depende|
-4933|32|8|1|48|44737.44|0.08|0.00|N|O|1995-10-10|1995-10-03|1995-11-04|COLLECT COD|SHIP|ideas. sly|
-4933|82|3|2|2|1964.16|0.09|0.00|N|O|1995-10-01|1995-09-29|1995-10-19|DELIVER IN PERSON|MAIL|ctions nag final instructions. accou|
-4934|97|10|1|48|47860.32|0.00|0.01|N|O|1997-05-20|1997-04-22|1997-06-02|TAKE BACK RETURN|SHIP| ideas cajol|
-4934|110|1|2|41|41414.51|0.06|0.06|N|O|1997-06-04|1997-04-11|1997-06-25|TAKE BACK RETURN|FOB|wake final, ironic f|
-4934|140|1|3|8|8321.12|0.03|0.06|N|O|1997-05-20|1997-04-30|1997-05-27|TAKE BACK RETURN|MAIL|arefully express pains cajo|
-4934|148|5|4|9|9433.26|0.06|0.08|N|O|1997-06-10|1997-04-09|1997-06-12|TAKE BACK RETURN|REG AIR| haggle alongside of the|
-4934|138|9|5|29|30105.77|0.09|0.03|N|O|1997-04-10|1997-05-05|1997-05-04|DELIVER IN PERSON|AIR|aggle furiously among the busily final re|
-4934|52|3|6|42|39986.10|0.00|0.07|N|O|1997-03-19|1997-05-05|1997-03-25|NONE|MAIL|ven, ironic ideas|
-4934|11|5|7|2|1822.02|0.10|0.06|N|O|1997-06-05|1997-03-26|1997-06-09|COLLECT COD|MAIL|ongside of the brave, regula|
-4935|161|2|1|13|13795.08|0.09|0.01|A|F|1993-06-20|1993-08-13|1993-06-27|COLLECT COD|REG AIR|ly requests. final deposits might |
-4935|40|6|2|37|34781.48|0.01|0.05|R|F|1993-08-30|1993-07-23|1993-09-07|TAKE BACK RETURN|RAIL|y even dependencies nag a|
-4935|11|8|3|24|21864.24|0.06|0.04|A|F|1993-05-29|1993-08-17|1993-06-22|NONE|RAIL|ly quickly s|
-4935|45|6|4|49|46306.96|0.06|0.01|A|F|1993-09-16|1993-08-21|1993-10-12|COLLECT COD|TRUCK|ffily after the furiou|
-4935|10|1|5|14|12740.14|0.08|0.08|A|F|1993-05-30|1993-07-25|1993-05-31|COLLECT COD|FOB|slowly. blith|
-4935|188|9|6|36|39174.48|0.10|0.00|R|F|1993-07-11|1993-07-04|1993-08-01|DELIVER IN PERSON|RAIL|requests across the quick|
-4960|18|5|1|36|33048.36|0.01|0.05|R|F|1995-03-06|1995-05-04|1995-04-05|TAKE BACK RETURN|RAIL|c, unusual accou|
-4960|45|8|2|6|5670.24|0.03|0.08|R|F|1995-03-21|1995-05-13|1995-04-14|TAKE BACK RETURN|SHIP|ual package|
-4960|149|8|3|9|9442.26|0.01|0.03|A|F|1995-03-20|1995-05-05|1995-04-17|COLLECT COD|RAIL|e blithely carefully fina|
-4960|120|7|4|14|14281.68|0.00|0.06|A|F|1995-04-03|1995-04-17|1995-04-07|NONE|RAIL|accounts. warhorses are. grouches |
-4960|98|1|5|8|7984.72|0.07|0.04|R|F|1995-03-14|1995-04-18|1995-04-09|NONE|FOB|as. busily regular packages nag. |
-4960|146|7|6|37|38707.18|0.10|0.04|R|F|1995-05-23|1995-04-12|1995-06-01|DELIVER IN PERSON|MAIL|ending theodolites w|
-4960|170|1|7|42|44947.14|0.08|0.07|A|F|1995-04-19|1995-04-11|1995-05-08|NONE|SHIP|s requests cajole. |
-4961|44|7|1|38|35873.52|0.10|0.07|N|O|1998-07-09|1998-06-03|1998-07-11|TAKE BACK RETURN|FOB|e on the blithely bold accounts. unu|
-4961|60|5|2|1|960.06|0.08|0.08|N|O|1998-07-08|1998-05-25|1998-07-12|DELIVER IN PERSON|MAIL|s affix carefully silent dependen|
-4961|162|3|3|41|43548.56|0.02|0.02|N|O|1998-07-15|1998-06-15|1998-08-05|TAKE BACK RETURN|REG AIR|ily against the n|
-4961|100|3|4|10|10001.00|0.02|0.04|N|O|1998-04-15|1998-07-03|1998-04-18|DELIVER IN PERSON|MAIL|quests. regular, ironic ideas at the ironi|
-4962|19|6|1|46|42274.46|0.01|0.07|R|F|1993-08-23|1993-09-04|1993-08-27|COLLECT COD|REG AIR| pinto beans grow about the sl|
-4963|168|5|1|38|40590.08|0.08|0.02|N|O|1996-12-25|1996-12-12|1997-01-02|COLLECT COD|AIR|tegrate daringly accou|
-4963|76|4|2|16|15617.12|0.00|0.03|N|O|1996-11-20|1997-01-13|1996-12-06|COLLECT COD|MAIL| carefully slyly u|
-4964|133|9|1|29|29960.77|0.04|0.01|N|O|1997-10-18|1997-08-30|1997-11-01|NONE|AIR|k accounts nag carefully-- ironic, fin|
-4964|148|5|2|46|48214.44|0.06|0.06|N|O|1997-10-05|1997-09-12|1997-10-11|NONE|TRUCK|althy deposits|
-4964|143|4|3|18|18776.52|0.00|0.06|N|O|1997-10-13|1997-09-01|1997-11-10|DELIVER IN PERSON|AIR| platelets. furio|
-4964|180|10|4|12|12962.16|0.08|0.01|N|O|1997-09-03|1997-10-25|1997-09-15|NONE|TRUCK|ully silent instructions ca|
-4964|41|10|5|42|39523.68|0.06|0.04|N|O|1997-09-04|1997-08-28|1997-10-02|TAKE BACK RETURN|AIR| hinder. idly even|
-4964|193|7|6|22|24050.18|0.04|0.08|N|O|1997-09-11|1997-10-06|1997-09-29|NONE|AIR|equests doubt quickly. caref|
-4964|173|4|7|28|30048.76|0.00|0.05|N|O|1997-08-30|1997-09-15|1997-09-18|COLLECT COD|RAIL|among the carefully regula|
-4965|131|2|1|28|28871.64|0.05|0.03|A|F|1994-01-02|1993-11-20|1994-01-04|TAKE BACK RETURN|REG AIR| deposits. requests sublate quickly |
-4965|13|10|2|25|22825.25|0.10|0.02|R|F|1994-02-05|1993-12-15|1994-02-24|TAKE BACK RETURN|MAIL|wake at the carefully speci|
-4965|101|8|3|27|27029.70|0.05|0.06|R|F|1993-11-06|1993-12-24|1993-11-30|TAKE BACK RETURN|SHIP|efully final foxes|
-4965|138|9|4|33|34258.29|0.04|0.04|A|F|1993-12-31|1993-11-29|1994-01-27|DELIVER IN PERSON|REG AIR|iously slyly|
-4966|76|6|1|10|9760.70|0.06|0.03|N|O|1996-09-23|1996-11-02|1996-10-07|TAKE BACK RETURN|SHIP| requests. carefully pending requests|
-4966|194|6|2|6|6565.14|0.02|0.01|N|O|1996-12-09|1996-11-29|1996-12-30|NONE|AIR|d deposits are sly excuses. slyly iro|
-4966|165|6|3|7|7456.12|0.00|0.01|N|O|1996-12-08|1996-10-09|1997-01-06|COLLECT COD|MAIL|ckly ironic tithe|
-4966|16|6|4|26|23816.26|0.08|0.03|N|O|1996-11-14|1996-11-29|1996-12-05|COLLECT COD|REG AIR|nt pearls haggle carefully slyly even |
-4966|144|1|5|12|12529.68|0.02|0.07|N|O|1996-12-07|1996-11-23|1996-12-20|DELIVER IN PERSON|RAIL|eodolites. ironic requests across the exp|
-4967|71|1|1|50|48553.50|0.07|0.01|N|O|1997-05-27|1997-05-13|1997-06-12|NONE|REG AIR|kages. final, unusual accounts c|
-4967|53|5|2|43|40981.15|0.00|0.07|N|O|1997-05-28|1997-04-10|1997-06-09|NONE|TRUCK|ons. slyly ironic requests|
-4967|50|1|3|15|14250.75|0.08|0.02|N|O|1997-04-16|1997-04-12|1997-05-08|TAKE BACK RETURN|MAIL|y. blithel|
-4967|123|2|4|1|1023.12|0.10|0.07|N|O|1997-06-04|1997-03-29|1997-06-23|NONE|FOB|osits. unusual frets thrash furiously|
-4992|184|5|1|42|45535.56|0.07|0.01|R|F|1992-07-19|1992-06-16|1992-08-17|TAKE BACK RETURN|RAIL|foxes about the quickly final platele|
-4992|147|4|2|47|49215.58|0.10|0.08|A|F|1992-09-04|1992-08-05|1992-09-21|COLLECT COD|MAIL|atterns use fluffily.|
-4992|144|7|3|17|17750.38|0.03|0.03|A|F|1992-07-05|1992-07-19|1992-07-30|TAKE BACK RETURN|FOB|s along the perma|
-4992|70|7|4|25|24251.75|0.04|0.06|R|F|1992-08-06|1992-07-11|1992-08-20|NONE|SHIP|ly about the never ironic requests. pe|
-4992|139|5|5|23|23899.99|0.01|0.08|R|F|1992-06-28|1992-07-15|1992-07-12|DELIVER IN PERSON|MAIL|uickly regul|
-4992|163|8|6|44|46779.04|0.05|0.02|A|F|1992-06-01|1992-07-22|1992-06-03|NONE|RAIL|rmanent, sly packages print slyly. regula|
-4993|38|4|1|34|31893.02|0.05|0.00|R|F|1994-09-21|1994-10-31|1994-09-24|TAKE BACK RETURN|REG AIR|ular, pending packages at the even packa|
-4993|129|4|2|39|40135.68|0.03|0.08|R|F|1994-09-10|1994-09-04|1994-09-26|COLLECT COD|SHIP|pending, regular requests solve caref|
-4993|166|1|3|42|44778.72|0.06|0.00|A|F|1994-08-27|1994-09-24|1994-09-05|NONE|MAIL| final packages at the q|
-4993|158|6|4|31|32802.65|0.10|0.06|A|F|1994-10-02|1994-10-29|1994-10-15|NONE|AIR|nwind thinly platelets. a|
-4994|156|8|1|36|38021.40|0.00|0.06|N|O|1996-09-29|1996-07-30|1996-10-03|TAKE BACK RETURN|TRUCK|ess ideas. blithely silent brai|
-4994|80|9|2|47|46063.76|0.04|0.05|N|O|1996-09-20|1996-08-04|1996-10-15|COLLECT COD|TRUCK|sts. blithely close ideas sleep quic|
-4994|183|4|3|29|31412.22|0.08|0.01|N|O|1996-08-26|1996-09-27|1996-09-25|DELIVER IN PERSON|RAIL|ptotes boost carefully|
-4994|39|10|4|40|37561.20|0.01|0.06|N|O|1996-08-25|1996-08-16|1996-09-07|TAKE BACK RETURN|REG AIR|eposits. regula|
-4994|42|9|5|24|22608.96|0.01|0.07|N|O|1996-08-19|1996-09-24|1996-08-25|TAKE BACK RETURN|FOB|s. slyly ironic deposits cajole f|
-4994|73|4|6|6|5838.42|0.01|0.02|N|O|1996-09-05|1996-08-04|1996-09-30|TAKE BACK RETURN|FOB|grate carefully around th|
-4994|130|1|7|31|31934.03|0.07|0.04|N|O|1996-10-14|1996-09-23|1996-11-08|TAKE BACK RETURN|RAIL|lar decoys cajole fluffil|
-4995|65|4|1|16|15440.96|0.02|0.05|N|O|1996-02-27|1996-04-03|1996-02-29|DELIVER IN PERSON|MAIL|egular, bold packages. accou|
-4995|81|2|2|43|42186.44|0.00|0.06|N|O|1996-02-24|1996-02-20|1996-03-07|NONE|AIR|ts. blithely silent ideas after t|
-4995|156|7|3|22|23235.30|0.03|0.06|N|O|1996-03-17|1996-03-12|1996-04-01|DELIVER IN PERSON|MAIL|s wake furious, express dependencies.|
-4995|40|1|4|9|8460.36|0.07|0.07|N|O|1996-03-07|1996-03-17|1996-03-11|DELIVER IN PERSON|FOB| ironic packages cajole across t|
-4995|148|7|5|48|50310.72|0.08|0.07|N|O|1996-03-22|1996-04-01|1996-04-07|NONE|SHIP|t blithely. requests affix blithely. |
-4995|110|5|6|48|48485.28|0.09|0.07|N|O|1996-04-14|1996-04-04|1996-05-07|DELIVER IN PERSON|RAIL|nstructions. carefully final depos|
-4996|56|1|1|35|33461.75|0.07|0.01|A|F|1992-10-30|1992-10-27|1992-11-05|TAKE BACK RETURN|SHIP|s. unusual, regular dolphins integrate care|
-4996|156|7|2|39|41189.85|0.02|0.07|A|F|1992-09-19|1992-10-19|1992-10-06|COLLECT COD|FOB|equests are carefully final|
-4996|128|7|3|12|12337.44|0.04|0.06|R|F|1993-01-09|1992-11-22|1993-02-04|DELIVER IN PERSON|SHIP|usly bold requests sleep dogge|
-4996|144|3|4|13|13573.82|0.00|0.00|A|F|1992-09-17|1992-12-02|1992-10-07|DELIVER IN PERSON|TRUCK|o beans use about the furious|
-4997|79|7|1|44|43079.08|0.02|0.05|N|O|1998-06-09|1998-06-12|1998-07-07|NONE|RAIL|r escapades ca|
-4997|17|7|2|5|4585.05|0.02|0.04|N|O|1998-05-16|1998-06-05|1998-06-07|COLLECT COD|REG AIR|cuses are furiously unusual asymptotes|
-4997|58|9|3|24|22993.20|0.04|0.06|N|O|1998-04-20|1998-04-23|1998-05-16|NONE|AIR|xpress, bo|
-4997|40|6|4|5|4700.20|0.10|0.03|N|O|1998-06-12|1998-04-24|1998-06-13|DELIVER IN PERSON|TRUCK|aggle slyly alongside of the slyly i|
-4997|22|7|5|46|42412.92|0.00|0.04|N|O|1998-04-28|1998-06-04|1998-05-08|TAKE BACK RETURN|SHIP|ecial courts are carefully|
-4997|29|2|6|2|1858.04|0.07|0.01|N|O|1998-07-09|1998-06-10|1998-07-21|TAKE BACK RETURN|REG AIR|counts. slyl|
-4998|154|2|1|12|12649.80|0.04|0.03|A|F|1992-02-20|1992-03-06|1992-03-01|TAKE BACK RETURN|RAIL| sleep slyly furiously final accounts. ins|
-4998|183|4|2|15|16247.70|0.06|0.00|R|F|1992-04-24|1992-03-21|1992-05-02|NONE|REG AIR|heodolites sleep quickly.|
-4998|59|10|3|27|25894.35|0.06|0.02|R|F|1992-03-17|1992-02-26|1992-04-05|DELIVER IN PERSON|MAIL|the blithely ironic |
-4998|63|10|4|47|45263.82|0.10|0.04|A|F|1992-02-07|1992-03-07|1992-02-19|DELIVER IN PERSON|TRUCK|mong the careful|
-4998|145|4|5|24|25083.36|0.01|0.04|R|F|1992-01-25|1992-03-16|1992-01-27|COLLECT COD|REG AIR| unwind about|
-4998|99|1|6|8|7992.72|0.03|0.07|A|F|1992-05-01|1992-03-03|1992-05-24|TAKE BACK RETURN|AIR|ions nag quickly according to the theodolit|
-4999|153|8|1|30|31594.50|0.00|0.02|A|F|1993-08-20|1993-08-15|1993-08-30|NONE|AIR|ades cajole carefully unusual ide|
-4999|10|1|2|44|40040.44|0.03|0.01|A|F|1993-08-01|1993-08-04|1993-08-17|COLLECT COD|REG AIR|ependencies. slowly regu|
-4999|86|7|3|30|29582.40|0.09|0.01|R|F|1993-07-21|1993-08-11|1993-08-20|DELIVER IN PERSON|RAIL|s cajole among the blithel|
-5024|166|3|1|17|18124.72|0.10|0.02|N|O|1996-11-24|1997-01-10|1996-12-04|NONE|AIR| to the expre|
-5024|58|6|2|41|39280.05|0.06|0.01|N|O|1996-11-09|1996-12-03|1996-12-01|COLLECT COD|REG AIR|osits hinder carefully |
-5024|112|6|3|18|18217.98|0.04|0.03|N|O|1996-12-02|1997-01-16|1996-12-05|NONE|MAIL|zle carefully sauternes. quickly|
-5024|123|8|4|42|42971.04|0.03|0.06|N|O|1996-12-02|1996-12-08|1996-12-04|DELIVER IN PERSON|RAIL|tegrate. busily spec|
-5025|30|9|1|11|10230.33|0.00|0.04|N|O|1997-02-21|1997-04-16|1997-03-14|COLLECT COD|SHIP|the carefully final esc|
-5025|78|7|2|10|9780.70|0.07|0.04|N|O|1997-06-04|1997-04-29|1997-06-28|COLLECT COD|RAIL|lly silent deposits boost busily again|
-5026|96|8|1|13|12949.17|0.02|0.04|N|O|1997-12-23|1997-11-02|1998-01-03|TAKE BACK RETURN|SHIP|endencies sleep carefully alongs|
-5027|98|2|1|6|5988.54|0.04|0.05|N|O|1997-09-28|1997-11-24|1997-10-25|NONE|FOB|ar, ironic deposi|
-5027|62|3|2|39|37520.34|0.06|0.01|N|O|1997-09-09|1997-11-13|1997-09-21|TAKE BACK RETURN|FOB|ess requests! quickly regular pac|
-5027|126|5|3|32|32835.84|0.00|0.01|N|O|1997-11-13|1997-10-29|1997-11-18|TAKE BACK RETURN|RAIL|cording to|
-5027|26|7|4|37|34262.74|0.02|0.00|N|O|1997-10-05|1997-10-30|1997-10-26|NONE|REG AIR|ost slyly fluffily|
-5027|143|4|5|3|3129.42|0.03|0.06|N|O|1997-09-30|1997-11-26|1997-10-05|DELIVER IN PERSON|AIR|t the even mu|
-5027|87|8|6|25|24677.00|0.06|0.00|N|O|1997-09-16|1997-11-25|1997-10-08|TAKE BACK RETURN|RAIL|ic ideas. requests sleep fluffily am|
-5027|81|2|7|50|49054.00|0.07|0.02|N|O|1997-09-18|1997-11-07|1997-10-05|DELIVER IN PERSON|MAIL| beans dazzle according to the fluffi|
-5028|14|1|1|15|13710.15|0.07|0.07|R|F|1992-07-17|1992-07-16|1992-08-05|COLLECT COD|REG AIR|es are quickly final pains. furiously pend|
-5028|199|10|2|15|16487.85|0.03|0.07|R|F|1992-08-02|1992-07-09|1992-08-30|NONE|REG AIR|gular, bold pinto bea|
-5029|154|5|1|17|17920.55|0.02|0.01|A|F|1993-03-12|1992-12-18|1993-04-02|DELIVER IN PERSON|FOB|! packages boost blithely. furious|
-5029|97|9|2|2|1994.18|0.00|0.04|A|F|1992-11-25|1993-01-04|1992-12-20|DELIVER IN PERSON|MAIL|packages. furiously ironi|
-5030|102|3|1|22|22046.20|0.04|0.06|N|O|1998-09-01|1998-08-15|1998-09-30|TAKE BACK RETURN|TRUCK|. quickly regular foxes believe|
-5030|80|9|2|50|49004.00|0.05|0.06|N|O|1998-08-22|1998-07-25|1998-09-18|TAKE BACK RETURN|FOB|ss excuses serve bli|
-5031|50|1|1|15|14250.75|0.02|0.05|R|F|1995-04-01|1995-02-24|1995-04-12|DELIVER IN PERSON|AIR|yly pending theodolites.|
-5031|161|6|2|40|42446.40|0.10|0.04|A|F|1994-12-04|1995-01-27|1995-01-01|NONE|TRUCK|ns hang blithely across th|
-5031|154|6|3|4|4216.60|0.01|0.07|R|F|1994-12-26|1995-02-24|1995-01-11|NONE|RAIL|after the even frays: ironic, unusual th|
-5031|181|2|4|31|33516.58|0.10|0.08|R|F|1995-01-15|1995-01-08|1995-02-09|COLLECT COD|MAIL|ts across the even requests doze furiously|
-5056|48|7|1|7|6636.28|0.09|0.01|N|O|1997-04-28|1997-04-07|1997-05-15|DELIVER IN PERSON|TRUCK|rouches after the pending instruc|
-5056|197|1|2|19|20846.61|0.04|0.00|N|O|1997-03-24|1997-05-05|1997-04-23|DELIVER IN PERSON|AIR|c theodolites. ironic a|
-5056|90|1|3|23|22772.07|0.02|0.05|N|O|1997-05-12|1997-04-28|1997-05-25|NONE|SHIP|ickly regular requests cajole. depos|
-5056|87|8|4|14|13819.12|0.08|0.00|N|O|1997-06-09|1997-04-13|1997-07-06|COLLECT COD|SHIP|sts haggle carefully along the slyl|
-5057|37|3|1|38|35607.14|0.02|0.03|N|O|1997-10-24|1997-09-07|1997-10-30|TAKE BACK RETURN|MAIL|packages. stealthily bold wa|
-5057|8|1|2|45|40860.00|0.08|0.07|N|O|1997-09-20|1997-10-02|1997-10-20|NONE|FOB| asymptotes wake slyl|
-5058|193|5|1|16|17491.04|0.09|0.07|N|O|1998-07-12|1998-06-09|1998-07-15|DELIVER IN PERSON|SHIP| the special foxes |
-5059|70|5|1|5|4850.35|0.03|0.08|R|F|1993-12-23|1994-01-12|1993-12-24|TAKE BACK RETURN|FOB|ts affix slyly accordi|
-5059|123|2|2|19|19439.28|0.06|0.04|R|F|1994-03-02|1993-12-26|1994-03-14|TAKE BACK RETURN|MAIL| special ideas poach blithely qu|
-5059|77|7|3|45|43968.15|0.02|0.00|A|F|1994-01-28|1994-01-08|1994-02-18|DELIVER IN PERSON|MAIL|enly. requests doze. express, close pa|
-5060|25|8|1|27|24975.54|0.10|0.07|R|F|1992-07-23|1992-09-05|1992-08-07|COLLECT COD|SHIP|s. ironic |
-5060|32|8|2|28|26096.84|0.04|0.04|R|F|1992-09-25|1992-08-11|1992-10-09|NONE|REG AIR|c requests|
-5060|161|2|3|15|15917.40|0.06|0.01|A|F|1992-08-28|1992-08-20|1992-09-01|DELIVER IN PERSON|AIR|ular deposits sl|
-5061|165|2|1|18|19172.88|0.03|0.00|A|F|1993-10-20|1993-10-05|1993-10-28|TAKE BACK RETURN|SHIP|atelets among the ca|
-5061|198|1|2|8|8785.52|0.01|0.02|R|F|1993-09-07|1993-10-31|1993-10-04|DELIVER IN PERSON|REG AIR|regular foxes. ir|
-5061|24|5|3|26|24024.52|0.02|0.05|A|F|1993-11-07|1993-09-13|1993-11-13|NONE|REG AIR| cajole slyly. carefully spe|
-5062|101|4|1|9|9009.90|0.08|0.00|R|F|1993-01-02|1992-12-01|1993-01-20|TAKE BACK RETURN|MAIL| silent theodolites wake. c|
-5062|75|6|2|4|3900.28|0.02|0.02|R|F|1993-02-06|1992-12-14|1993-03-03|DELIVER IN PERSON|AIR|ke furiously express theodolites. |
-5062|159|10|3|50|52957.50|0.09|0.07|A|F|1992-12-25|1992-12-13|1992-12-29|TAKE BACK RETURN|MAIL| the regular, unusual pains. specia|
-5062|161|10|4|18|19100.88|0.03|0.07|R|F|1992-11-04|1992-12-25|1992-11-05|NONE|SHIP|furiously pending requests are ruthles|
-5062|194|8|5|25|27354.75|0.08|0.02|R|F|1992-12-15|1992-11-17|1993-01-01|NONE|TRUCK|uthless excuses ag|
-5063|129|10|1|31|31902.72|0.08|0.01|N|O|1997-06-02|1997-06-20|1997-06-27|NONE|RAIL|kages. ironic, ironic courts wake. carefu|
-5063|174|2|2|43|46189.31|0.04|0.08|N|O|1997-09-14|1997-07-05|1997-10-05|TAKE BACK RETURN|TRUCK|latelets might nod blithely regular requ|
-5063|167|4|3|2|2134.32|0.02|0.03|N|O|1997-06-17|1997-07-27|1997-06-24|COLLECT COD|SHIP|kly regular i|
-5063|135|6|4|18|18632.34|0.08|0.05|N|O|1997-06-02|1997-06-18|1997-06-06|TAKE BACK RETURN|RAIL|refully quiet reques|
-5063|161|8|5|1|1061.16|0.06|0.07|N|O|1997-09-03|1997-06-26|1997-10-03|NONE|FOB|ously special |
-5088|78|6|1|23|22495.61|0.06|0.06|R|F|1993-03-03|1993-03-07|1993-03-08|NONE|FOB|cording to the fluffily expr|
-5088|51|3|2|41|38993.05|0.09|0.00|R|F|1993-01-22|1993-03-07|1993-02-09|TAKE BACK RETURN|TRUCK|ing requests. |
-5088|86|7|3|36|35498.88|0.10|0.05|A|F|1993-04-16|1993-04-03|1993-05-14|NONE|TRUCK|the furiously final deposits. furiously re|
-5088|109|6|4|10|10091.00|0.04|0.05|R|F|1993-04-07|1993-02-06|1993-04-26|NONE|FOB|beans. special requests af|
-5089|158|6|1|4|4232.60|0.05|0.06|R|F|1992-09-18|1992-09-28|1992-10-13|DELIVER IN PERSON|TRUCK|nts sleep blithely |
-5089|162|3|2|20|21243.20|0.00|0.07|R|F|1992-10-10|1992-10-07|1992-11-06|COLLECT COD|RAIL| ironic accounts|
-5089|124|7|3|46|47109.52|0.03|0.04|A|F|1992-11-09|1992-10-13|1992-11-10|TAKE BACK RETURN|RAIL|above the express accounts. exc|
-5089|34|10|4|38|35493.14|0.05|0.03|R|F|1992-11-23|1992-09-11|1992-12-22|TAKE BACK RETURN|SHIP|regular instructions are|
-5090|22|3|1|22|20284.44|0.07|0.00|N|O|1997-05-10|1997-05-25|1997-05-24|TAKE BACK RETURN|TRUCK|ets integrate ironic, regul|
-5090|129|10|2|46|47339.52|0.05|0.00|N|O|1997-04-05|1997-04-14|1997-05-01|COLLECT COD|REG AIR|lose theodolites sleep blit|
-5090|2|9|3|22|19844.00|0.09|0.05|N|O|1997-07-03|1997-04-12|1997-07-26|NONE|REG AIR|ular requests su|
-5090|114|8|4|2|2028.22|0.03|0.06|N|O|1997-04-07|1997-04-23|1997-05-01|TAKE BACK RETURN|AIR|tes. slowly iro|
-5090|48|9|5|21|19908.84|0.10|0.02|N|O|1997-03-29|1997-04-24|1997-04-25|TAKE BACK RETURN|FOB|ly express accounts. slyly even r|
-5090|80|9|6|30|29402.40|0.02|0.03|N|O|1997-05-04|1997-04-14|1997-05-30|COLLECT COD|MAIL|osits nag slyly. fluffily ex|
-5091|78|6|1|50|48903.50|0.05|0.03|N|O|1998-07-21|1998-06-22|1998-07-26|COLLECT COD|REG AIR|al dependencies. r|
-5092|164|1|1|30|31924.80|0.06|0.00|N|O|1995-12-27|1995-12-08|1996-01-09|DELIVER IN PERSON|MAIL|ss, ironic deposits. furiously stea|
-5092|45|4|2|34|32131.36|0.04|0.02|N|O|1995-12-09|1995-12-26|1995-12-21|TAKE BACK RETURN|AIR|ckages nag |
-5092|140|6|3|13|13521.82|0.06|0.01|N|O|1995-11-21|1996-01-05|1995-12-19|TAKE BACK RETURN|SHIP|es detect sly|
-5092|180|1|4|14|15122.52|0.04|0.00|N|O|1996-02-20|1995-11-30|1996-03-20|DELIVER IN PERSON|REG AIR| deposits cajole furiously against the sly|
-5092|186|7|5|42|45619.56|0.01|0.02|N|O|1995-11-06|1996-01-01|1995-12-06|DELIVER IN PERSON|AIR|s use along t|
-5092|178|6|6|11|11859.87|0.03|0.03|N|O|1995-12-02|1995-12-27|1995-12-11|COLLECT COD|MAIL|ly against the slyly silen|
-5092|159|10|7|50|52957.50|0.10|0.03|N|O|1995-11-30|1996-01-14|1995-12-19|NONE|REG AIR|r platelets maintain car|
-5093|168|9|1|40|42726.40|0.05|0.01|R|F|1993-09-16|1993-11-04|1993-10-05|TAKE BACK RETURN|REG AIR|ing pinto beans. quickly bold dependenci|
-5093|74|2|2|15|14611.05|0.01|0.04|A|F|1993-12-02|1993-11-18|1994-01-01|DELIVER IN PERSON|FOB|ly among the unusual foxe|
-5093|151|9|3|31|32585.65|0.00|0.02|R|F|1993-09-22|1993-11-14|1993-09-26|TAKE BACK RETURN|REG AIR| against the|
-5093|156|1|4|37|39077.55|0.04|0.00|A|F|1993-10-26|1993-12-02|1993-10-27|NONE|TRUCK|courts. qui|
-5093|115|2|5|30|30453.30|0.06|0.05|A|F|1993-11-22|1993-11-27|1993-12-14|DELIVER IN PERSON|TRUCK|ithely ironic sheaves use fluff|
-5093|121|6|6|31|31654.72|0.01|0.08|A|F|1993-12-17|1993-11-14|1994-01-02|NONE|SHIP|he final foxes. fluffily ironic |
-5094|143|10|1|19|19819.66|0.03|0.03|R|F|1993-03-31|1993-06-12|1993-04-04|NONE|AIR|ronic foxes. furi|
-5094|108|5|2|23|23186.30|0.05|0.07|R|F|1993-06-13|1993-05-19|1993-07-06|NONE|MAIL|st furiously above the fluffily care|
-5094|92|6|3|11|10912.99|0.04|0.08|A|F|1993-06-25|1993-06-24|1993-07-18|TAKE BACK RETURN|MAIL|s cajole quickly against the furiously ex|
-5094|79|10|4|21|20560.47|0.09|0.08|R|F|1993-07-26|1993-05-03|1993-08-16|NONE|MAIL| blithely furiously final re|
-5095|65|10|1|46|44392.76|0.07|0.01|A|F|1992-06-26|1992-06-25|1992-07-05|COLLECT COD|RAIL|egular instruction|
-5095|106|3|2|2|2012.20|0.07|0.08|A|F|1992-07-09|1992-05-25|1992-07-21|DELIVER IN PERSON|REG AIR|detect car|
-5095|123|8|3|28|28647.36|0.01|0.04|A|F|1992-06-20|1992-06-27|1992-06-22|DELIVER IN PERSON|AIR| into the final courts. ca|
-5095|178|7|4|42|45283.14|0.08|0.08|R|F|1992-05-23|1992-06-01|1992-06-18|COLLECT COD|TRUCK|ccounts. packages could have t|
-5095|166|7|5|9|9595.44|0.10|0.07|R|F|1992-08-14|1992-06-23|1992-08-16|TAKE BACK RETURN|REG AIR|bold theodolites wake about the expr|
-5095|97|8|6|15|14956.35|0.01|0.06|A|F|1992-07-11|1992-07-12|1992-08-09|COLLECT COD|AIR| to the packages wake sly|
-5095|169|10|7|40|42766.40|0.05|0.02|A|F|1992-07-11|1992-06-07|1992-07-26|DELIVER IN PERSON|MAIL|carefully unusual plat|
-5120|133|4|1|28|28927.64|0.06|0.03|N|O|1996-07-20|1996-08-31|1996-08-06|NONE|RAIL| across the silent requests. caref|
-5121|184|5|1|23|24936.14|0.06|0.01|A|F|1992-05-18|1992-06-20|1992-06-02|TAKE BACK RETURN|REG AIR|even courts are blithely ironically |
-5121|111|1|2|45|45499.95|0.08|0.04|A|F|1992-08-13|1992-07-27|1992-09-12|NONE|TRUCK|pecial accounts cajole ca|
-5121|97|10|3|27|26921.43|0.08|0.07|R|F|1992-06-17|1992-06-11|1992-06-19|NONE|MAIL|ly silent theodolit|
-5121|68|7|4|10|9680.60|0.04|0.05|R|F|1992-06-08|1992-07-10|1992-07-02|TAKE BACK RETURN|FOB|e quickly according |
-5121|89|10|5|46|45497.68|0.03|0.02|R|F|1992-05-27|1992-07-19|1992-05-28|TAKE BACK RETURN|FOB|use express foxes. slyly |
-5121|1|8|6|2|1802.00|0.04|0.07|R|F|1992-08-10|1992-06-28|1992-08-11|NONE|FOB| final, regular account|
-5122|183|4|1|28|30329.04|0.03|0.00|N|O|1996-04-20|1996-03-29|1996-04-29|DELIVER IN PERSON|FOB|g the busily ironic accounts boos|
-5122|82|3|2|43|42229.44|0.09|0.03|N|O|1996-05-31|1996-04-12|1996-06-13|NONE|MAIL|ut the carefully special foxes. idle,|
-5122|45|6|3|12|11340.48|0.07|0.03|N|O|1996-04-02|1996-04-27|1996-04-10|DELIVER IN PERSON|AIR|lar instructions |
-5123|26|7|1|13|12038.26|0.08|0.07|N|O|1998-05-17|1998-03-23|1998-06-02|COLLECT COD|MAIL|regular pearls|
-5124|55|7|1|43|41067.15|0.00|0.02|N|O|1997-07-10|1997-05-13|1997-07-31|COLLECT COD|AIR|onic package|
-5124|6|3|2|41|37146.00|0.02|0.06|N|O|1997-07-05|1997-06-29|1997-07-23|DELIVER IN PERSON|RAIL|wake across the|
-5124|125|6|3|44|45105.28|0.03|0.03|N|O|1997-07-13|1997-06-26|1997-08-01|DELIVER IN PERSON|RAIL|equests. carefully unusual d|
-5124|70|9|4|36|34922.52|0.10|0.07|N|O|1997-04-20|1997-07-03|1997-05-04|TAKE BACK RETURN|AIR|r deposits ab|
-5125|6|9|1|38|34428.00|0.09|0.05|N|O|1998-03-20|1998-04-14|1998-03-22|COLLECT COD|MAIL|ily even deposits w|
-5125|160|1|2|5|5300.80|0.08|0.06|N|O|1998-04-07|1998-04-14|1998-04-29|COLLECT COD|RAIL| thinly even pack|
-5126|24|3|1|33|30492.66|0.02|0.02|R|F|1993-02-04|1992-12-23|1993-02-14|NONE|RAIL|ipliers promise furiously whithout the |
-5126|101|6|2|43|43047.30|0.09|0.04|R|F|1993-01-07|1992-12-19|1993-01-16|COLLECT COD|MAIL|e silently. ironic, unusual accounts|
-5126|78|8|3|23|22495.61|0.08|0.01|R|F|1993-01-02|1993-01-02|1993-01-05|COLLECT COD|TRUCK|egular, blithe packages.|
-5127|19|3|1|33|30327.33|0.08|0.04|N|O|1997-03-25|1997-03-02|1997-04-04|NONE|SHIP| bold deposits use carefully a|
-5127|32|8|2|20|18640.60|0.01|0.03|N|O|1997-05-11|1997-02-26|1997-05-12|TAKE BACK RETURN|SHIP|dolites about the final platelets w|
-5152|105|2|1|9|9045.90|0.04|0.03|N|O|1997-04-11|1997-02-11|1997-04-18|COLLECT COD|AIR| cajole furiously alongside of the bo|
-5152|134|10|2|50|51706.50|0.04|0.04|N|O|1997-03-10|1997-02-04|1997-03-15|COLLECT COD|FOB| the final deposits. slyly ironic warth|
-5153|35|1|1|42|39271.26|0.03|0.01|N|O|1995-10-03|1995-11-09|1995-10-11|COLLECT COD|RAIL|re thinly. ironic|
-5153|53|5|2|14|13342.70|0.05|0.05|N|O|1995-11-29|1995-10-21|1995-12-08|TAKE BACK RETURN|TRUCK| slyly daring pinto beans lose blithely fi|
-5153|68|7|3|30|29041.80|0.09|0.01|N|O|1995-11-10|1995-11-14|1995-11-16|DELIVER IN PERSON|AIR|beans sleep bl|
-5153|173|2|4|32|34341.44|0.10|0.08|N|O|1995-12-05|1995-09-25|1996-01-03|DELIVER IN PERSON|MAIL|egular deposits. ironi|
-5153|112|2|5|36|36435.96|0.01|0.03|N|O|1995-12-15|1995-11-08|1995-12-30|COLLECT COD|TRUCK| ironic instru|
-5153|136|2|6|42|43517.46|0.00|0.03|N|O|1995-10-19|1995-11-23|1995-11-06|TAKE BACK RETURN|RAIL|ickly even deposi|
-5154|190|1|1|11|11992.09|0.02|0.05|N|O|1997-08-06|1997-06-30|1997-09-04|NONE|RAIL|luffily bold foxes. final|
-5154|144|5|2|15|15662.10|0.07|0.08|N|O|1997-06-23|1997-07-11|1997-07-11|NONE|AIR|even packages. packages use|
-5155|48|9|1|1|948.04|0.00|0.00|A|F|1994-07-03|1994-08-11|1994-07-29|COLLECT COD|FOB|oze slyly after the silent, regular idea|
-5155|188|9|2|5|5440.90|0.08|0.02|A|F|1994-06-30|1994-08-13|1994-07-15|TAKE BACK RETURN|AIR|ole blithely slyly ironic |
-5155|106|3|3|28|28170.80|0.05|0.02|R|F|1994-07-01|1994-07-19|1994-07-18|COLLECT COD|REG AIR|s cajole. accounts wake. thinly quiet pla|
-5155|79|7|4|39|38183.73|0.09|0.06|A|F|1994-08-25|1994-09-01|1994-09-18|COLLECT COD|TRUCK|l dolphins nag caref|
-5156|117|4|1|21|21359.31|0.06|0.03|N|O|1997-01-01|1997-01-30|1997-01-11|TAKE BACK RETURN|TRUCK|ts detect against the furiously reg|
-5156|148|1|2|36|37733.04|0.04|0.07|N|O|1997-02-12|1996-12-10|1997-03-13|TAKE BACK RETURN|REG AIR| slyly even orbi|
-5157|55|7|1|35|33426.75|0.06|0.08|N|O|1997-07-28|1997-09-30|1997-08-15|TAKE BACK RETURN|REG AIR|to the furiously sil|
-5157|138|9|2|18|18686.34|0.10|0.04|N|O|1997-09-06|1997-10-03|1997-09-19|COLLECT COD|MAIL|y bold deposits nag blithely. final reque|
-5157|167|8|3|15|16007.40|0.09|0.00|N|O|1997-07-27|1997-08-30|1997-08-08|DELIVER IN PERSON|RAIL|cajole. spec|
-5157|59|7|4|25|23976.25|0.00|0.03|N|O|1997-08-24|1997-09-23|1997-08-28|COLLECT COD|REG AIR| packages detect. even requests against th|
-5157|149|8|5|40|41965.60|0.09|0.06|N|O|1997-08-11|1997-08-28|1997-09-01|TAKE BACK RETURN|FOB|ial packages according to |
-5157|150|9|6|26|27303.90|0.10|0.01|N|O|1997-07-28|1997-08-22|1997-08-22|NONE|FOB|nto beans cajole car|
-5157|49|8|7|12|11388.48|0.10|0.08|N|O|1997-10-19|1997-08-07|1997-10-26|NONE|FOB|es. busily |
-5158|45|4|1|43|40636.72|0.10|0.04|N|O|1997-04-10|1997-03-06|1997-04-15|DELIVER IN PERSON|AIR|nusual platelets. slyly even foxes cajole |
-5158|85|6|2|18|17731.44|0.04|0.04|N|O|1997-04-30|1997-03-28|1997-05-12|COLLECT COD|REG AIR|hely regular pa|
-5158|142|9|3|41|42727.74|0.05|0.05|N|O|1997-02-25|1997-03-19|1997-03-03|COLLECT COD|AIR|deposits. quickly special |
-5158|131|7|4|49|50525.37|0.05|0.01|N|O|1997-04-10|1997-03-21|1997-04-30|NONE|REG AIR|r requests sleep q|
-5158|119|9|5|20|20382.20|0.01|0.04|N|O|1997-02-03|1997-02-20|1997-02-08|TAKE BACK RETURN|AIR|latelets use accordin|
-5158|88|9|6|39|38535.12|0.08|0.04|N|O|1997-05-15|1997-04-04|1997-06-02|DELIVER IN PERSON|FOB|lithely fina|
-5158|91|5|7|38|37661.42|0.10|0.05|N|O|1997-05-09|1997-03-03|1997-06-04|NONE|SHIP|uffily regular ac|
-5159|124|7|1|39|39940.68|0.06|0.07|N|O|1996-12-17|1996-12-08|1997-01-10|COLLECT COD|MAIL|re furiously after the pending dolphin|
-5159|17|1|2|46|42182.46|0.01|0.01|N|O|1996-12-15|1996-12-07|1996-12-30|DELIVER IN PERSON|SHIP|s kindle slyly carefully regular|
-5159|152|4|3|22|23147.30|0.01|0.02|N|O|1996-11-06|1996-11-04|1996-11-15|TAKE BACK RETURN|SHIP|he furiously sile|
-5159|52|3|4|5|4760.25|0.10|0.00|N|O|1996-11-25|1996-12-19|1996-12-25|TAKE BACK RETURN|FOB|nal deposits. pending, ironic ideas grow|
-5159|198|10|5|36|39534.84|0.06|0.01|N|O|1997-01-24|1996-11-07|1997-02-08|NONE|REG AIR|packages wake.|
-5184|153|8|1|33|34753.95|0.07|0.04|N|O|1998-08-17|1998-10-16|1998-08-24|TAKE BACK RETURN|AIR|posits. carefully express asympto|
-5184|16|6|2|47|43052.47|0.05|0.01|N|O|1998-11-02|1998-08-19|1998-11-07|COLLECT COD|TRUCK|se. carefully express pinto beans x|
-5184|88|9|3|39|38535.12|0.03|0.06|N|O|1998-10-27|1998-10-17|1998-11-19|DELIVER IN PERSON|FOB|es above the care|
-5184|176|7|4|26|27980.42|0.05|0.08|N|O|1998-11-11|1998-08-26|1998-12-01|TAKE BACK RETURN|TRUCK| packages are|
-5184|124|9|5|19|19458.28|0.06|0.03|N|O|1998-11-15|1998-10-12|1998-11-21|COLLECT COD|REG AIR|refully express platelets sleep carefull|
-5184|80|9|6|49|48023.92|0.02|0.00|N|O|1998-09-18|1998-08-28|1998-10-14|COLLECT COD|FOB|thlessly closely even reque|
-5185|197|1|1|37|40596.03|0.00|0.04|N|O|1997-08-08|1997-09-08|1997-08-14|COLLECT COD|SHIP|gainst the courts dazzle care|
-5185|25|8|2|32|29600.64|0.06|0.00|N|O|1997-08-17|1997-09-30|1997-08-24|TAKE BACK RETURN|REG AIR|ackages. slyly even requests|
-5185|196|9|3|41|44943.79|0.00|0.05|N|O|1997-10-15|1997-10-11|1997-11-02|COLLECT COD|REG AIR|ly blithe deposits. furi|
-5185|96|7|4|30|29882.70|0.09|0.04|N|O|1997-10-17|1997-09-16|1997-10-23|TAKE BACK RETURN|SHIP|ress packages are furiously|
-5185|128|9|5|8|8224.96|0.04|0.00|N|O|1997-08-30|1997-09-02|1997-09-22|COLLECT COD|REG AIR|sts around the slyly perma|
-5185|146|9|6|50|52307.00|0.03|0.04|N|O|1997-10-15|1997-10-19|1997-11-06|TAKE BACK RETURN|FOB|final platelets. ideas sleep careful|
-5186|55|10|1|38|36291.90|0.06|0.02|N|O|1996-11-23|1996-09-21|1996-12-11|DELIVER IN PERSON|MAIL|y ruthless foxes. fluffily |
-5186|91|2|2|31|30723.79|0.09|0.03|N|O|1996-10-19|1996-09-26|1996-10-25|TAKE BACK RETURN|REG AIR| accounts use furiously slyly spe|
-5186|89|10|3|26|25716.08|0.03|0.02|N|O|1996-08-08|1996-10-05|1996-08-21|DELIVER IN PERSON|FOB|capades. accounts sublate. pinto|
-5186|90|1|4|8|7920.72|0.10|0.05|N|O|1996-09-23|1996-09-29|1996-09-30|COLLECT COD|RAIL|y regular notornis k|
-5186|18|2|5|28|25704.28|0.09|0.03|N|O|1996-10-05|1996-10-27|1996-10-19|TAKE BACK RETURN|RAIL|al decoys. blit|
-5186|82|3|6|35|34372.80|0.00|0.05|N|O|1996-10-20|1996-10-12|1996-11-12|TAKE BACK RETURN|RAIL|sly silent pack|
-5186|198|10|7|44|48320.36|0.00|0.08|N|O|1996-09-23|1996-10-14|1996-10-01|NONE|TRUCK|old, final accounts cajole sl|
-5187|11|1|1|49|44639.49|0.04|0.06|N|O|1997-10-20|1997-10-12|1997-10-26|DELIVER IN PERSON|AIR|l, regular platelets instead of the foxes w|
-5187|83|4|2|1|983.08|0.10|0.08|N|O|1997-08-08|1997-08-24|1997-08-22|DELIVER IN PERSON|REG AIR|aggle never bold |
-5188|118|2|1|18|18325.98|0.04|0.03|N|O|1995-06-19|1995-05-19|1995-06-25|DELIVER IN PERSON|AIR|p according to the sometimes regu|
-5188|194|8|2|36|39390.84|0.04|0.02|A|F|1995-03-09|1995-05-16|1995-03-19|NONE|TRUCK|packages? blithely s|
-5188|148|1|3|9|9433.26|0.06|0.08|A|F|1995-05-09|1995-05-22|1995-05-19|TAKE BACK RETURN|REG AIR|r attainments are across the |
-5189|138|9|1|44|45677.72|0.02|0.06|A|F|1994-01-13|1994-02-07|1994-01-21|DELIVER IN PERSON|MAIL|y finally pendin|
-5189|16|3|2|38|34808.38|0.06|0.00|A|F|1994-03-26|1994-01-28|1994-04-20|DELIVER IN PERSON|REG AIR|ideas. idle, final deposits de|
-5189|110|5|3|4|4040.44|0.09|0.02|A|F|1993-12-21|1994-02-23|1994-01-09|DELIVER IN PERSON|REG AIR|. blithely exp|
-5189|94|7|4|49|48710.41|0.05|0.01|R|F|1994-01-22|1994-01-19|1994-02-04|TAKE BACK RETURN|SHIP| requests |
-5189|123|2|5|14|14323.68|0.02|0.03|A|F|1994-01-23|1994-01-05|1994-02-12|DELIVER IN PERSON|REG AIR|unusual packag|
-5189|17|8|6|41|37597.41|0.02|0.06|R|F|1993-12-12|1994-02-05|1994-01-09|DELIVER IN PERSON|RAIL|ial theodolites cajole slyly. slyly unus|
-5190|56|1|1|43|41110.15|0.09|0.06|A|F|1992-08-19|1992-06-10|1992-09-01|DELIVER IN PERSON|FOB|encies use fluffily unusual requests? hoc|
-5190|132|3|2|6|6192.78|0.10|0.08|A|F|1992-08-08|1992-07-14|1992-08-22|COLLECT COD|RAIL|furiously regular pinto beans. furiously i|
-5190|89|10|3|45|44508.60|0.04|0.03|A|F|1992-07-23|1992-06-16|1992-08-04|NONE|FOB|y carefully final ideas. f|
-5191|115|6|1|41|41619.51|0.00|0.08|A|F|1995-02-05|1995-02-27|1995-02-15|DELIVER IN PERSON|AIR|uests! ironic theodolites cajole care|
-5191|168|7|2|40|42726.40|0.02|0.01|A|F|1995-03-31|1995-02-21|1995-04-02|NONE|AIR|nes haggle sometimes. requests eng|
-5191|43|4|3|27|25462.08|0.07|0.05|A|F|1994-12-26|1995-01-24|1995-01-14|DELIVER IN PERSON|RAIL|tructions nag bravely within the re|
-5191|183|4|4|7|7582.26|0.01|0.04|A|F|1995-03-24|1995-01-30|1995-03-30|NONE|RAIL|eposits. express|
-5216|69|10|1|17|16474.02|0.04|0.06|N|O|1997-08-20|1997-11-07|1997-09-14|COLLECT COD|FOB|s according to the accounts bo|
-5217|80|1|1|50|49004.00|0.05|0.02|N|O|1995-12-26|1995-11-21|1996-01-24|DELIVER IN PERSON|MAIL|s. express, express accounts c|
-5217|16|7|2|23|21068.23|0.06|0.07|N|O|1996-01-18|1995-12-24|1996-02-10|COLLECT COD|RAIL|ven ideas. requests amo|
-5217|102|7|3|23|23048.30|0.03|0.02|N|O|1995-11-15|1995-12-17|1995-11-27|DELIVER IN PERSON|FOB|pending packages cajole ne|
-5217|81|2|4|47|46110.76|0.04|0.00|N|O|1995-11-24|1995-12-25|1995-11-25|COLLECT COD|AIR|ronic packages i|
-5218|83|4|1|43|42272.44|0.05|0.04|A|F|1992-08-04|1992-09-12|1992-08-17|DELIVER IN PERSON|SHIP|k theodolites. express, even id|
-5218|125|4|2|33|33828.96|0.06|0.01|R|F|1992-09-16|1992-09-30|1992-09-27|NONE|TRUCK|ronic instructi|
-5219|135|6|1|2|2070.26|0.08|0.00|N|O|1997-06-26|1997-04-29|1997-07-08|TAKE BACK RETURN|FOB| blithely according to the stea|
-5219|119|9|2|20|20382.20|0.05|0.00|N|O|1997-04-20|1997-05-26|1997-05-13|COLLECT COD|FOB|e along the ironic,|
-5220|83|4|1|27|26543.16|0.10|0.04|R|F|1992-09-21|1992-08-29|1992-10-16|DELIVER IN PERSON|RAIL|s cajole blithely furiously iron|
-5221|104|9|1|24|24098.40|0.07|0.03|N|O|1995-10-04|1995-08-11|1995-10-30|COLLECT COD|REG AIR|s pinto beans sleep. sly|
-5221|9|10|2|34|30906.00|0.01|0.05|N|O|1995-09-11|1995-07-17|1995-10-10|COLLECT COD|SHIP|eans. furio|
-5221|180|10|3|16|17282.88|0.04|0.01|N|O|1995-08-29|1995-09-06|1995-09-12|TAKE BACK RETURN|TRUCK|ending request|
-5222|151|3|1|1|1051.15|0.00|0.00|A|F|1994-08-19|1994-07-16|1994-09-08|TAKE BACK RETURN|FOB|idle requests. carefully pending pinto bean|
-5223|45|4|1|24|22680.96|0.00|0.00|A|F|1994-10-03|1994-09-20|1994-10-11|TAKE BACK RETURN|TRUCK|refully bold courts besides the regular,|
-5223|124|9|2|25|25603.00|0.09|0.02|R|F|1994-07-12|1994-08-13|1994-08-01|NONE|FOB|y express ideas impress|
-5223|6|3|3|19|17214.00|0.04|0.01|R|F|1994-10-28|1994-08-26|1994-10-31|COLLECT COD|REG AIR|ntly. furiously even excuses a|
-5223|130|9|4|40|41205.20|0.01|0.04|R|F|1994-10-01|1994-09-18|1994-10-28|COLLECT COD|SHIP|kly pending |
-5248|81|2|1|39|38262.12|0.05|0.03|N|O|1995-08-10|1995-07-04|1995-09-09|TAKE BACK RETURN|MAIL|yly even accounts. spe|
-5248|138|9|2|45|46715.85|0.00|0.06|A|F|1995-05-09|1995-07-12|1995-05-27|DELIVER IN PERSON|FOB|. bold, pending foxes h|
-5249|50|9|1|31|29451.55|0.07|0.03|A|F|1994-11-21|1994-11-19|1994-12-08|NONE|REG AIR|f the excuses. furiously fin|
-5249|31|7|2|44|40965.32|0.05|0.00|A|F|1994-12-28|1994-11-29|1994-12-29|TAKE BACK RETURN|MAIL|ole furiousl|
-5249|32|8|3|13|12116.39|0.09|0.00|R|F|1994-09-27|1994-10-20|1994-10-05|DELIVER IN PERSON|SHIP|ites. finally exp|
-5249|146|3|4|29|30338.06|0.00|0.05|A|F|1994-09-16|1994-11-03|1994-10-06|NONE|TRUCK| players. f|
-5249|158|6|5|12|12697.80|0.01|0.08|R|F|1994-12-28|1994-11-07|1995-01-15|COLLECT COD|MAIL|press depths could have to sleep carefu|
-5250|44|3|1|2|1888.08|0.08|0.04|N|O|1995-08-09|1995-10-10|1995-08-13|COLLECT COD|AIR|its. final pinto|
-5250|192|6|2|27|29489.13|0.10|0.05|N|O|1995-10-24|1995-09-03|1995-11-18|COLLECT COD|TRUCK|l forges are. furiously unusual pin|
-5251|139|10|1|36|37408.68|0.10|0.01|N|O|1995-07-16|1995-07-05|1995-07-28|DELIVER IN PERSON|FOB|slowly! bli|
-5252|141|10|1|13|13534.82|0.02|0.01|N|O|1996-03-02|1996-05-10|1996-03-11|NONE|FOB|boost fluffily across |
-5252|139|5|2|39|40526.07|0.06|0.05|N|O|1996-05-17|1996-04-23|1996-05-23|COLLECT COD|AIR|gular requests.|
-5252|195|9|3|9|9856.71|0.09|0.03|N|O|1996-05-30|1996-05-03|1996-06-26|TAKE BACK RETURN|RAIL|x. slyly special depos|
-5252|87|8|4|48|47379.84|0.01|0.06|N|O|1996-04-17|1996-03-19|1996-05-03|COLLECT COD|AIR|bold requests. furious|
-5252|68|5|5|24|23233.44|0.04|0.05|N|O|1996-05-11|1996-04-17|1996-05-12|COLLECT COD|REG AIR|posits after the fluffi|
-5252|3|10|6|41|37023.00|0.02|0.03|N|O|1996-03-16|1996-04-18|1996-03-17|NONE|TRUCK|ording to the blithely express somas sho|
-5253|31|2|1|35|32586.05|0.02|0.00|N|O|1995-07-23|1995-06-12|1995-08-03|DELIVER IN PERSON|AIR|ven deposits. careful|
-5253|150|7|2|38|39905.70|0.02|0.06|N|O|1995-08-03|1995-06-14|1995-08-27|DELIVER IN PERSON|REG AIR|onic dependencies are furiou|
-5253|14|5|3|9|8226.09|0.03|0.08|N|F|1995-06-08|1995-05-12|1995-06-23|DELIVER IN PERSON|REG AIR|lyly express deposits use furiou|
-5253|166|1|4|25|26654.00|0.04|0.03|A|F|1995-05-21|1995-06-13|1995-06-09|COLLECT COD|TRUCK|urts. even theodoli|
-5254|111|2|1|35|35388.85|0.01|0.07|A|F|1992-07-28|1992-09-05|1992-08-07|COLLECT COD|REG AIR|ntegrate carefully among the pending|
-5254|135|6|2|10|10351.30|0.05|0.04|A|F|1992-11-19|1992-10-20|1992-12-15|COLLECT COD|SHIP| accounts. silent deposit|
-5254|192|5|3|32|34950.08|0.00|0.08|A|F|1992-08-10|1992-09-21|1992-08-16|NONE|RAIL|ts impress closely furi|
-5254|163|2|4|45|47842.20|0.05|0.06|A|F|1992-11-11|1992-09-01|1992-12-07|COLLECT COD|REG AIR| wake. blithely silent excuse|
-5254|29|8|5|23|21367.46|0.02|0.06|A|F|1992-08-16|1992-09-05|1992-09-15|COLLECT COD|RAIL|lyly regular accounts. furiously pendin|
-5254|158|3|6|34|35977.10|0.09|0.02|R|F|1992-08-29|1992-10-16|1992-09-20|TAKE BACK RETURN|RAIL| furiously above the furiously |
-5254|20|7|7|9|8280.18|0.09|0.03|R|F|1992-07-29|1992-10-15|1992-08-20|TAKE BACK RETURN|REG AIR| wake blithely fluff|
-5255|131|7|1|2|2062.26|0.04|0.08|N|O|1996-09-27|1996-10-04|1996-10-04|DELIVER IN PERSON|RAIL|ajole blithely fluf|
-5255|172|10|2|30|32165.10|0.04|0.08|N|O|1996-09-20|1996-08-18|1996-10-09|TAKE BACK RETURN|AIR| to the silent requests cajole b|
-5255|130|3|3|41|42235.33|0.09|0.03|N|O|1996-08-21|1996-09-24|1996-09-05|COLLECT COD|FOB|tect blithely against t|
-5280|97|9|1|16|15953.44|0.02|0.03|N|O|1998-03-29|1998-01-28|1998-04-03|TAKE BACK RETURN|SHIP| foxes are furiously. theodoli|
-5280|176|5|2|46|49503.82|0.01|0.06|N|O|1998-01-04|1998-01-21|1998-02-03|TAKE BACK RETURN|FOB|efully carefully pen|
-5281|114|1|1|37|37522.07|0.05|0.02|N|O|1995-11-10|1996-01-31|1995-11-22|DELIVER IN PERSON|MAIL|ronic dependencies. fluffily final p|
-5281|105|2|2|38|38193.80|0.00|0.05|N|O|1996-02-17|1995-12-19|1996-02-29|NONE|RAIL|n asymptotes could wake about th|
-5281|127|2|3|23|23623.76|0.08|0.00|N|O|1995-12-30|1996-01-26|1996-01-23|COLLECT COD|REG AIR|. final theodolites cajole. ironic p|
-5281|87|8|4|48|47379.84|0.03|0.05|N|O|1996-01-31|1995-12-23|1996-02-08|TAKE BACK RETURN|REG AIR|ss the furiously |
-5281|43|10|5|33|31120.32|0.01|0.07|N|O|1996-03-01|1995-12-28|1996-03-05|COLLECT COD|RAIL|ly brave foxes. bold deposits above the |
-5282|118|2|1|36|36651.96|0.05|0.02|N|O|1998-05-20|1998-04-10|1998-06-14|DELIVER IN PERSON|TRUCK|re slyly accor|
-5282|52|10|2|32|30465.60|0.02|0.05|N|O|1998-03-01|1998-03-31|1998-03-03|NONE|FOB|onic deposits; furiou|
-5282|58|10|3|28|26825.40|0.03|0.06|N|O|1998-05-06|1998-04-24|1998-05-30|COLLECT COD|SHIP|fily final instruc|
-5283|5|2|1|20|18100.00|0.05|0.02|A|F|1994-09-16|1994-08-03|1994-10-15|TAKE BACK RETURN|TRUCK|al deposits? blithely even pinto beans|
-5283|186|7|2|1|1086.18|0.10|0.08|R|F|1994-06-20|1994-08-03|1994-07-01|COLLECT COD|FOB|deposits within the furio|
-5284|173|1|1|16|17170.72|0.04|0.02|N|O|1995-08-17|1995-08-23|1995-08-26|DELIVER IN PERSON|TRUCK|unts detect furiously even d|
-5284|44|7|2|24|22656.96|0.03|0.08|N|O|1995-10-21|1995-08-23|1995-10-27|COLLECT COD|AIR| haggle according |
-5285|193|5|1|31|33888.89|0.08|0.00|A|F|1994-04-17|1994-04-05|1994-05-09|NONE|RAIL|ubt. quickly blithe |
-5285|31|2|2|37|34448.11|0.09|0.02|R|F|1994-02-26|1994-02-18|1994-03-27|NONE|SHIP|uffily regu|
-5285|34|10|3|24|22416.72|0.02|0.04|A|F|1994-04-19|1994-04-03|1994-04-25|DELIVER IN PERSON|FOB|ess packages. quick, even deposits snooze b|
-5285|43|2|4|12|11316.48|0.05|0.06|A|F|1994-04-22|1994-04-07|1994-05-19|NONE|AIR| deposits-- quickly bold requests hag|
-5285|71|2|5|1|971.07|0.03|0.05|R|F|1994-03-14|1994-02-20|1994-04-10|COLLECT COD|TRUCK|e fluffily about the slyly special pa|
-5285|146|7|6|1|1046.14|0.06|0.01|R|F|1994-02-08|1994-04-02|1994-02-17|COLLECT COD|SHIP|ing deposits integra|
-5286|199|1|1|1|1099.19|0.01|0.07|N|O|1997-11-25|1997-11-07|1997-12-17|COLLECT COD|REG AIR|ly! furiously final pack|
-5286|97|1|2|7|6979.63|0.06|0.05|N|O|1997-10-23|1997-12-10|1997-11-20|TAKE BACK RETURN|RAIL|y express instructions sleep carefull|
-5286|16|10|3|3|2748.03|0.06|0.08|N|O|1997-12-04|1997-11-06|1997-12-09|COLLECT COD|MAIL|re fluffily|
-5286|40|6|4|6|5640.24|0.04|0.03|N|O|1997-10-15|1997-12-05|1997-11-12|COLLECT COD|RAIL|y special a|
-5286|186|7|5|38|41274.84|0.07|0.05|N|O|1997-11-29|1997-11-26|1997-12-15|TAKE BACK RETURN|SHIP|fluffily. special, ironic deposit|
-5286|138|9|6|24|24915.12|0.08|0.00|N|O|1997-09-27|1997-12-21|1997-09-30|COLLECT COD|TRUCK|s. express foxes of the|
-5287|39|10|1|32|30048.96|0.01|0.01|A|F|1994-01-29|1994-01-27|1994-02-08|NONE|RAIL|heodolites haggle caref|
-5312|61|6|1|27|25948.62|0.04|0.08|A|F|1995-04-20|1995-04-09|1995-04-25|COLLECT COD|SHIP|tructions cajol|
-5312|2|5|2|43|38786.00|0.05|0.08|A|F|1995-03-24|1995-05-07|1995-03-28|NONE|TRUCK|ly unusual|
-5313|17|1|1|34|31178.34|0.10|0.02|N|O|1997-08-07|1997-08-12|1997-08-24|DELIVER IN PERSON|FOB|ccording to the blithely final account|
-5313|13|10|2|17|15521.17|0.00|0.02|N|O|1997-09-02|1997-08-20|1997-09-07|NONE|SHIP|uests wake|
-5313|112|9|3|47|47569.17|0.06|0.08|N|O|1997-08-12|1997-08-18|1997-08-13|TAKE BACK RETURN|RAIL|pinto beans across the |
-5313|197|1|4|16|17555.04|0.08|0.00|N|O|1997-10-04|1997-08-02|1997-10-25|COLLECT COD|REG AIR|ckages wake carefully aga|
-5313|72|1|5|30|29162.10|0.06|0.08|N|O|1997-06-27|1997-07-18|1997-06-30|NONE|SHIP|nding packages use|
-5313|120|7|6|21|21422.52|0.05|0.05|N|O|1997-09-26|1997-09-02|1997-10-18|COLLECT COD|FOB|he blithely regular packages. quickly|
-5314|118|9|1|10|10181.10|0.07|0.05|N|O|1995-09-26|1995-07-24|1995-10-19|DELIVER IN PERSON|RAIL|latelets haggle final|
-5314|125|6|2|16|16401.92|0.00|0.04|N|O|1995-09-25|1995-07-08|1995-10-17|COLLECT COD|SHIP|hely unusual packages acc|
-5315|35|1|1|12|11220.36|0.08|0.06|R|F|1992-12-18|1993-01-16|1993-01-10|NONE|AIR|ccounts. furiously ironi|
-5315|179|10|2|39|42087.63|0.00|0.06|R|F|1992-11-09|1992-12-29|1992-12-07|NONE|SHIP|ly alongside of the ca|
-5316|108|1|1|29|29234.90|0.10|0.05|R|F|1994-03-28|1994-04-29|1994-04-09|DELIVER IN PERSON|REG AIR|ckly unusual foxes bo|
-5316|136|7|2|31|32120.03|0.00|0.08|A|F|1994-04-01|1994-04-21|1994-04-12|DELIVER IN PERSON|MAIL|s. deposits cajole around t|
-5317|82|3|1|29|28480.32|0.02|0.06|A|F|1994-11-28|1994-11-27|1994-12-16|COLLECT COD|FOB|oss the carefull|
-5317|171|2|2|18|19281.06|0.06|0.06|A|F|1995-01-02|1994-10-29|1995-01-16|NONE|RAIL|g to the blithely p|
-5317|120|4|3|37|37744.44|0.09|0.00|R|F|1994-09-15|1994-10-24|1994-09-23|NONE|TRUCK|totes nag theodolites. pend|
-5317|67|6|4|50|48353.00|0.09|0.01|A|F|1994-10-17|1994-10-25|1994-11-03|NONE|REG AIR|cajole furiously. accounts use quick|
-5317|95|8|5|19|18906.71|0.07|0.07|R|F|1994-12-15|1994-10-18|1994-12-27|NONE|MAIL|onic requests boost bli|
-5317|115|9|6|48|48725.28|0.01|0.03|A|F|1994-09-19|1994-11-25|1994-10-03|COLLECT COD|MAIL|ts about the packages cajole furio|
-5317|169|4|7|30|32074.80|0.07|0.07|A|F|1994-10-13|1994-10-31|1994-10-28|NONE|AIR|cross the attainments. slyly |
-5318|61|6|1|13|12493.78|0.10|0.04|R|F|1993-07-15|1993-06-25|1993-08-13|COLLECT COD|REG AIR|ly silent ideas. ideas haggle among the |
-5318|180|1|2|26|28084.68|0.00|0.04|R|F|1993-07-07|1993-05-23|1993-07-28|COLLECT COD|SHIP|al, express foxes. bold requests sleep alwa|
-5318|7|10|3|37|33559.00|0.07|0.05|A|F|1993-07-09|1993-06-22|1993-07-21|COLLECT COD|SHIP|ickly final deposi|
-5318|142|5|4|31|32306.34|0.01|0.04|R|F|1993-07-28|1993-05-06|1993-08-06|DELIVER IN PERSON|REG AIR|requests must sleep slyly quickly|
-5319|150|9|1|31|32554.65|0.04|0.07|N|O|1996-03-26|1996-03-07|1996-04-24|COLLECT COD|TRUCK|d carefully about the courts. fluffily spe|
-5319|44|3|2|39|36817.56|0.09|0.05|N|O|1996-05-17|1996-03-14|1996-06-11|NONE|TRUCK|unts. furiously silent|
-5344|19|3|1|6|5514.06|0.07|0.01|N|O|1998-08-04|1998-09-03|1998-08-11|TAKE BACK RETURN|REG AIR|ithely about the pending plate|
-5344|79|9|2|37|36225.59|0.03|0.07|N|O|1998-10-09|1998-07-26|1998-11-08|NONE|TRUCK|thely express packages|
-5344|67|8|3|26|25143.56|0.02|0.06|N|O|1998-08-27|1998-08-22|1998-09-24|NONE|AIR|furiously pending, silent multipliers.|
-5344|39|10|4|21|19719.63|0.03|0.01|N|O|1998-08-31|1998-09-06|1998-09-02|NONE|MAIL|xes. furiously even pinto beans sleep f|
-5345|83|4|1|3|2949.24|0.05|0.01|N|O|1997-12-10|1997-10-03|1998-01-05|COLLECT COD|SHIP|ites wake carefully unusual |
-5345|146|5|2|2|2092.28|0.10|0.02|N|O|1997-11-18|1997-10-12|1997-12-08|NONE|MAIL|ut the slyly specia|
-5345|192|5|3|46|50240.74|0.06|0.04|N|O|1997-10-06|1997-09-27|1997-10-18|COLLECT COD|REG AIR|slyly special deposits. fin|
-5345|114|4|4|37|37522.07|0.01|0.01|N|O|1997-11-01|1997-10-09|1997-11-26|DELIVER IN PERSON|AIR| along the ironically fina|
-5345|34|10|5|22|20548.66|0.02|0.02|N|O|1997-08-27|1997-11-22|1997-09-10|TAKE BACK RETURN|MAIL|leep slyly regular fox|
-5346|149|8|1|21|22031.94|0.07|0.08|R|F|1994-03-11|1994-03-07|1994-04-04|DELIVER IN PERSON|RAIL|integrate blithely a|
-5346|192|5|2|13|14198.47|0.04|0.04|A|F|1994-02-03|1994-02-05|1994-02-09|COLLECT COD|TRUCK|y. fluffily bold accounts grow. furio|
-5346|109|2|3|7|7063.70|0.08|0.05|A|F|1994-01-30|1994-03-26|1994-01-31|DELIVER IN PERSON|SHIP|equests use carefully care|
-5346|162|3|4|35|37175.60|0.06|0.02|A|F|1994-02-09|1994-03-01|1994-02-14|TAKE BACK RETURN|FOB|nic excuses cajole entic|
-5346|121|2|5|25|25528.00|0.05|0.06|R|F|1993-12-28|1994-03-19|1994-01-09|TAKE BACK RETURN|REG AIR|he ironic ideas are boldly slyly ironi|
-5346|33|9|6|6|5598.18|0.08|0.04|R|F|1994-03-01|1994-02-04|1994-03-09|NONE|REG AIR|escapades sleep furiously beside the |
-5346|80|9|7|41|40183.28|0.05|0.04|R|F|1994-01-10|1994-02-15|1994-01-26|TAKE BACK RETURN|REG AIR|fully close instructi|
-5347|83|4|1|48|47187.84|0.04|0.08|A|F|1995-02-25|1995-04-26|1995-03-26|NONE|SHIP|equests are slyly. blithely regu|
-5347|124|3|2|47|48133.64|0.02|0.01|N|F|1995-06-05|1995-03-29|1995-06-28|COLLECT COD|AIR|across the slyly bol|
-5347|23|2|3|34|31382.68|0.06|0.00|A|F|1995-05-18|1995-04-04|1995-06-02|DELIVER IN PERSON|SHIP| pending deposits. fluffily regular senti|
-5347|40|1|4|4|3760.16|0.06|0.03|A|F|1995-03-24|1995-04-03|1995-04-01|NONE|SHIP|ldly pending asymptotes ki|
-5347|131|2|5|21|21653.73|0.08|0.04|R|F|1995-04-01|1995-04-16|1995-04-23|NONE|SHIP|sly slyly final requests. careful|
-5347|56|1|6|6|5736.30|0.06|0.02|A|F|1995-04-11|1995-04-14|1995-05-02|NONE|TRUCK|lly unusual ideas. sl|
-5347|50|7|7|18|17100.90|0.01|0.01|N|F|1995-05-24|1995-05-07|1995-06-19|NONE|FOB|he ideas among the requests |
-5348|69|4|1|21|20350.26|0.10|0.04|N|O|1997-12-11|1997-12-24|1997-12-28|NONE|REG AIR| regular theodolites haggle car|
-5348|156|1|2|31|32740.65|0.07|0.02|N|O|1998-01-04|1997-12-09|1998-01-17|COLLECT COD|RAIL|are finally|
-5348|17|8|3|16|14672.16|0.06|0.08|N|O|1998-02-28|1997-12-25|1998-03-12|DELIVER IN PERSON|AIR|uriously thin pinto beans |
-5348|20|4|4|7|6440.14|0.04|0.00|N|O|1998-01-29|1997-12-20|1998-02-10|DELIVER IN PERSON|RAIL|even foxes. epitap|
-5348|2|5|5|37|33374.00|0.06|0.07|N|O|1997-12-01|1998-02-02|1997-12-07|NONE|FOB|y according to the carefully pending acco|
-5348|143|10|6|14|14603.96|0.06|0.05|N|O|1997-12-16|1998-01-12|1997-12-24|COLLECT COD|FOB|en pinto beans. somas cajo|
-5349|156|7|1|19|20066.85|0.06|0.01|N|O|1996-09-11|1996-11-18|1996-09-22|TAKE BACK RETURN|FOB|endencies use whithout the special |
-5349|168|3|2|14|14954.24|0.06|0.00|N|O|1996-11-07|1996-11-17|1996-11-20|TAKE BACK RETURN|TRUCK|fully regular |
-5349|4|5|3|6|5424.00|0.10|0.01|N|O|1996-12-30|1996-10-08|1997-01-01|DELIVER IN PERSON|MAIL|inal deposits affix carefully|
-5350|122|3|1|19|19420.28|0.02|0.06|R|F|1993-10-20|1993-11-15|1993-11-17|DELIVER IN PERSON|RAIL|romise slyly alongsi|
-5350|191|4|2|44|48012.36|0.04|0.06|R|F|1993-10-30|1993-11-23|1993-11-25|DELIVER IN PERSON|AIR|p above the ironic, pending dep|
-5350|54|9|3|12|11448.60|0.10|0.04|A|F|1994-01-30|1993-11-21|1994-02-15|COLLECT COD|REG AIR| cajole. even instructions haggle. blithe|
-5350|155|10|4|7|7386.05|0.08|0.00|R|F|1993-10-19|1993-12-28|1993-11-04|NONE|SHIP|alongside of th|
-5350|129|10|5|27|27786.24|0.07|0.04|A|F|1993-11-25|1993-12-27|1993-12-08|COLLECT COD|TRUCK|es. blithe theodolites haggl|
-5351|7|2|1|36|32652.00|0.06|0.05|N|O|1998-07-27|1998-07-06|1998-08-25|NONE|MAIL|ss the ironic, regular asymptotes cajole |
-5351|33|9|2|47|43852.41|0.04|0.01|N|O|1998-05-30|1998-08-08|1998-06-23|DELIVER IN PERSON|REG AIR|s. grouches cajole. sile|
-5351|106|3|3|2|2012.20|0.00|0.02|N|O|1998-05-12|1998-07-15|1998-05-24|NONE|TRUCK|g accounts wake furiously slyly even dolph|
-5376|61|6|1|42|40364.52|0.10|0.04|A|F|1994-09-20|1994-08-30|1994-09-29|TAKE BACK RETURN|REG AIR|y even asymptotes. courts are unusual pa|
-5376|91|4|2|44|43607.96|0.05|0.02|R|F|1994-08-30|1994-08-05|1994-09-07|COLLECT COD|AIR|ithe packages detect final theodolites. f|
-5376|65|6|3|18|17371.08|0.02|0.08|A|F|1994-10-29|1994-09-13|1994-11-01|COLLECT COD|MAIL| accounts boo|
-5377|79|8|1|40|39162.80|0.00|0.04|N|O|1997-05-21|1997-06-15|1997-05-26|DELIVER IN PERSON|AIR|lithely ironic theodolites are care|
-5377|30|3|2|17|15810.51|0.09|0.00|N|O|1997-07-05|1997-05-25|1997-07-22|COLLECT COD|RAIL|dencies. carefully regular re|
-5377|103|8|3|23|23071.30|0.07|0.08|N|O|1997-06-26|1997-07-13|1997-07-08|COLLECT COD|RAIL| silent wa|
-5377|104|7|4|12|12049.20|0.05|0.07|N|O|1997-05-08|1997-06-15|1997-05-15|DELIVER IN PERSON|MAIL| ironic, final|
-5377|173|3|5|27|28975.59|0.08|0.02|N|O|1997-07-11|1997-06-12|1997-08-08|TAKE BACK RETURN|MAIL|press theodolites. e|
-5378|155|3|1|39|41150.85|0.07|0.04|R|F|1992-11-25|1992-12-22|1992-12-02|COLLECT COD|AIR|ts are quickly around the|
-5378|62|9|2|46|44254.76|0.01|0.04|A|F|1993-02-17|1993-01-20|1993-02-26|COLLECT COD|REG AIR|into beans sleep. fu|
-5378|10|7|3|18|16380.18|0.02|0.03|R|F|1992-11-25|1992-12-21|1992-12-10|COLLECT COD|FOB|onic accounts was bold, |
-5379|199|1|1|40|43967.60|0.01|0.08|N|O|1995-10-01|1995-10-19|1995-10-30|COLLECT COD|MAIL|carefully final accounts haggle blithely. |
-5380|182|3|1|14|15150.52|0.10|0.01|N|O|1997-12-18|1997-12-03|1998-01-06|NONE|RAIL|final platelets.|
-5380|147|6|2|10|10471.40|0.09|0.05|N|O|1997-11-24|1998-01-10|1997-12-21|COLLECT COD|AIR|refully pending deposits. special, even t|
-5380|184|5|3|40|43367.20|0.02|0.08|N|O|1997-12-30|1997-11-27|1998-01-09|DELIVER IN PERSON|SHIP|ar asymptotes. blithely r|
-5380|66|3|4|6|5796.36|0.09|0.05|N|O|1997-11-15|1998-01-08|1997-12-11|COLLECT COD|MAIL|es. fluffily brave accounts across t|
-5380|107|8|5|48|48340.80|0.04|0.03|N|O|1997-12-01|1997-12-28|1997-12-05|DELIVER IN PERSON|FOB|encies haggle car|
-5381|188|9|1|37|40262.66|0.04|0.01|A|F|1993-04-08|1993-04-07|1993-04-12|DELIVER IN PERSON|SHIP|ly final deposits print carefully. unusua|
-5381|111|8|2|48|48533.28|0.04|0.03|R|F|1993-04-22|1993-04-17|1993-05-14|TAKE BACK RETURN|FOB|luffily spec|
-5381|192|3|3|13|14198.47|0.08|0.03|R|F|1993-05-09|1993-04-26|1993-05-25|NONE|FOB|s after the f|
-5381|168|3|4|17|18158.72|0.05|0.05|R|F|1993-05-25|1993-04-14|1993-06-17|NONE|MAIL|ckly final requests haggle qui|
-5381|63|8|5|49|47189.94|0.06|0.02|R|F|1993-05-08|1993-04-07|1993-06-03|NONE|FOB| accounts. regular, regula|
-5381|132|3|6|33|34060.29|0.10|0.00|A|F|1993-04-09|1993-04-03|1993-04-22|DELIVER IN PERSON|SHIP|ly special deposits |
-5381|44|3|7|31|29265.24|0.04|0.05|A|F|1993-04-10|1993-03-22|1993-04-13|TAKE BACK RETURN|MAIL|the carefully expre|
-5382|153|8|1|34|35807.10|0.03|0.03|R|F|1992-02-22|1992-02-18|1992-03-02|DELIVER IN PERSON|FOB|gular accounts. even accounts integrate|
-5382|55|3|2|13|12415.65|0.09|0.06|A|F|1992-01-16|1992-03-12|1992-02-06|NONE|MAIL|eodolites. final foxes |
-5382|149|10|3|3|3147.42|0.10|0.06|A|F|1992-03-22|1992-03-06|1992-04-19|TAKE BACK RETURN|AIR|efully unusua|
-5382|62|9|4|20|19241.20|0.08|0.02|A|F|1992-03-26|1992-02-17|1992-04-15|DELIVER IN PERSON|FOB|carefully regular accounts. slyly ev|
-5382|177|8|5|14|15080.38|0.02|0.02|A|F|1992-04-05|1992-04-05|1992-05-04|TAKE BACK RETURN|FOB| brave platelets. ev|
-5382|180|9|6|6|6481.08|0.02|0.01|A|F|1992-03-07|1992-04-02|1992-03-18|TAKE BACK RETURN|FOB|y final foxes by the sl|
-5382|105|2|7|48|48244.80|0.05|0.05|A|F|1992-02-14|1992-03-19|1992-02-25|DELIVER IN PERSON|REG AIR|nts integrate quickly ca|
-5383|96|7|1|12|11953.08|0.04|0.00|N|O|1995-07-02|1995-08-16|1995-08-01|TAKE BACK RETURN|AIR|y regular instructi|
-5408|102|7|1|2|2004.20|0.07|0.04|R|F|1992-08-21|1992-10-03|1992-08-28|DELIVER IN PERSON|MAIL|cross the dolphins h|
-5408|118|2|2|35|35633.85|0.04|0.05|R|F|1992-10-02|1992-10-17|1992-10-13|TAKE BACK RETURN|AIR|thely ironic requests alongside of the sl|
-5408|76|6|3|34|33186.38|0.10|0.02|A|F|1992-10-22|1992-08-25|1992-11-16|DELIVER IN PERSON|TRUCK|requests detect blithely a|
-5408|54|2|4|48|45794.40|0.04|0.05|R|F|1992-09-30|1992-08-27|1992-10-27|NONE|TRUCK|. furiously regular |
-5408|183|4|5|8|8665.44|0.03|0.07|A|F|1992-10-24|1992-09-06|1992-11-03|NONE|AIR|thely regular hocke|
-5409|194|8|1|27|29543.13|0.01|0.02|A|F|1992-02-14|1992-03-18|1992-02-23|DELIVER IN PERSON|AIR|eodolites |
-5409|104|5|2|38|38155.80|0.01|0.02|A|F|1992-03-17|1992-03-29|1992-04-13|NONE|REG AIR|onic, regular accounts! blithely even|
-5409|141|10|3|17|17699.38|0.07|0.00|A|F|1992-01-13|1992-04-05|1992-01-20|DELIVER IN PERSON|AIR|cross the sil|
-5409|1|8|4|9|8109.00|0.07|0.03|A|F|1992-02-15|1992-04-02|1992-02-28|DELIVER IN PERSON|AIR| unusual, unusual reques|
-5409|159|10|5|37|39188.55|0.06|0.04|R|F|1992-05-07|1992-02-10|1992-05-20|DELIVER IN PERSON|FOB|ously regular packages. packages|
-5409|64|3|6|14|13496.84|0.03|0.08|R|F|1992-02-14|1992-03-26|1992-02-29|DELIVER IN PERSON|AIR|osits cajole furiously|
-5410|117|8|1|48|48821.28|0.04|0.08|N|O|1998-09-27|1998-09-11|1998-10-01|TAKE BACK RETURN|AIR| about the slyly even courts. quickly regul|
-5410|105|8|2|41|41209.10|0.01|0.07|N|O|1998-08-25|1998-10-20|1998-09-01|DELIVER IN PERSON|REG AIR|sly. slyly ironic theodolites|
-5410|29|4|3|40|37160.80|0.07|0.08|N|O|1998-11-17|1998-10-02|1998-11-27|COLLECT COD|TRUCK|iously special accounts are along th|
-5410|50|7|4|8|7600.40|0.05|0.04|N|O|1998-09-12|1998-10-22|1998-09-22|DELIVER IN PERSON|TRUCK|ly. fluffily ironic platelets alon|
-5411|96|9|1|17|16933.53|0.05|0.01|N|O|1997-07-22|1997-07-14|1997-07-30|TAKE BACK RETURN|REG AIR| slyly slyly even deposits. carefully b|
-5411|113|7|2|10|10131.10|0.08|0.01|N|O|1997-07-19|1997-08-04|1997-07-26|TAKE BACK RETURN|MAIL|nding, special foxes unw|
-5411|56|7|3|5|4780.25|0.10|0.01|N|O|1997-09-12|1997-08-03|1997-09-23|DELIVER IN PERSON|FOB| bold, ironic theodo|
-5411|129|8|4|15|15436.80|0.08|0.05|N|O|1997-07-01|1997-07-15|1997-07-07|COLLECT COD|RAIL|attainments sleep slyly ironic|
-5411|4|5|5|19|17176.00|0.05|0.08|N|O|1997-05-25|1997-07-30|1997-06-19|COLLECT COD|RAIL|ial accounts according to the f|
-5412|54|9|1|2|1908.10|0.03|0.07|N|O|1998-04-14|1998-04-02|1998-04-19|TAKE BACK RETURN|REG AIR| sleep above the furiou|
-5412|66|1|2|48|46370.88|0.01|0.08|N|O|1998-02-22|1998-03-28|1998-03-18|TAKE BACK RETURN|TRUCK|s. slyly final packages cajole blithe|
-5412|74|2|3|31|30196.17|0.05|0.08|N|O|1998-03-23|1998-04-17|1998-04-10|NONE|SHIP|t the accounts detect slyly about the c|
-5412|97|10|4|26|25924.34|0.02|0.08|N|O|1998-01-22|1998-04-19|1998-02-17|NONE|AIR| the blithel|
-5413|126|7|1|48|49253.76|0.02|0.08|N|O|1998-01-25|1997-11-20|1998-02-22|COLLECT COD|SHIP| theodolites. furiously ironic instr|
-5413|142|9|2|37|38559.18|0.02|0.07|N|O|1997-12-08|1998-01-01|1997-12-13|COLLECT COD|TRUCK|usly bold instructions affix idly unusual, |
-5413|111|8|3|36|36399.96|0.02|0.07|N|O|1997-12-12|1997-11-28|1997-12-25|NONE|TRUCK|ular, regular ideas mold! final requests|
-5413|110|3|4|22|22222.42|0.02|0.08|N|O|1997-11-10|1997-11-24|1997-11-22|DELIVER IN PERSON|FOB|posits. quick|
-5413|189|10|5|5|5445.90|0.10|0.01|N|O|1997-11-28|1997-11-24|1997-12-05|NONE|RAIL|tes are al|
-5413|190|1|6|32|34886.08|0.02|0.03|N|O|1997-10-28|1998-01-03|1997-11-10|NONE|TRUCK|refully special package|
-5413|31|7|7|32|29792.96|0.06|0.07|N|O|1997-10-23|1997-12-09|1997-11-17|NONE|TRUCK|he quickly ironic ideas. slyly ironic ide|
-5414|68|9|1|40|38722.40|0.07|0.06|R|F|1993-04-07|1993-05-18|1993-04-23|COLLECT COD|AIR|ts are evenly across|
-5414|123|8|2|48|49109.76|0.06|0.07|R|F|1993-06-08|1993-05-14|1993-07-06|DELIVER IN PERSON|FOB| silent dolphins; fluffily regular tithe|
-5414|35|1|3|23|21505.69|0.10|0.00|A|F|1993-07-22|1993-05-26|1993-08-08|COLLECT COD|MAIL|e bold, express dolphins. spec|
-5414|133|4|4|15|15496.95|0.06|0.08|R|F|1993-05-18|1993-06-09|1993-05-27|DELIVER IN PERSON|REG AIR|e slyly about the carefully regula|
-5414|9|2|5|19|17271.00|0.01|0.05|R|F|1993-04-06|1993-05-12|1993-05-02|DELIVER IN PERSON|RAIL|ffily silent theodolites na|
-5414|98|1|6|28|27946.52|0.10|0.05|A|F|1993-03-27|1993-06-04|1993-04-07|TAKE BACK RETURN|SHIP|ts sleep sl|
-5415|102|5|1|44|44092.40|0.00|0.06|A|F|1992-08-19|1992-10-26|1992-09-17|TAKE BACK RETURN|TRUCK| requests. unusual theodolites sleep agains|
-5415|31|7|2|16|14896.48|0.08|0.00|A|F|1992-09-29|1992-09-12|1992-10-10|NONE|AIR|pinto beans haggle furiously|
-5415|102|7|3|6|6012.60|0.10|0.03|A|F|1992-10-28|1992-09-09|1992-11-20|COLLECT COD|RAIL|ges around the fur|
-5415|16|7|4|43|39388.43|0.01|0.02|R|F|1992-11-17|1992-09-14|1992-12-14|DELIVER IN PERSON|SHIP|yly blithely stealthy deposits. carefu|
-5415|161|6|5|11|11672.76|0.00|0.01|R|F|1992-11-22|1992-10-19|1992-12-10|DELIVER IN PERSON|SHIP|gle among t|
-5415|144|1|6|46|48030.44|0.03|0.03|R|F|1992-08-25|1992-09-10|1992-09-22|DELIVER IN PERSON|REG AIR|ve the fluffily |
-5415|153|4|7|11|11584.65|0.08|0.06|A|F|1992-08-21|1992-09-04|1992-08-23|NONE|TRUCK|unts maintain carefully unusual|
-5440|115|2|1|3|3045.33|0.02|0.08|N|O|1997-02-18|1997-02-28|1997-03-15|NONE|SHIP|y. accounts haggle along the blit|
-5441|164|1|1|3|3192.48|0.00|0.02|R|F|1994-08-12|1994-10-14|1994-09-01|TAKE BACK RETURN|REG AIR|are. unusual, |
-5441|131|2|2|49|50525.37|0.02|0.03|A|F|1994-09-23|1994-09-22|1994-10-22|NONE|FOB|ording to the furio|
-5441|144|3|3|33|34456.62|0.09|0.02|R|F|1994-10-09|1994-10-06|1994-10-30|DELIVER IN PERSON|TRUCK|ges. final instruction|
-5441|67|4|4|47|45451.82|0.07|0.08|R|F|1994-11-19|1994-10-16|1994-12-16|TAKE BACK RETURN|FOB|ounts wake slyly about the express instr|
-5442|42|5|1|16|15072.64|0.00|0.00|N|O|1998-04-12|1998-03-03|1998-05-04|TAKE BACK RETURN|RAIL|r packages. accounts haggle dependencies. f|
-5442|88|9|2|45|44463.60|0.08|0.01|N|O|1998-03-30|1998-02-24|1998-04-18|TAKE BACK RETURN|AIR|old slyly after |
-5442|61|8|3|12|11532.72|0.01|0.08|N|O|1998-04-15|1998-03-18|1998-05-05|DELIVER IN PERSON|TRUCK|fully final|
-5442|158|9|4|21|22221.15|0.07|0.06|N|O|1998-03-13|1998-02-19|1998-04-06|COLLECT COD|MAIL|ffily furiously ironic theodolites. furio|
-5442|16|7|5|25|22900.25|0.04|0.00|N|O|1998-03-29|1998-02-13|1998-04-13|TAKE BACK RETURN|REG AIR|ake furiously. slyly express th|
-5442|144|3|6|26|27147.64|0.08|0.07|N|O|1998-03-21|1998-03-21|1998-03-25|TAKE BACK RETURN|AIR|have to sleep furiously bold ideas. blith|
-5443|178|9|1|14|15094.38|0.02|0.00|N|O|1996-10-27|1996-11-11|1996-11-21|DELIVER IN PERSON|RAIL|s after the regular, regular deposits hag|
-5443|72|3|2|39|37910.73|0.03|0.07|N|O|1996-11-01|1996-11-30|1996-11-19|NONE|RAIL|gage carefully across the furiously|
-5443|160|5|3|25|26504.00|0.05|0.00|N|O|1996-12-07|1997-01-08|1997-01-05|NONE|FOB|use carefully above the pinto bea|
-5443|191|4|4|6|6547.14|0.05|0.02|N|O|1996-11-17|1996-12-03|1996-11-30|TAKE BACK RETURN|AIR|p fluffily foxe|
-5443|83|4|5|40|39323.20|0.03|0.03|N|O|1997-01-28|1996-12-10|1997-02-13|NONE|FOB|n courts. special re|
-5444|186|7|1|21|22809.78|0.01|0.07|A|F|1995-04-11|1995-04-25|1995-04-21|DELIVER IN PERSON|RAIL|ar packages haggle above th|
-5444|43|6|2|40|37721.60|0.05|0.08|N|O|1995-07-09|1995-04-25|1995-07-19|COLLECT COD|TRUCK|ously bold ideas. instructions wake slyl|
-5444|150|9|3|40|42006.00|0.08|0.01|A|F|1995-04-06|1995-05-08|1995-05-06|DELIVER IN PERSON|AIR| even packages.|
-5444|59|4|4|33|31648.65|0.05|0.04|N|O|1995-06-24|1995-04-24|1995-07-13|DELIVER IN PERSON|SHIP|ut the courts cajole blithely excuses|
-5444|171|9|5|21|22494.57|0.04|0.00|R|F|1995-05-05|1995-05-25|1995-05-29|TAKE BACK RETURN|REG AIR|aves serve sly|
-5444|20|7|6|21|19320.42|0.07|0.01|A|F|1995-03-30|1995-05-01|1995-03-31|COLLECT COD|AIR|furiously even theodolites.|
-5445|90|1|1|33|32672.97|0.08|0.07|A|F|1993-10-21|1993-10-14|1993-10-28|DELIVER IN PERSON|REG AIR|ests. final instructions|
-5445|131|2|2|12|12373.56|0.09|0.08|R|F|1993-11-02|1993-09-05|1993-11-26|COLLECT COD|FOB| slyly pending pinto beans was slyly al|
-5445|103|8|3|46|46142.60|0.04|0.07|A|F|1993-10-06|1993-09-15|1993-10-28|DELIVER IN PERSON|RAIL|old depend|
-5445|149|10|4|10|10491.40|0.08|0.06|A|F|1993-09-16|1993-10-05|1993-10-01|NONE|TRUCK|ncies abou|
-5445|13|10|5|14|12782.14|0.00|0.02|R|F|1993-11-19|1993-10-18|1993-12-07|NONE|RAIL| requests. bravely i|
-5446|190|1|1|27|29435.13|0.05|0.07|R|F|1994-07-21|1994-08-25|1994-08-17|TAKE BACK RETURN|RAIL|ously across the quic|
-5447|99|1|1|31|30971.79|0.09|0.03|N|O|1996-07-14|1996-05-07|1996-07-17|COLLECT COD|SHIP| foxes sleep. blithely unusual accounts det|
-5472|59|10|1|27|25894.35|0.09|0.06|A|F|1993-08-04|1993-07-07|1993-09-03|COLLECT COD|TRUCK|fily pending attainments. unus|
-5472|68|3|2|28|27105.68|0.00|0.03|A|F|1993-07-28|1993-05-28|1993-08-11|TAKE BACK RETURN|FOB|ffily pendin|
-5472|178|7|3|45|48517.65|0.06|0.02|R|F|1993-06-05|1993-05-14|1993-06-10|NONE|TRUCK| idle packages. furi|
-5472|184|5|4|37|40114.66|0.07|0.05|R|F|1993-06-15|1993-07-03|1993-07-09|DELIVER IN PERSON|RAIL|egrate carefully dependencies. |
-5472|75|6|5|40|39002.80|0.02|0.05|A|F|1993-04-13|1993-07-04|1993-05-04|NONE|REG AIR|e requests detect furiously. ruthlessly un|
-5472|167|2|6|39|41619.24|0.02|0.03|R|F|1993-04-18|1993-07-10|1993-05-12|TAKE BACK RETURN|MAIL|uriously carefully |
-5472|15|5|7|1|915.01|0.03|0.02|A|F|1993-04-14|1993-06-28|1993-04-16|NONE|RAIL|s use furiou|
-5473|48|5|1|9|8532.36|0.03|0.07|R|F|1992-06-03|1992-05-30|1992-06-09|TAKE BACK RETURN|AIR| excuses sleep blithely! regular dep|
-5473|70|1|2|27|26191.89|0.01|0.03|A|F|1992-04-06|1992-04-26|1992-04-29|TAKE BACK RETURN|MAIL|the deposits. warthogs wake fur|
-5473|15|5|3|33|30195.33|0.09|0.00|R|F|1992-05-18|1992-06-10|1992-06-13|TAKE BACK RETURN|MAIL|efully above the even, |
-5474|184|5|1|38|41198.84|0.01|0.08|A|F|1992-07-15|1992-07-16|1992-07-20|NONE|REG AIR| slyly beneath |
-5474|94|8|2|10|9940.90|0.06|0.00|R|F|1992-08-08|1992-08-10|1992-08-24|TAKE BACK RETURN|TRUCK|pinto bean|
-5474|48|1|3|31|29389.24|0.00|0.08|R|F|1992-08-02|1992-07-12|1992-08-04|NONE|TRUCK|the furiously express ideas. speci|
-5474|90|1|4|46|45544.14|0.03|0.04|A|F|1992-06-07|1992-07-11|1992-06-22|NONE|TRUCK|nstructions. furio|
-5475|183|4|1|10|10831.80|0.09|0.08|N|O|1996-07-19|1996-08-22|1996-07-23|COLLECT COD|AIR|ding to the deposits wake fina|
-5476|48|1|1|13|12324.52|0.01|0.04|N|O|1997-12-27|1997-12-08|1997-12-29|COLLECT COD|TRUCK|iously special ac|
-5476|20|4|2|17|15640.34|0.10|0.01|N|O|1998-02-02|1998-01-28|1998-02-14|COLLECT COD|FOB|ng dependencies until the f|
-5477|80|8|1|20|19601.60|0.03|0.01|N|O|1998-03-21|1998-02-09|1998-04-07|TAKE BACK RETURN|SHIP|platelets about the ironic|
-5477|77|7|2|21|20518.47|0.03|0.00|N|O|1998-01-28|1998-02-15|1998-02-24|TAKE BACK RETURN|SHIP|blate slyly. silent|
-5477|134|5|3|31|32058.03|0.04|0.01|N|O|1998-01-11|1998-01-30|1998-02-04|DELIVER IN PERSON|MAIL| special Tiresias cajole furiously. pending|
-5477|193|6|4|16|17491.04|0.00|0.01|N|O|1998-03-07|1998-03-12|1998-04-06|COLLECT COD|RAIL|regular, s|
-5477|96|9|5|23|22910.07|0.00|0.06|N|O|1998-01-04|1998-02-23|1998-01-24|NONE|REG AIR|telets wake blithely ab|
-5477|121|6|6|19|19401.28|0.10|0.03|N|O|1998-02-03|1998-01-30|1998-03-04|TAKE BACK RETURN|MAIL|ost carefully packages.|
-5478|8|9|1|39|35412.00|0.09|0.06|N|O|1996-08-19|1996-06-25|1996-09-08|DELIVER IN PERSON|SHIP|s. furiously |
-5478|2|5|2|47|42394.00|0.10|0.01|N|O|1996-08-15|1996-07-12|1996-08-31|NONE|RAIL| instructions; slyly even accounts hagg|
-5478|119|3|3|25|25477.75|0.09|0.07|N|O|1996-06-08|1996-07-12|1996-07-07|NONE|TRUCK|unusual, pending requests haggle accoun|
-5479|138|4|1|50|51906.50|0.02|0.02|A|F|1993-12-24|1994-02-14|1994-01-18|DELIVER IN PERSON|MAIL|ironic gifts. even dependencies sno|
-5479|104|5|2|19|19077.90|0.05|0.03|A|F|1994-01-22|1994-03-07|1994-02-11|DELIVER IN PERSON|SHIP|arefully bo|
-5504|68|5|1|4|3872.24|0.10|0.07|A|F|1993-04-30|1993-03-01|1993-05-22|DELIVER IN PERSON|AIR|into beans boost. |
-5504|177|8|2|7|7540.19|0.03|0.05|R|F|1993-04-25|1993-03-15|1993-05-06|NONE|TRUCK|packages detect furiously express reques|
-5504|160|2|3|29|30744.64|0.05|0.03|A|F|1993-01-28|1993-02-13|1993-02-27|NONE|SHIP|ajole carefully. care|
-5505|25|8|1|43|39775.86|0.07|0.01|N|O|1997-12-30|1997-11-28|1998-01-09|TAKE BACK RETURN|TRUCK|y alongside of the special requests.|
-5505|182|3|2|33|35711.94|0.05|0.08|N|O|1998-01-11|1997-11-11|1998-01-30|TAKE BACK RETURN|AIR|ithely unusual excuses integrat|
-5505|155|10|3|10|10551.50|0.06|0.01|N|O|1997-10-28|1997-11-27|1997-10-29|DELIVER IN PERSON|AIR| furiously special asym|
-5505|40|1|4|18|16920.72|0.04|0.04|N|O|1997-10-25|1997-12-12|1997-10-30|TAKE BACK RETURN|RAIL| to the quickly express pac|
-5505|162|9|5|46|48859.36|0.05|0.00|N|O|1998-01-06|1997-11-04|1998-02-04|TAKE BACK RETURN|SHIP|usly ironic dependencies haggle across |
-5506|140|1|1|2|2080.28|0.00|0.03|R|F|1994-02-04|1994-01-13|1994-02-17|COLLECT COD|MAIL|onic theodolites are fluffil|
-5506|160|1|2|6|6360.96|0.07|0.06|R|F|1994-02-21|1994-01-30|1994-02-27|DELIVER IN PERSON|MAIL|hely according to the furiously unusua|
-5507|10|5|1|23|20930.23|0.05|0.04|N|O|1998-09-04|1998-07-04|1998-09-18|TAKE BACK RETURN|AIR|ously slow packages poach whithout the|
-5507|138|9|2|48|49830.24|0.03|0.01|N|O|1998-08-03|1998-08-10|1998-08-24|DELIVER IN PERSON|AIR|yly idle deposits. final, final fox|
-5507|45|2|3|4|3780.16|0.04|0.06|N|O|1998-06-06|1998-07-02|1998-06-27|TAKE BACK RETURN|RAIL|into beans are|
-5507|67|6|4|22|21275.32|0.07|0.01|N|O|1998-07-08|1998-08-10|1998-07-22|DELIVER IN PERSON|TRUCK|gular ideas. carefully unu|
-5507|132|3|5|48|49542.24|0.06|0.01|N|O|1998-07-21|1998-07-15|1998-07-31|DELIVER IN PERSON|SHIP|uriously regular acc|
-5508|117|7|1|4|4068.44|0.10|0.04|N|O|1996-09-01|1996-08-02|1996-09-17|COLLECT COD|AIR|fluffily about the even |
-5509|197|10|1|3|3291.57|0.03|0.02|A|F|1994-06-14|1994-05-11|1994-06-17|NONE|SHIP| quickly fin|
-5509|99|3|2|17|16984.53|0.03|0.07|R|F|1994-07-01|1994-06-30|1994-07-31|COLLECT COD|AIR|ccounts wake ar|
-5509|93|7|3|30|29792.70|0.04|0.04|A|F|1994-07-23|1994-06-01|1994-08-08|NONE|AIR|counts haggle pinto beans. furiously |
-5509|100|3|4|45|45004.50|0.00|0.07|A|F|1994-07-24|1994-05-28|1994-08-20|COLLECT COD|AIR|counts sleep. f|
-5509|156|8|5|35|36965.25|0.04|0.03|A|F|1994-04-17|1994-06-29|1994-04-24|COLLECT COD|RAIL|c accounts. ca|
-5510|16|6|1|8|7328.08|0.01|0.01|A|F|1993-03-16|1993-03-29|1993-03-24|DELIVER IN PERSON|FOB|n packages boost sly|
-5510|20|10|2|46|42320.92|0.02|0.07|A|F|1993-03-12|1993-02-09|1993-03-19|NONE|TRUCK|silent packages cajole doggedly regular |
-5510|162|3|3|47|49921.52|0.03|0.01|A|F|1993-01-20|1993-03-25|1993-02-15|DELIVER IN PERSON|SHIP|riously even requests. slyly bold accou|
-5510|24|7|4|29|26796.58|0.09|0.08|A|F|1993-02-28|1993-03-28|1993-03-12|COLLECT COD|AIR|lithely fluffily ironic req|
-5511|165|4|1|16|17042.56|0.10|0.05|A|F|1995-02-02|1995-01-06|1995-02-19|TAKE BACK RETURN|RAIL|thely bold theodolites |
-5511|165|10|2|31|33019.96|0.09|0.01|A|F|1995-02-23|1995-01-21|1995-03-02|COLLECT COD|REG AIR|gular excuses. fluffily even pinto beans c|
-5511|128|3|3|49|50377.88|0.05|0.05|R|F|1994-12-21|1995-01-27|1994-12-26|NONE|REG AIR|bout the requests. theodolites |
-5511|122|7|4|4|4088.48|0.08|0.02|R|F|1994-12-28|1995-01-16|1995-01-24|TAKE BACK RETURN|RAIL|lphins. carefully blithe de|
-5511|9|2|5|23|20907.00|0.10|0.07|A|F|1995-03-11|1995-01-21|1995-03-27|TAKE BACK RETURN|TRUCK|ing dugouts |
-5511|188|9|6|5|5440.90|0.08|0.05|R|F|1994-12-29|1995-01-16|1995-01-24|DELIVER IN PERSON|MAIL|al theodolites. blithely final de|
-5511|143|2|7|23|23992.22|0.02|0.07|R|F|1995-02-03|1995-01-05|1995-02-18|COLLECT COD|REG AIR|ully deposits. warthogs hagg|
-5536|90|1|1|14|13861.26|0.08|0.06|N|O|1998-05-18|1998-05-08|1998-06-05|COLLECT COD|MAIL|instructions sleep |
-5536|62|1|2|20|19241.20|0.08|0.04|N|O|1998-05-08|1998-05-10|1998-05-31|DELIVER IN PERSON|REG AIR|equests mo|
-5536|197|9|3|35|38401.65|0.07|0.02|N|O|1998-05-19|1998-06-08|1998-06-05|NONE|MAIL|c, final theo|
-5536|9|10|4|30|27270.00|0.05|0.07|N|O|1998-04-15|1998-05-23|1998-05-03|NONE|FOB|arefully regular theodolites according|
-5536|141|2|5|11|11452.54|0.02|0.08|N|O|1998-03-18|1998-05-12|1998-03-28|TAKE BACK RETURN|FOB| snooze furio|
-5537|45|8|1|10|9450.40|0.05|0.08|N|O|1997-01-13|1996-12-25|1997-01-28|TAKE BACK RETURN|AIR| sleep carefully slyly bold depos|
-5537|150|9|2|15|15752.25|0.07|0.04|N|O|1997-01-13|1996-12-25|1997-01-27|COLLECT COD|AIR|eposits. permanently pending packag|
-5537|151|6|3|39|40994.85|0.03|0.00|N|O|1996-12-17|1996-11-08|1997-01-15|COLLECT COD|REG AIR| slyly bold packages are. qu|
-5537|97|1|4|38|37889.42|0.01|0.00|N|O|1996-11-06|1996-11-23|1996-11-12|TAKE BACK RETURN|MAIL|s above the carefully ironic deposits |
-5538|154|9|1|42|44274.30|0.05|0.00|A|F|1994-04-08|1994-03-17|1994-05-05|DELIVER IN PERSON|REG AIR|vely ironic accounts. furiously unusual acc|
-5538|121|2|2|4|4084.48|0.02|0.03|R|F|1994-03-21|1994-02-17|1994-04-11|TAKE BACK RETURN|REG AIR|ithely along the c|
-5538|19|3|3|38|34922.38|0.03|0.06|R|F|1994-03-17|1994-02-11|1994-04-10|TAKE BACK RETURN|FOB|ular pinto beans. silent ideas above |
-5538|78|6|4|9|8802.63|0.00|0.01|R|F|1993-12-26|1994-01-31|1994-01-03|TAKE BACK RETURN|REG AIR|encies across the blithely fina|
-5539|65|10|1|42|40532.52|0.10|0.08|A|F|1994-09-29|1994-09-17|1994-10-20|DELIVER IN PERSON|RAIL|ons across the carefully si|
-5540|181|2|1|42|45409.56|0.02|0.08|N|O|1996-11-12|1996-12-18|1996-12-05|TAKE BACK RETURN|RAIL|ss dolphins haggle |
-5540|102|3|2|2|2004.20|0.06|0.02|N|O|1996-12-12|1997-01-09|1996-12-25|DELIVER IN PERSON|MAIL|nic asymptotes could hav|
-5540|64|3|3|19|18317.14|0.01|0.03|N|O|1997-02-06|1996-11-18|1997-02-20|DELIVER IN PERSON|SHIP| slyly slyl|
-5540|72|10|4|24|23329.68|0.10|0.05|N|O|1997-01-09|1996-12-02|1997-01-23|COLLECT COD|FOB|deposits! ironic depths may engage-- b|
-5541|96|8|1|39|38847.51|0.08|0.05|N|O|1997-11-17|1997-12-27|1997-12-11|TAKE BACK RETURN|RAIL|ding theodolites haggle against the slyly |
-5542|189|10|1|6|6535.08|0.03|0.01|N|O|1996-06-14|1996-05-28|1996-07-11|DELIVER IN PERSON|TRUCK| foxes doubt. theodolites ca|
-5543|143|10|1|14|14603.96|0.02|0.03|R|F|1993-10-09|1993-12-09|1993-10-21|NONE|SHIP|ecial reque|
-5543|162|7|2|22|23367.52|0.04|0.00|A|F|1993-11-06|1993-11-02|1993-12-02|DELIVER IN PERSON|SHIP|instructions. deposits use quickly. ir|
-5543|67|6|3|3|2901.18|0.08|0.05|R|F|1993-11-18|1993-11-05|1993-12-17|NONE|FOB|ress, even |
-5543|147|10|4|8|8377.12|0.05|0.01|R|F|1993-10-28|1993-11-18|1993-11-07|NONE|SHIP|totes? iron|
-5543|80|1|5|32|31362.56|0.03|0.03|R|F|1993-10-04|1993-11-14|1993-11-03|DELIVER IN PERSON|AIR|ully around the |
-5543|184|5|6|1|1084.18|0.03|0.07|A|F|1993-10-29|1993-11-11|1993-11-23|TAKE BACK RETURN|FOB|uriously. slyly|
-5543|129|8|7|39|40135.68|0.06|0.00|R|F|1993-10-07|1993-11-15|1993-10-28|TAKE BACK RETURN|MAIL|l excuses are furiously. slyly unusual requ|
-5568|166|5|1|50|53308.00|0.05|0.05|N|O|1995-07-14|1995-09-04|1995-08-03|COLLECT COD|TRUCK|furious ide|
-5568|44|5|2|18|16992.72|0.01|0.08|N|O|1995-08-19|1995-08-18|1995-08-24|DELIVER IN PERSON|SHIP|structions haggle. carefully regular |
-5568|89|10|3|35|34617.80|0.08|0.07|N|O|1995-09-17|1995-09-04|1995-10-14|NONE|SHIP|lyly. blit|
-5569|29|4|1|25|23225.50|0.10|0.03|R|F|1993-06-29|1993-07-18|1993-07-05|TAKE BACK RETURN|TRUCK| deposits cajole above|
-5569|58|10|2|26|24909.30|0.09|0.06|A|F|1993-08-21|1993-07-22|1993-09-09|DELIVER IN PERSON|MAIL|pitaphs. ironic req|
-5569|55|3|3|48|45842.40|0.02|0.03|R|F|1993-06-16|1993-06-15|1993-07-09|COLLECT COD|SHIP|the fluffily|
-5569|147|10|4|19|19895.66|0.10|0.08|R|F|1993-07-30|1993-06-21|1993-08-13|TAKE BACK RETURN|FOB| detect ca|
-5569|59|1|5|15|14385.75|0.02|0.06|A|F|1993-06-29|1993-07-06|1993-07-05|DELIVER IN PERSON|MAIL|lithely bold requests boost fur|
-5570|161|6|1|37|39262.92|0.08|0.02|N|O|1996-08-29|1996-10-23|1996-09-11|NONE|RAIL|y ironic pin|
-5570|39|10|2|15|14085.45|0.09|0.02|N|O|1996-10-04|1996-10-05|1996-10-28|TAKE BACK RETURN|REG AIR|beans nag slyly special, regular pack|
-5570|60|1|3|29|27841.74|0.02|0.05|N|O|1996-10-12|1996-10-20|1996-11-08|TAKE BACK RETURN|SHIP|he silent, enticing requests.|
-5571|154|2|1|32|33732.80|0.05|0.01|R|F|1992-12-25|1993-03-01|1993-01-23|NONE|FOB| the blithely even packages nag q|
-5571|94|8|2|31|30816.79|0.09|0.07|R|F|1993-01-05|1993-01-18|1993-02-04|DELIVER IN PERSON|SHIP|uffily even accounts. quickly re|
-5571|92|6|3|18|17857.62|0.10|0.05|R|F|1993-03-11|1993-02-28|1993-04-03|COLLECT COD|REG AIR|uests haggle furiously pending d|
-5572|22|1|1|24|22128.48|0.08|0.08|R|F|1994-10-30|1994-10-02|1994-11-27|TAKE BACK RETURN|MAIL|ests cajole. evenly ironic exc|
-5572|172|10|2|27|28948.59|0.03|0.04|A|F|1994-08-29|1994-09-10|1994-08-30|TAKE BACK RETURN|SHIP| accounts. carefully final accoun|
-5572|87|8|3|19|18754.52|0.10|0.00|A|F|1994-08-12|1994-10-07|1994-09-01|DELIVER IN PERSON|RAIL|es. final, final requests wake blithely ag|
-5572|135|1|4|46|47615.98|0.02|0.01|R|F|1994-09-08|1994-10-14|1994-10-01|NONE|REG AIR|ully regular platelet|
-5572|24|3|5|34|31416.68|0.10|0.08|R|F|1994-10-22|1994-08-16|1994-11-08|NONE|TRUCK|asymptotes integrate. s|
-5572|101|2|6|14|14015.40|0.04|0.05|A|F|1994-11-02|1994-09-20|1994-11-03|COLLECT COD|RAIL|he fluffily express packages. fluffily fina|
-5572|26|1|7|24|22224.48|0.01|0.05|R|F|1994-09-26|1994-09-04|1994-10-22|DELIVER IN PERSON|FOB| beans. foxes sleep fluffily across th|
-5573|21|6|1|32|29472.64|0.05|0.07|N|O|1996-09-30|1996-10-25|1996-10-15|DELIVER IN PERSON|RAIL|egular depths haggl|
-5573|50|3|2|2|1900.10|0.01|0.07|N|O|1996-08-26|1996-09-29|1996-09-04|COLLECT COD|TRUCK| even foxes. specia|
-5573|11|8|3|46|41906.46|0.06|0.01|N|O|1996-11-04|1996-10-02|1996-11-15|DELIVER IN PERSON|MAIL|s haggle qu|
-5573|169|4|4|43|45973.88|0.10|0.03|N|O|1996-10-22|1996-11-03|1996-11-02|TAKE BACK RETURN|FOB| furiously pending packages against |
-5573|138|9|5|43|44639.59|0.05|0.04|N|O|1996-09-09|1996-09-24|1996-09-28|COLLECT COD|AIR| bold package|
-5574|185|6|1|46|49918.28|0.02|0.07|A|F|1992-06-20|1992-04-19|1992-07-11|NONE|FOB|arefully express requests wake furiousl|
-5574|33|4|2|21|19593.63|0.05|0.08|A|F|1992-03-22|1992-04-26|1992-04-16|TAKE BACK RETURN|TRUCK|fully final dugouts. express foxes nag |
-5574|119|6|3|27|27515.97|0.10|0.06|R|F|1992-05-08|1992-05-19|1992-06-05|TAKE BACK RETURN|REG AIR|ecial realms. furiously entici|
-5574|94|6|4|14|13917.26|0.09|0.01|R|F|1992-05-20|1992-04-09|1992-05-23|COLLECT COD|REG AIR| use slyly carefully special requests? slyl|
-5574|85|6|5|19|18716.52|0.05|0.03|A|F|1992-05-28|1992-04-24|1992-06-11|TAKE BACK RETURN|REG AIR|old deposits int|
-5575|58|10|1|7|6706.35|0.01|0.07|N|O|1995-10-01|1995-09-30|1995-10-06|NONE|FOB|s. slyly pending theodolites prin|
-5575|31|7|2|23|21413.69|0.04|0.02|N|O|1995-10-26|1995-10-09|1995-11-13|TAKE BACK RETURN|AIR|enticingly final requests. ironically|
-5575|63|8|3|16|15408.96|0.00|0.07|N|O|1995-08-17|1995-10-14|1995-08-30|NONE|RAIL|jole boldly beyond the final as|
-5575|110|1|4|7|7070.77|0.01|0.04|N|O|1995-10-15|1995-09-14|1995-10-18|DELIVER IN PERSON|RAIL|special requests. final, final |
-5600|187|8|1|34|36964.12|0.02|0.00|N|O|1997-03-22|1997-04-05|1997-04-09|TAKE BACK RETURN|MAIL|ly above the stealthy ideas. permane|
-5600|8|5|2|19|17252.00|0.00|0.01|N|O|1997-04-10|1997-03-24|1997-04-16|TAKE BACK RETURN|TRUCK|dencies. carefully p|
-5601|38|4|1|29|27202.87|0.09|0.04|A|F|1992-04-06|1992-02-24|1992-04-29|DELIVER IN PERSON|TRUCK| ironic ideas. final|
-5601|164|1|2|45|47887.20|0.10|0.07|A|F|1992-03-25|1992-04-03|1992-04-04|TAKE BACK RETURN|MAIL|ts-- blithely final accounts cajole. carefu|
-5601|73|4|3|38|36976.66|0.07|0.00|A|F|1992-01-08|1992-03-01|1992-01-09|TAKE BACK RETURN|REG AIR|ter the evenly final deposit|
-5601|148|5|4|12|12577.68|0.03|0.01|A|F|1992-02-27|1992-03-16|1992-03-27|COLLECT COD|TRUCK|ep carefully a|
-5602|176|4|1|9|9685.53|0.08|0.03|N|O|1997-10-14|1997-09-14|1997-11-11|COLLECT COD|FOB|lar foxes; quickly ironic ac|
-5602|62|7|2|31|29823.86|0.04|0.08|N|O|1997-09-04|1997-10-24|1997-09-07|NONE|TRUCK|rate fluffily regular platelets. blithel|
-5602|68|5|3|30|29041.80|0.04|0.00|N|O|1997-09-20|1997-10-25|1997-10-12|DELIVER IN PERSON|FOB|e slyly even packages. careful|
-5603|98|2|1|50|49904.50|0.03|0.02|A|F|1992-10-06|1992-08-20|1992-10-08|COLLECT COD|SHIP|final theodolites accor|
-5603|116|6|2|49|49789.39|0.06|0.05|A|F|1992-06-24|1992-07-28|1992-07-01|DELIVER IN PERSON|FOB|fully silent requests. carefully fin|
-5603|32|8|3|49|45669.47|0.00|0.02|R|F|1992-10-07|1992-07-21|1992-10-10|DELIVER IN PERSON|TRUCK|nic, pending dependencies print|
-5604|136|7|1|44|45589.72|0.05|0.01|N|O|1998-08-06|1998-07-08|1998-09-04|NONE|RAIL|efully ironi|
-5604|136|2|2|49|50770.37|0.10|0.00|N|O|1998-05-02|1998-07-07|1998-05-20|NONE|FOB|ove the regula|
-5604|78|8|3|10|9780.70|0.07|0.05|N|O|1998-08-03|1998-06-23|1998-08-04|COLLECT COD|SHIP|ly final realms wake blit|
-5605|87|8|1|50|49354.00|0.08|0.05|N|O|1996-08-26|1996-10-15|1996-09-04|TAKE BACK RETURN|RAIL|instructions sleep carefully ironic req|
-5605|151|2|2|7|7358.05|0.06|0.01|N|O|1996-12-13|1996-10-13|1996-12-15|TAKE BACK RETURN|FOB|lowly special courts nag among the furi|
-5605|173|2|3|3|3219.51|0.01|0.02|N|O|1996-09-01|1996-10-02|1996-09-20|TAKE BACK RETURN|AIR|posits. accounts boost. t|
-5605|55|3|4|45|42977.25|0.00|0.01|N|O|1996-09-05|1996-10-04|1996-09-13|COLLECT COD|FOB|ly unusual instructions. carefully ironic p|
-5605|70|7|5|39|37832.73|0.00|0.08|N|O|1996-12-13|1996-11-03|1996-12-24|DELIVER IN PERSON|REG AIR|cial deposits. theodolites w|
-5605|166|7|6|29|30918.64|0.08|0.08|N|O|1996-09-19|1996-10-22|1996-10-06|DELIVER IN PERSON|SHIP| quickly. quickly pending sen|
-5606|174|5|1|47|50485.99|0.10|0.04|N|O|1996-12-23|1997-01-31|1997-01-20|DELIVER IN PERSON|REG AIR|carefully final foxes. pending, final|
-5606|92|3|2|34|33731.06|0.09|0.06|N|O|1997-02-23|1997-02-08|1997-03-09|TAKE BACK RETURN|REG AIR|uses. slyly final |
-5606|127|8|3|46|47247.52|0.04|0.00|N|O|1997-03-11|1997-01-13|1997-03-23|DELIVER IN PERSON|REG AIR|ter the ironic accounts. even, ironic depos|
-5606|82|3|4|30|29462.40|0.08|0.04|N|O|1997-02-06|1997-01-26|1997-02-16|DELIVER IN PERSON|REG AIR| nag always. blithely express packages |
-5606|7|2|5|25|22675.00|0.06|0.00|N|O|1996-12-25|1997-01-12|1997-01-11|TAKE BACK RETURN|AIR|breach about the furiously bold |
-5606|154|5|6|3|3162.45|0.04|0.06|N|O|1997-01-11|1997-01-04|1997-02-08|COLLECT COD|AIR| sauternes. asympto|
-5606|74|5|7|46|44807.22|0.07|0.01|N|O|1997-02-01|1997-01-31|1997-02-15|DELIVER IN PERSON|TRUCK|ow requests wake around the regular accoun|
-5607|132|8|1|23|23738.99|0.02|0.06|R|F|1992-04-17|1992-02-12|1992-04-30|DELIVER IN PERSON|MAIL|the special, final patterns |
-5632|10|3|1|48|43680.48|0.06|0.06|N|O|1996-05-08|1996-03-24|1996-06-04|TAKE BACK RETURN|FOB|unts. decoys u|
-5632|106|7|2|21|21128.10|0.02|0.08|N|O|1996-03-22|1996-03-10|1996-04-10|NONE|AIR|refully regular pinto beans. ironic reques|
-5632|67|2|3|24|23209.44|0.04|0.06|N|O|1996-03-23|1996-04-02|1996-03-30|TAKE BACK RETURN|MAIL|beans detect. quickly final i|
-5633|160|2|1|28|29684.48|0.02|0.00|N|O|1998-08-14|1998-07-24|1998-08-26|TAKE BACK RETURN|SHIP|as boost quickly. unusual pinto |
-5633|102|3|2|10|10021.00|0.09|0.04|N|O|1998-07-15|1998-08-03|1998-08-03|COLLECT COD|AIR|its cajole fluffily fluffily special pinto|
-5633|46|7|3|27|25543.08|0.03|0.02|N|O|1998-09-28|1998-07-28|1998-10-12|DELIVER IN PERSON|AIR|ructions. even ideas haggle carefully r|
-5633|164|5|4|50|53208.00|0.02|0.05|N|O|1998-07-23|1998-07-09|1998-08-21|DELIVER IN PERSON|TRUCK|ts. slyly regular |
-5633|100|2|5|48|48004.80|0.01|0.05|N|O|1998-06-24|1998-07-22|1998-07-18|DELIVER IN PERSON|TRUCK|even courts haggle slyly at the requ|
-5633|107|2|6|1|1007.10|0.02|0.03|N|O|1998-09-29|1998-08-28|1998-10-19|NONE|RAIL|thely notornis: |
-5633|11|5|7|39|35529.39|0.02|0.08|N|O|1998-07-12|1998-07-03|1998-07-13|COLLECT COD|TRUCK|ding ideas cajole furiously after|
-5634|185|6|1|26|28214.68|0.10|0.08|N|O|1996-10-29|1996-09-15|1996-11-24|COLLECT COD|REG AIR|ptotes mold qu|
-5634|175|3|2|22|23653.74|0.02|0.05|N|O|1996-09-01|1996-08-31|1996-09-05|DELIVER IN PERSON|MAIL|silently unusual foxes above the blithely|
-5634|109|6|3|16|16145.60|0.08|0.02|N|O|1996-11-15|1996-09-14|1996-12-04|NONE|AIR|ess ideas are carefully pending, even re|
-5634|182|3|4|29|31383.22|0.00|0.01|N|O|1996-08-10|1996-10-29|1996-08-11|TAKE BACK RETURN|MAIL|ely final ideas. deposits sleep. reg|
-5634|1|2|5|1|901.00|0.04|0.02|N|O|1996-10-02|1996-10-21|1996-10-27|COLLECT COD|MAIL|ctions haggle carefully. carefully clo|
-5635|83|4|1|43|42272.44|0.03|0.00|R|F|1992-10-12|1992-09-29|1992-11-01|TAKE BACK RETURN|TRUCK|cross the d|
-5635|72|3|2|5|4860.35|0.05|0.08|R|F|1992-10-02|1992-11-05|1992-10-26|TAKE BACK RETURN|REG AIR|yly along the ironic, fi|
-5635|72|1|3|12|11664.84|0.09|0.02|A|F|1992-10-18|1992-09-24|1992-11-17|NONE|REG AIR|ke slyly against the carefully final req|
-5635|8|5|4|40|36320.00|0.03|0.01|A|F|1992-09-25|1992-11-05|1992-10-11|NONE|FOB|pending foxes. regular packages|
-5635|169|10|5|38|40628.08|0.05|0.06|A|F|1992-10-09|1992-09-25|1992-10-18|NONE|MAIL|ckly pendin|
-5635|162|9|6|23|24429.68|0.05|0.04|A|F|1992-08-24|1992-11-10|1992-09-21|NONE|AIR|ily pending packages. bold,|
-5635|137|3|7|32|33188.16|0.03|0.08|R|F|1992-11-24|1992-09-20|1992-12-17|TAKE BACK RETURN|TRUCK|slyly even|
-5636|70|9|1|18|17461.26|0.05|0.03|R|F|1995-05-14|1995-05-17|1995-06-12|DELIVER IN PERSON|REG AIR|slyly express requests. furiously pen|
-5636|70|5|2|26|25221.82|0.03|0.06|A|F|1995-03-05|1995-05-16|1995-03-23|TAKE BACK RETURN|AIR| furiously final pinto beans o|
-5636|90|1|3|21|20791.89|0.03|0.03|A|F|1995-03-13|1995-05-11|1995-03-24|COLLECT COD|AIR| are furiously unusual |
-5636|109|6|4|15|15136.50|0.03|0.04|R|F|1995-04-21|1995-04-30|1995-05-05|DELIVER IN PERSON|REG AIR|efully special|
-5636|47|4|5|13|12311.52|0.10|0.03|A|F|1995-05-11|1995-04-27|1995-05-26|COLLECT COD|AIR|en, fluffy accounts amon|
-5636|12|3|6|33|30096.33|0.06|0.04|A|F|1995-03-09|1995-04-05|1995-03-23|DELIVER IN PERSON|MAIL|ding to the |
-5636|134|10|7|24|24819.12|0.10|0.05|R|F|1995-04-12|1995-03-27|1995-04-16|DELIVER IN PERSON|RAIL|counts sleep furiously b|
-5637|47|4|1|14|13258.56|0.03|0.05|N|O|1996-07-20|1996-07-26|1996-08-14|COLLECT COD|MAIL|y bold deposits wak|
-5637|172|3|2|35|37525.95|0.09|0.08|N|O|1996-08-01|1996-08-04|1996-08-20|NONE|AIR|s sleep blithely alongside of the ironic|
-5637|96|10|3|22|21913.98|0.01|0.07|N|O|1996-08-28|1996-07-30|1996-09-17|COLLECT COD|REG AIR|nding requests are ca|
-5637|66|1|4|16|15456.96|0.03|0.03|N|O|1996-09-08|1996-08-31|1996-09-29|TAKE BACK RETURN|TRUCK|d packages. express requests|
-5637|196|7|5|10|10961.90|0.01|0.00|N|O|1996-08-25|1996-08-11|1996-09-23|TAKE BACK RETURN|MAIL|ickly ironic gifts. blithely even cour|
-5637|129|4|6|27|27786.24|0.01|0.05|N|O|1996-06-27|1996-08-09|1996-07-27|DELIVER IN PERSON|REG AIR|oss the carefully express warhorses|
-5638|138|9|1|45|46715.85|0.09|0.07|A|F|1994-05-17|1994-03-09|1994-06-15|NONE|TRUCK|ar foxes. fluffily pending accounts |
-5638|168|3|2|12|12817.92|0.02|0.05|A|F|1994-02-05|1994-04-01|1994-02-25|COLLECT COD|TRUCK|n, even requests. furiously ironic not|
-5638|162|9|3|21|22305.36|0.08|0.00|A|F|1994-03-13|1994-03-27|1994-03-17|DELIVER IN PERSON|TRUCK|press courts use f|
-5639|47|10|1|11|10417.44|0.09|0.02|R|F|1994-09-18|1994-07-10|1994-10-12|TAKE BACK RETURN|SHIP|g the unusual pinto beans caj|
-5664|122|1|1|25|25553.00|0.00|0.06|N|O|1998-10-29|1998-09-23|1998-11-25|COLLECT COD|FOB|eposits: furiously ironic grouch|
-5664|173|2|2|9|9658.53|0.07|0.05|N|O|1998-07-31|1998-08-26|1998-08-12|COLLECT COD|RAIL| ironic deposits haggle furiously. re|
-5664|53|4|3|31|29544.55|0.01|0.03|N|O|1998-11-10|1998-09-12|1998-12-07|TAKE BACK RETURN|FOB|ainst the never silent request|
-5664|138|9|4|33|34258.29|0.08|0.03|N|O|1998-08-29|1998-09-17|1998-09-25|DELIVER IN PERSON|RAIL|d the final |
-5664|112|2|5|44|44532.84|0.01|0.06|N|O|1998-09-24|1998-09-26|1998-10-23|NONE|TRUCK|ang thinly bold pa|
-5664|68|5|6|34|32914.04|0.09|0.01|N|O|1998-09-10|1998-10-05|1998-09-15|COLLECT COD|RAIL|st. fluffily pending foxes na|
-5664|182|3|7|9|9739.62|0.01|0.05|N|O|1998-11-04|1998-10-15|1998-11-20|TAKE BACK RETURN|REG AIR|yly. express ideas agai|
-5665|101|2|1|32|32035.20|0.00|0.02|A|F|1993-08-11|1993-08-01|1993-09-07|NONE|AIR|f the slyly even requests! regular request|
-5665|5|8|2|14|12670.00|0.02|0.00|R|F|1993-06-29|1993-09-16|1993-07-16|DELIVER IN PERSON|AIR|- special pinto beans sleep quickly blithel|
-5665|158|9|3|41|43384.15|0.09|0.02|A|F|1993-08-23|1993-09-22|1993-09-11|COLLECT COD|REG AIR| idle ideas across |
-5665|46|9|4|47|44463.88|0.01|0.01|A|F|1993-10-06|1993-09-19|1993-11-01|NONE|RAIL|s mold fluffily. final deposits along the|
-5666|122|5|1|7|7154.84|0.09|0.08|R|F|1994-05-10|1994-04-06|1994-05-21|NONE|FOB| ideas. regular packag|
-5666|36|7|2|14|13104.42|0.08|0.01|A|F|1994-02-27|1994-04-11|1994-03-06|DELIVER IN PERSON|TRUCK|lar deposits nag against the slyly final d|
-5666|193|6|3|39|42634.41|0.00|0.01|A|F|1994-05-13|1994-04-02|1994-06-12|DELIVER IN PERSON|TRUCK|the even, final foxes. quickly iron|
-5666|131|2|4|24|24747.12|0.07|0.01|R|F|1994-02-14|1994-03-09|1994-03-06|DELIVER IN PERSON|FOB|on the carefully pending asympto|
-5666|109|10|5|36|36327.60|0.07|0.07|R|F|1994-03-15|1994-03-16|1994-03-18|COLLECT COD|TRUCK|accounts. furiousl|
-5667|145|4|1|37|38670.18|0.09|0.06|N|O|1995-09-24|1995-09-17|1995-10-03|NONE|REG AIR|s cajole blit|
-5668|4|9|1|15|13560.00|0.03|0.04|A|F|1995-04-06|1995-05-12|1995-04-17|COLLECT COD|FOB| the express, pending requests. bo|
-5669|191|2|1|7|7638.33|0.06|0.06|N|O|1996-06-19|1996-07-07|1996-07-11|COLLECT COD|SHIP|yly regular requests lose blithely. careful|
-5669|156|8|2|2|2112.30|0.06|0.07|N|O|1996-08-04|1996-06-15|1996-08-20|NONE|SHIP| blithely excuses. slyly|
-5669|158|9|3|40|42326.00|0.00|0.02|N|O|1996-08-30|1996-06-15|1996-09-07|TAKE BACK RETURN|FOB|ar accounts alongside of the final, p|
-5669|90|1|4|31|30692.79|0.04|0.05|N|O|1996-08-05|1996-06-10|1996-08-29|COLLECT COD|AIR|to beans against the regular depo|
-5669|140|6|5|30|31204.20|0.07|0.01|N|O|1996-07-14|1996-07-28|1996-08-10|TAKE BACK RETURN|TRUCK|l accounts. care|
-5670|90|1|1|27|26732.43|0.10|0.06|R|F|1993-05-09|1993-05-30|1993-06-06|TAKE BACK RETURN|REG AIR| ideas promise bli|
-5670|186|7|2|43|46705.74|0.06|0.00|A|F|1993-07-09|1993-06-03|1993-07-14|DELIVER IN PERSON|FOB|ests in place of the carefully sly depos|
-5670|7|8|3|24|21768.00|0.09|0.04|A|F|1993-07-17|1993-07-01|1993-08-03|NONE|AIR|press, express requests haggle|
-5670|142|9|4|11|11463.54|0.06|0.06|R|F|1993-07-11|1993-06-26|1993-07-24|DELIVER IN PERSON|MAIL|etect furiously among the even pin|
-5671|120|7|1|25|25503.00|0.00|0.08|N|O|1998-04-17|1998-03-28|1998-05-06|DELIVER IN PERSON|AIR|cording to the quickly final requests-- |
-5671|129|8|2|46|47339.52|0.05|0.08|N|O|1998-03-28|1998-04-22|1998-04-19|TAKE BACK RETURN|MAIL|lar pinto beans detect care|
-5671|172|10|3|13|13938.21|0.10|0.06|N|O|1998-03-02|1998-04-03|1998-03-08|TAKE BACK RETURN|TRUCK|bold theodolites about|
-5671|111|1|4|42|42466.62|0.00|0.07|N|O|1998-02-17|1998-04-24|1998-03-17|TAKE BACK RETURN|SHIP|carefully slyly special deposit|
-5671|129|4|5|13|13378.56|0.09|0.00|N|O|1998-04-24|1998-03-26|1998-04-27|NONE|REG AIR|ers according to the ironic, unusual excu|
-5671|114|1|6|30|30423.30|0.09|0.07|N|O|1998-06-06|1998-04-15|1998-07-01|DELIVER IN PERSON|TRUCK|fily ironi|
-5696|137|3|1|28|29039.64|0.03|0.06|N|O|1995-07-03|1995-06-14|1995-07-27|COLLECT COD|REG AIR| the fluffily brave pearls |
-5696|59|1|2|46|44116.30|0.01|0.00|N|O|1995-08-10|1995-07-08|1995-08-25|COLLECT COD|AIR|ter the instruct|
-5696|167|2|3|42|44820.72|0.04|0.01|N|F|1995-06-06|1995-06-11|1995-06-19|TAKE BACK RETURN|SHIP|te furious|
-5696|98|10|4|20|19961.80|0.08|0.00|N|O|1995-06-25|1995-07-18|1995-07-16|NONE|TRUCK|silent, pending ideas sleep fluffil|
-5696|124|9|5|19|19458.28|0.07|0.05|N|O|1995-08-31|1995-06-13|1995-09-10|COLLECT COD|SHIP|unusual requests sleep furiously ru|
-5696|132|8|6|37|38188.81|0.04|0.05|N|O|1995-07-21|1995-06-23|1995-08-19|NONE|RAIL| carefully expres|
-5696|102|9|7|6|6012.60|0.07|0.05|N|O|1995-08-03|1995-07-15|1995-09-01|DELIVER IN PERSON|REG AIR|n patterns lose slyly fina|
-5697|55|7|1|24|22921.20|0.10|0.07|R|F|1992-10-27|1992-11-28|1992-11-20|NONE|RAIL|uffily iro|
-5697|16|10|2|43|39388.43|0.06|0.02|R|F|1992-12-08|1992-12-03|1992-12-17|TAKE BACK RETURN|FOB|blithely reg|
-5697|56|8|3|42|40154.10|0.03|0.01|A|F|1992-12-19|1992-12-08|1993-01-03|COLLECT COD|TRUCK|inal theodolites cajole after the bli|
-5698|11|8|1|30|27330.30|0.01|0.05|A|F|1994-05-26|1994-08-16|1994-06-19|COLLECT COD|AIR|its. quickly regular foxes aro|
-5698|163|4|2|25|26579.00|0.08|0.07|R|F|1994-08-06|1994-06-21|1994-08-25|NONE|SHIP| asymptotes sleep slyly above the|
-5698|155|3|3|45|47481.75|0.03|0.01|A|F|1994-06-23|1994-08-13|1994-07-02|NONE|FOB|ng excuses. slyly express asymptotes|
-5698|58|6|4|15|14370.75|0.07|0.08|R|F|1994-06-29|1994-07-03|1994-07-02|COLLECT COD|REG AIR|ly ironic frets haggle carefully |
-5698|140|1|5|37|38485.18|0.06|0.06|A|F|1994-06-30|1994-06-23|1994-07-22|TAKE BACK RETURN|SHIP|ts. even, ironic |
-5698|188|9|6|1|1088.18|0.06|0.04|R|F|1994-05-31|1994-07-10|1994-06-03|DELIVER IN PERSON|MAIL|nts. slyly quiet pinto beans nag carefu|
-5699|2|7|1|24|21648.00|0.01|0.07|A|F|1992-10-21|1992-09-04|1992-11-04|COLLECT COD|AIR|kages. fin|
-5699|55|10|2|26|24831.30|0.06|0.06|R|F|1992-08-11|1992-09-21|1992-08-14|COLLECT COD|MAIL|y final deposits wake fluffily u|
-5699|18|2|3|48|44064.48|0.10|0.05|R|F|1992-11-23|1992-10-20|1992-11-29|DELIVER IN PERSON|TRUCK|s. carefully regul|
-5699|55|3|4|46|43932.30|0.08|0.02|A|F|1992-11-28|1992-09-23|1992-12-27|TAKE BACK RETURN|FOB|o the slyly|
-5699|28|7|5|21|19488.42|0.02|0.02|A|F|1992-10-13|1992-09-30|1992-10-19|NONE|MAIL|lyly final pla|
-5699|191|5|6|30|32735.70|0.08|0.05|R|F|1992-11-13|1992-10-01|1992-12-11|DELIVER IN PERSON|AIR| the carefully final |
-5699|129|8|7|45|46310.40|0.09|0.06|A|F|1992-09-23|1992-10-22|1992-10-04|DELIVER IN PERSON|SHIP|rmanent packages sleep across the f|
-5700|168|5|1|24|25635.84|0.09|0.00|N|O|1997-12-26|1998-01-28|1998-01-18|DELIVER IN PERSON|REG AIR|ix carefully |
-5700|123|8|2|30|30693.60|0.00|0.06|N|O|1998-04-19|1998-03-13|1998-04-27|COLLECT COD|MAIL|ly blithely final instructions. fl|
-5700|126|5|3|23|23600.76|0.03|0.05|N|O|1998-01-30|1998-01-31|1998-01-31|NONE|REG AIR| wake quickly carefully fluffy hockey|
-5701|54|2|1|17|16218.85|0.02|0.05|N|O|1997-03-27|1997-04-08|1997-04-21|DELIVER IN PERSON|RAIL|tes. quickly final a|
-5702|77|7|1|44|42991.08|0.06|0.02|R|F|1994-01-04|1993-11-25|1994-01-22|NONE|RAIL|lites. carefully final requests doze b|
-5702|86|7|2|37|36484.96|0.10|0.05|R|F|1993-12-14|1993-10-21|1994-01-08|NONE|FOB|ix slyly. regular instructions slee|
-5702|131|7|3|44|45369.72|0.00|0.02|R|F|1993-11-28|1993-12-02|1993-12-22|NONE|TRUCK|ake according to th|
-5702|63|8|4|31|29854.86|0.00|0.04|A|F|1994-01-04|1993-10-22|1994-01-26|DELIVER IN PERSON|TRUCK|pinto beans. blithely |
-5703|88|9|1|2|1976.16|0.09|0.01|R|F|1993-05-29|1993-07-26|1993-06-05|TAKE BACK RETURN|REG AIR|nts against the blithely sile|
-5728|44|1|1|47|44369.88|0.10|0.05|A|F|1994-12-13|1995-01-25|1994-12-25|TAKE BACK RETURN|MAIL|nd the bravely final deposits. final ideas|
-5728|159|1|2|40|42366.00|0.05|0.08|A|F|1995-03-28|1995-01-17|1995-04-14|TAKE BACK RETURN|SHIP|final deposits. theodolite|
-5729|143|4|1|5|5215.70|0.07|0.00|R|F|1994-11-27|1994-11-11|1994-12-23|TAKE BACK RETURN|MAIL|s. even sheaves nag courts. |
-5729|107|10|2|39|39276.90|0.10|0.00|A|F|1995-01-22|1994-11-21|1995-02-13|TAKE BACK RETURN|MAIL|. special pl|
-5729|12|3|3|50|45600.50|0.00|0.05|R|F|1994-12-09|1994-12-31|1994-12-24|TAKE BACK RETURN|AIR|ly special sentiments. car|
-5730|151|2|1|2|2102.30|0.08|0.00|N|O|1998-02-24|1998-03-15|1998-03-11|COLLECT COD|SHIP|ely ironic foxes. carefu|
-5730|200|1|2|9|9901.80|0.10|0.01|N|O|1998-03-05|1998-02-02|1998-03-28|DELIVER IN PERSON|MAIL|s lose blithely. specia|
-5731|192|6|1|13|14198.47|0.02|0.04|N|O|1997-07-30|1997-06-23|1997-08-13|COLLECT COD|RAIL|ngside of the quickly regular depos|
-5731|105|6|2|11|11056.10|0.00|0.08|N|O|1997-06-06|1997-07-08|1997-06-25|NONE|MAIL| furiously final accounts wake. d|
-5731|111|2|3|6|6066.66|0.01|0.04|N|O|1997-07-02|1997-07-01|1997-07-08|COLLECT COD|SHIP|sits integrate slyly close platelets. quick|
-5731|14|1|4|6|5484.06|0.03|0.06|N|O|1997-09-07|1997-06-20|1997-09-20|TAKE BACK RETURN|RAIL|rs. quickly regular theo|
-5731|195|6|5|19|20808.61|0.08|0.02|N|O|1997-06-29|1997-06-27|1997-07-15|NONE|REG AIR|ly unusual ideas above the |
-5732|139|5|1|26|27017.38|0.02|0.07|N|O|1997-08-18|1997-10-25|1997-09-12|TAKE BACK RETURN|TRUCK|totes cajole according to the theodolites.|
-5733|33|4|1|39|36388.17|0.01|0.07|A|F|1993-03-22|1993-05-24|1993-04-04|DELIVER IN PERSON|FOB|side of the|
-5734|183|4|1|29|31412.22|0.05|0.01|N|O|1997-12-01|1997-12-08|1997-12-23|NONE|RAIL|structions cajole final, express |
-5734|150|3|2|6|6300.90|0.07|0.00|N|O|1997-10-27|1997-12-19|1997-11-02|COLLECT COD|RAIL|s. regular platelets cajole furiously. regu|
-5734|67|8|3|10|9670.60|0.01|0.03|N|O|1997-12-28|1997-12-24|1998-01-24|DELIVER IN PERSON|TRUCK|equests; accounts above|
-5735|60|1|1|41|39362.46|0.01|0.01|R|F|1994-12-23|1995-02-10|1995-01-22|COLLECT COD|MAIL|lthily ruthless i|
-5760|1|8|1|6|5406.00|0.09|0.03|R|F|1994-07-30|1994-07-31|1994-08-16|COLLECT COD|REG AIR|ng the acco|
-5760|6|1|2|24|21744.00|0.04|0.05|A|F|1994-07-15|1994-07-04|1994-08-08|NONE|MAIL|s. bravely ironic accounts among|
-5760|148|5|3|8|8385.12|0.07|0.04|A|F|1994-09-06|1994-08-03|1994-10-06|NONE|AIR|l accounts among the carefully even de|
-5760|123|4|4|19|19439.28|0.10|0.01|R|F|1994-08-02|1994-08-02|1994-08-15|COLLECT COD|SHIP|sits nag. even, regular ideas cajole b|
-5760|166|1|5|6|6396.96|0.03|0.07|R|F|1994-06-09|1994-07-06|1994-06-16|DELIVER IN PERSON|MAIL| shall have to cajole along the |
-5761|47|6|1|41|38828.64|0.08|0.00|N|O|1998-07-31|1998-08-09|1998-08-08|TAKE BACK RETURN|TRUCK|pecial deposits. qu|
-5761|108|9|2|36|36291.60|0.00|0.07|N|O|1998-09-07|1998-09-21|1998-09-11|TAKE BACK RETURN|TRUCK| pinto beans thrash alongside of the pendi|
-5761|198|2|3|49|53811.31|0.04|0.08|N|O|1998-07-14|1998-08-20|1998-07-25|NONE|SHIP|ly bold accounts wake above the|
-5762|175|6|1|6|6451.02|0.05|0.02|N|O|1997-04-07|1997-03-25|1997-05-02|NONE|AIR|ironic dependencies doze carefu|
-5762|102|9|2|27|27056.70|0.02|0.08|N|O|1997-02-21|1997-05-08|1997-03-23|NONE|REG AIR|across the bold ideas. carefully sp|
-5762|89|10|3|40|39563.20|0.00|0.08|N|O|1997-04-30|1997-05-09|1997-05-08|COLLECT COD|SHIP|al instructions. furiousl|
-5762|133|4|4|47|48557.11|0.05|0.06|N|O|1997-03-02|1997-03-23|1997-03-19|NONE|RAIL|equests sleep after the furiously ironic pa|
-5762|25|6|5|28|25900.56|0.02|0.06|N|O|1997-02-22|1997-03-25|1997-02-24|TAKE BACK RETURN|SHIP|ic foxes among the blithely qui|
-5762|12|6|6|12|10944.12|0.00|0.06|N|O|1997-04-18|1997-04-27|1997-05-11|DELIVER IN PERSON|REG AIR|ages are abo|
-5763|131|2|1|32|32996.16|0.02|0.06|N|O|1998-07-16|1998-09-13|1998-08-02|DELIVER IN PERSON|FOB|ding instruct|
-5763|136|2|2|23|23830.99|0.09|0.04|N|O|1998-07-25|1998-09-21|1998-08-15|DELIVER IN PERSON|SHIP|re after the blithel|
-5763|13|3|3|25|22825.25|0.01|0.02|N|O|1998-10-04|1998-08-16|1998-10-09|DELIVER IN PERSON|REG AIR|inal theodolites. even re|
-5763|121|6|4|47|47992.64|0.09|0.00|N|O|1998-08-22|1998-09-22|1998-09-04|NONE|REG AIR|gle slyly. slyly final re|
-5763|123|4|5|8|8184.96|0.06|0.05|N|O|1998-09-23|1998-09-15|1998-09-27|DELIVER IN PERSON|TRUCK|foxes wake slyly. car|
-5763|190|1|6|9|9811.71|0.08|0.02|N|O|1998-09-24|1998-09-01|1998-10-02|NONE|AIR| deposits. instru|
-5764|101|2|1|28|28030.80|0.04|0.04|A|F|1993-12-07|1993-12-20|1993-12-26|TAKE BACK RETURN|RAIL|sleep furi|
-5764|200|3|2|20|22004.00|0.10|0.05|A|F|1993-10-17|1993-12-24|1993-10-18|TAKE BACK RETURN|FOB|ng to the fluffily qu|
-5764|188|9|3|4|4352.72|0.03|0.05|A|F|1993-10-25|1993-12-23|1993-11-06|DELIVER IN PERSON|AIR|ily regular courts haggle|
-5765|162|7|1|31|32926.96|0.00|0.06|A|F|1995-01-11|1995-02-13|1995-01-23|TAKE BACK RETURN|AIR|r foxes. ev|
-5765|124|9|2|29|29699.48|0.07|0.08|A|F|1994-12-29|1995-02-01|1995-01-26|NONE|RAIL|nic requests. deposits wake quickly among |
-5765|139|10|3|31|32213.03|0.05|0.01|R|F|1995-03-01|1995-01-23|1995-03-31|TAKE BACK RETURN|REG AIR|the furiou|
-5765|152|4|4|46|48398.90|0.07|0.07|R|F|1995-03-13|1995-02-12|1995-03-20|DELIVER IN PERSON|MAIL|ccounts sleep about th|
-5765|174|3|5|48|51560.16|0.09|0.02|A|F|1995-03-30|1995-01-14|1995-04-09|DELIVER IN PERSON|SHIP|theodolites integrate furiously|
-5765|83|4|6|41|40306.28|0.04|0.00|A|F|1994-12-31|1995-02-11|1995-01-17|TAKE BACK RETURN|SHIP| furiously. slyly sile|
-5765|42|5|7|21|19782.84|0.05|0.04|R|F|1995-04-05|1995-02-12|1995-05-05|COLLECT COD|TRUCK|ole furiously. quick, special dependencies |
-5766|188|9|1|1|1088.18|0.10|0.01|R|F|1994-01-16|1993-11-16|1994-01-23|NONE|MAIL|blithely regular the|
-5766|149|8|2|39|40916.46|0.02|0.07|A|F|1993-10-24|1993-12-07|1993-11-08|DELIVER IN PERSON|SHIP| furiously unusual courts. slyly final pear|
-5766|118|8|3|4|4072.44|0.08|0.08|R|F|1993-11-10|1993-10-30|1993-12-01|COLLECT COD|TRUCK|ly even requests. furiou|
-5767|167|8|1|11|11738.76|0.08|0.01|A|F|1992-06-02|1992-05-30|1992-06-08|NONE|TRUCK|instructions. carefully final accou|
-5767|69|8|2|15|14535.90|0.07|0.05|R|F|1992-06-05|1992-07-28|1992-06-08|DELIVER IN PERSON|MAIL|warthogs. carefully unusual g|
-5767|191|3|3|42|45829.98|0.06|0.01|R|F|1992-07-31|1992-06-09|1992-08-09|COLLECT COD|TRUCK| blithe deposi|
-5767|153|4|4|34|35807.10|0.06|0.01|R|F|1992-06-02|1992-06-23|1992-06-17|NONE|FOB|sits among the|
-5767|46|7|5|36|34057.44|0.03|0.00|A|F|1992-07-17|1992-06-10|1992-07-19|COLLECT COD|AIR|ake carefully. packages |
-5792|178|8|1|34|36657.78|0.08|0.07|R|F|1993-05-23|1993-06-25|1993-06-12|NONE|RAIL|requests are against t|
-5792|157|5|2|47|49686.05|0.10|0.00|A|F|1993-06-08|1993-05-10|1993-06-26|COLLECT COD|AIR|regular, ironic excuses n|
-5792|183|4|3|32|34661.76|0.05|0.08|R|F|1993-06-26|1993-05-23|1993-07-07|COLLECT COD|RAIL|s are slyly against the ev|
-5792|14|8|4|14|12796.14|0.09|0.02|A|F|1993-07-28|1993-06-17|1993-08-27|DELIVER IN PERSON|RAIL|olites print carefully|
-5792|102|9|5|31|31065.10|0.02|0.01|A|F|1993-06-17|1993-05-05|1993-07-01|COLLECT COD|TRUCK|s? furiously even instructions |
-5793|53|5|1|20|19061.00|0.05|0.03|N|O|1997-10-05|1997-09-04|1997-10-30|COLLECT COD|AIR|e carefully ex|
-5793|170|5|2|41|43876.97|0.06|0.06|N|O|1997-08-04|1997-10-10|1997-08-12|DELIVER IN PERSON|TRUCK|snooze quick|
-5793|43|4|3|8|7544.32|0.07|0.03|N|O|1997-08-16|1997-09-08|1997-08-28|COLLECT COD|AIR|al foxes l|
-5793|148|7|4|48|50310.72|0.02|0.02|N|O|1997-09-27|1997-08-23|1997-10-27|DELIVER IN PERSON|REG AIR|quickly enticing excuses use slyly abov|
-5794|158|9|1|42|44442.30|0.06|0.05|R|F|1993-06-29|1993-05-30|1993-07-28|COLLECT COD|REG AIR|he careful|
-5794|115|2|2|14|14211.54|0.09|0.02|R|F|1993-04-19|1993-07-02|1993-05-18|COLLECT COD|SHIP|uriously carefully ironic reque|
-5794|7|8|3|15|13605.00|0.09|0.06|R|F|1993-06-25|1993-06-27|1993-07-09|NONE|MAIL|blithely regular ideas. final foxes haggle |
-5794|137|3|4|47|48745.11|0.00|0.08|A|F|1993-07-16|1993-06-21|1993-08-05|TAKE BACK RETURN|REG AIR|quests. blithely final excu|
-5795|193|6|1|34|37168.46|0.09|0.05|A|F|1992-08-21|1992-07-30|1992-08-27|COLLECT COD|REG AIR|al instructions must affix along the ironic|
-5796|58|3|1|27|25867.35|0.10|0.00|N|O|1996-04-06|1996-02-29|1996-04-20|DELIVER IN PERSON|RAIL|s wake quickly aro|
-5797|61|6|1|17|16338.02|0.09|0.03|N|O|1997-12-13|1998-01-12|1997-12-23|NONE|REG AIR|the ironic, even theodoli|
-5798|127|8|1|2|2054.24|0.09|0.00|N|O|1998-05-25|1998-06-22|1998-06-09|COLLECT COD|FOB|e furiously across |
-5798|124|9|2|14|14337.68|0.06|0.05|N|O|1998-04-01|1998-06-14|1998-04-27|NONE|RAIL|he special, bold packages. carefully iron|
-5798|134|5|3|22|22750.86|0.02|0.01|N|O|1998-06-24|1998-06-06|1998-07-20|COLLECT COD|TRUCK|sits poach carefully|
-5798|146|3|4|40|41845.60|0.08|0.06|N|O|1998-07-09|1998-06-24|1998-07-16|NONE|TRUCK| integrate carefu|
-5798|149|8|5|7|7343.98|0.06|0.07|N|O|1998-06-06|1998-05-10|1998-06-07|NONE|SHIP|ts against the blithely final p|
-5798|38|4|6|9|8442.27|0.06|0.02|N|O|1998-05-05|1998-05-25|1998-05-09|DELIVER IN PERSON|REG AIR|e blithely|
-5798|115|9|7|32|32483.52|0.08|0.01|N|O|1998-04-27|1998-05-03|1998-05-08|TAKE BACK RETURN|REG AIR|ubt blithely above the |
-5799|95|6|1|41|40798.69|0.04|0.02|N|O|1995-11-13|1995-10-31|1995-11-16|COLLECT COD|TRUCK|al accounts sleep ruthlessl|
-5799|100|3|2|30|30003.00|0.03|0.08|N|O|1995-09-12|1995-09-13|1995-09-19|NONE|RAIL| furiously s|
-5824|77|7|1|40|39082.80|0.06|0.06|N|O|1997-01-14|1997-01-17|1997-02-02|NONE|REG AIR|he final packag|
-5824|182|3|2|42|45451.56|0.09|0.00|N|O|1997-02-01|1997-02-20|1997-02-07|COLLECT COD|SHIP|ts sleep. carefully regular accounts h|
-5824|73|1|3|16|15569.12|0.03|0.02|N|O|1997-02-13|1997-01-07|1997-02-17|TAKE BACK RETURN|TRUCK|sly express Ti|
-5824|92|5|4|32|31746.88|0.03|0.02|N|O|1997-02-16|1997-01-24|1997-02-20|DELIVER IN PERSON|RAIL|ven requests. |
-5824|107|8|5|44|44312.40|0.08|0.03|N|O|1997-01-24|1997-01-31|1997-02-11|COLLECT COD|TRUCK|fily fluffily bold|
-5825|159|7|1|23|24360.45|0.10|0.05|R|F|1995-05-10|1995-04-28|1995-05-13|DELIVER IN PERSON|TRUCK| special pinto beans. dependencies haggl|
-5826|144|1|1|4|4176.56|0.03|0.06|N|O|1998-07-31|1998-09-10|1998-08-27|NONE|AIR| packages across the fluffily spec|
-5826|64|5|2|18|17353.08|0.04|0.01|N|O|1998-07-17|1998-09-03|1998-07-22|NONE|SHIP|atelets use above t|
-5827|187|8|1|30|32615.40|0.03|0.05|N|O|1998-11-11|1998-09-27|1998-11-30|DELIVER IN PERSON|RAIL|ounts may c|
-5827|103|6|2|23|23071.30|0.09|0.05|N|O|1998-11-16|1998-09-14|1998-11-17|COLLECT COD|RAIL|ans. furiously special instruct|
-5827|164|1|3|3|3192.48|0.03|0.06|N|O|1998-10-17|1998-09-29|1998-10-28|DELIVER IN PERSON|MAIL|uses eat along the furiously|
-5827|200|1|4|26|28605.20|0.06|0.00|N|O|1998-07-29|1998-09-24|1998-07-30|DELIVER IN PERSON|SHIP|arefully special packages wake thin|
-5827|112|9|5|38|38460.18|0.03|0.06|N|O|1998-10-18|1998-08-27|1998-10-23|TAKE BACK RETURN|TRUCK|ly ruthless accounts|
-5827|17|4|6|14|12838.14|0.05|0.01|N|O|1998-08-31|1998-09-06|1998-09-13|TAKE BACK RETURN|RAIL|rges. fluffily pending |
-5828|2|9|1|28|25256.00|0.10|0.03|A|F|1994-05-15|1994-05-20|1994-06-08|DELIVER IN PERSON|MAIL| special ideas haggle slyly ac|
-5828|158|3|2|37|39151.55|0.01|0.00|R|F|1994-06-07|1994-05-30|1994-06-17|NONE|RAIL|e carefully spec|
-5829|40|1|1|4|3760.16|0.01|0.02|N|O|1997-03-01|1997-02-17|1997-03-22|NONE|TRUCK|ithely; accounts cajole ideas. regular foxe|
-5829|107|10|2|40|40284.00|0.04|0.01|N|O|1997-04-21|1997-02-12|1997-05-04|COLLECT COD|TRUCK| the carefully ironic accounts. a|
-5829|129|8|3|6|6174.72|0.05|0.06|N|O|1997-01-22|1997-03-12|1997-02-02|TAKE BACK RETURN|AIR|sts. slyly special fo|
-5829|90|1|4|42|41583.78|0.02|0.07|N|O|1997-03-26|1997-04-01|1997-03-30|COLLECT COD|REG AIR|pearls. slyly bold deposits solve final|
-5829|191|5|5|49|53468.31|0.05|0.01|N|O|1997-01-31|1997-03-13|1997-02-18|NONE|MAIL| ironic excuses use fluf|
-5829|18|5|6|17|15606.17|0.09|0.02|N|O|1997-04-10|1997-03-29|1997-04-22|COLLECT COD|AIR|after the furiously ironic ideas no|
-5829|78|9|7|27|26407.89|0.08|0.04|N|O|1997-02-25|1997-03-31|1997-03-03|DELIVER IN PERSON|AIR|ns about the excuses are c|
-5830|160|2|1|29|30744.64|0.10|0.02|R|F|1993-06-19|1993-05-10|1993-07-13|DELIVER IN PERSON|REG AIR|y bold excuses|
-5831|191|2|1|2|2182.38|0.10|0.01|N|O|1997-02-09|1997-01-20|1997-03-07|TAKE BACK RETURN|TRUCK|quickly silent req|
-5831|74|3|2|33|32144.31|0.04|0.03|N|O|1996-11-20|1997-01-18|1996-12-18|TAKE BACK RETURN|MAIL| instructions wake. slyly sil|
-5831|82|3|3|6|5892.48|0.05|0.07|N|O|1997-01-29|1997-01-14|1997-02-09|NONE|MAIL|ly ironic accounts nag pendin|
-5831|13|10|4|46|41998.46|0.06|0.02|N|O|1997-02-24|1997-01-18|1997-03-02|COLLECT COD|MAIL|ly final pa|
-5831|43|4|5|37|34892.48|0.05|0.01|N|O|1997-01-17|1997-02-08|1997-02-01|NONE|FOB|uriously even requests|
-5856|4|1|1|1|904.00|0.03|0.02|A|F|1994-12-29|1995-01-07|1995-01-10|TAKE BACK RETURN|MAIL|tly. special deposits wake blithely even|
-5856|35|6|2|35|32726.05|0.09|0.02|R|F|1994-11-24|1994-12-23|1994-11-30|COLLECT COD|AIR|excuses. finally ir|
-5856|153|4|3|39|41072.85|0.05|0.03|A|F|1995-01-18|1995-01-11|1995-01-19|DELIVER IN PERSON|TRUCK|uickly quickly fluffy in|
-5857|58|9|1|25|23951.25|0.03|0.02|N|O|1997-12-02|1997-12-17|1997-12-08|DELIVER IN PERSON|REG AIR|ding platelets. pending excu|
-5857|195|9|2|50|54759.50|0.06|0.07|N|O|1997-12-04|1997-12-16|1997-12-20|NONE|TRUCK|y regular d|
-5857|68|3|3|1|968.06|0.03|0.01|N|O|1998-02-01|1997-12-09|1998-02-20|TAKE BACK RETURN|SHIP|instructions detect final reques|
-5857|118|2|4|12|12217.32|0.03|0.08|N|O|1998-01-24|1997-12-27|1998-02-10|TAKE BACK RETURN|AIR|counts. express, final|
-5857|192|4|5|14|15290.66|0.07|0.07|N|O|1997-12-10|1998-01-06|1998-01-04|TAKE BACK RETURN|TRUCK|ffily pendin|
-5857|93|5|6|49|48661.41|0.00|0.04|N|O|1998-01-23|1997-12-12|1998-01-28|DELIVER IN PERSON|REG AIR|egular pinto beans|
-5858|121|4|1|20|20422.40|0.02|0.06|A|F|1992-07-23|1992-08-26|1992-07-24|COLLECT COD|SHIP|uffily unusual pinto beans sleep|
-5858|16|7|2|36|32976.36|0.00|0.05|A|F|1992-09-25|1992-08-16|1992-10-11|NONE|SHIP|osits wake quickly quickly sile|
-5858|148|5|3|7|7336.98|0.08|0.02|A|F|1992-10-07|1992-08-16|1992-10-15|TAKE BACK RETURN|REG AIR|. doggedly regular packages use pendin|
-5858|164|9|4|46|48951.36|0.07|0.06|R|F|1992-09-07|1992-10-06|1992-10-06|DELIVER IN PERSON|MAIL|posits withi|
-5858|161|8|5|18|19100.88|0.00|0.07|A|F|1992-11-05|1992-10-08|1992-12-03|NONE|TRUCK|al excuses. bold|
-5858|154|9|6|7|7379.05|0.04|0.00|A|F|1992-09-14|1992-10-01|1992-10-01|TAKE BACK RETURN|RAIL|dly pending ac|
-5858|11|5|7|50|45550.50|0.06|0.00|R|F|1992-07-20|1992-10-07|1992-07-25|NONE|TRUCK|r the ironic ex|
-5859|175|4|1|50|53758.50|0.07|0.01|N|O|1997-07-08|1997-06-20|1997-07-27|COLLECT COD|MAIL|ly regular deposits use. ironic|
-5859|9|6|2|17|15453.00|0.03|0.03|N|O|1997-05-15|1997-06-30|1997-05-26|DELIVER IN PERSON|AIR|ly ironic requests. quickly unusual pin|
-5859|46|3|3|33|31219.32|0.10|0.04|N|O|1997-07-08|1997-06-22|1997-07-18|TAKE BACK RETURN|TRUCK|eposits unwind furiously final pinto bea|
-5859|93|4|4|40|39723.60|0.09|0.02|N|O|1997-08-05|1997-06-17|1997-08-20|NONE|REG AIR|l dependenci|
-5859|153|8|5|35|36860.25|0.00|0.08|N|O|1997-05-28|1997-07-14|1997-06-15|COLLECT COD|TRUCK|egular acco|
-5859|44|5|6|9|8496.36|0.01|0.02|N|O|1997-06-15|1997-06-06|1997-06-20|NONE|RAIL|ges boost quickly. blithely r|
-5859|191|5|7|27|29462.13|0.05|0.08|N|O|1997-07-30|1997-07-08|1997-08-08|NONE|MAIL| across th|
-5860|51|3|1|10|9510.50|0.04|0.04|A|F|1992-03-11|1992-03-30|1992-03-31|NONE|MAIL|ual patterns try to eat carefully above|
-5861|191|5|1|32|34918.08|0.00|0.03|N|O|1997-05-27|1997-05-29|1997-05-28|TAKE BACK RETURN|MAIL|nt asymptotes. carefully express request|
-5861|86|7|2|6|5916.48|0.10|0.03|N|O|1997-07-28|1997-05-18|1997-08-24|TAKE BACK RETURN|TRUCK|olites. slyly|
-5862|113|7|1|4|4052.44|0.09|0.06|N|O|1997-06-04|1997-04-26|1997-06-19|NONE|TRUCK|yly silent deposit|
-5862|2|7|2|29|26158.00|0.03|0.05|N|O|1997-04-02|1997-04-16|1997-04-04|NONE|FOB|e fluffily. furiously|
-5863|161|10|1|45|47752.20|0.07|0.06|A|F|1993-12-19|1994-01-25|1994-01-05|NONE|REG AIR| deposits are ab|
-5863|160|8|2|21|22263.36|0.09|0.03|R|F|1994-01-13|1994-01-09|1994-01-28|DELIVER IN PERSON|FOB|atelets nag blithely furi|
-5888|62|7|1|46|44254.76|0.02|0.00|N|O|1996-11-18|1996-11-05|1996-12-08|TAKE BACK RETURN|FOB|yly final accounts hag|
-5888|112|3|2|24|24290.64|0.03|0.01|N|O|1996-11-07|1996-11-30|1996-11-20|COLLECT COD|SHIP|ing to the spe|
-5889|77|7|1|17|16610.19|0.09|0.02|N|O|1995-07-01|1995-08-12|1995-07-25|NONE|AIR|blithely pending packages. flu|
-5890|113|4|1|38|38498.18|0.01|0.08|A|F|1993-02-14|1992-12-09|1993-02-27|COLLECT COD|FOB| accounts. carefully final asymptotes|
-5891|85|6|1|22|21671.76|0.00|0.06|R|F|1993-01-01|1993-02-18|1993-01-14|DELIVER IN PERSON|TRUCK|iresias cajole deposits. special, ir|
-5891|186|7|2|9|9775.62|0.03|0.07|R|F|1993-01-20|1993-02-27|1993-02-10|COLLECT COD|REG AIR|cajole carefully |
-5891|30|9|3|10|9300.30|0.08|0.01|A|F|1993-04-14|1993-02-07|1993-04-15|DELIVER IN PERSON|RAIL|nding requests. b|
-5892|148|9|1|7|7336.98|0.02|0.03|N|O|1995-06-26|1995-07-18|1995-07-25|COLLECT COD|AIR|e furiously. quickly even deposits da|
-5892|150|9|2|37|38855.55|0.09|0.06|N|O|1995-08-12|1995-06-11|1995-09-05|NONE|REG AIR|maintain. bold, expre|
-5892|3|4|3|28|25284.00|0.03|0.06|N|O|1995-08-16|1995-07-06|1995-08-22|DELIVER IN PERSON|MAIL|ithely unusual accounts will have to integ|
-5892|75|6|4|23|22426.61|0.08|0.04|R|F|1995-05-18|1995-07-06|1995-05-29|COLLECT COD|MAIL| foxes nag slyly about the qui|
-5893|134|10|1|43|44467.59|0.05|0.02|R|F|1992-11-02|1992-09-27|1992-11-21|TAKE BACK RETURN|RAIL|s. regular courts above the carefully silen|
-5893|2|9|2|2|1804.00|0.10|0.04|R|F|1992-07-18|1992-09-10|1992-08-12|NONE|RAIL|ckages wake sly|
-5894|8|5|1|23|20884.00|0.04|0.08|A|F|1994-09-05|1994-10-27|1994-09-13|NONE|TRUCK| furiously even deposits haggle alw|
-5894|79|8|2|48|46995.36|0.04|0.08|A|F|1994-09-04|1994-11-03|1994-09-17|NONE|TRUCK| asymptotes among the blithely silent |
-5895|15|9|1|38|34770.38|0.05|0.08|N|O|1997-04-05|1997-03-06|1997-05-03|DELIVER IN PERSON|RAIL|ts are furiously. regular, final excuses |
-5895|122|3|2|47|48039.64|0.04|0.06|N|O|1997-04-27|1997-03-17|1997-05-07|DELIVER IN PERSON|AIR|r packages wake carefull|
-5895|84|5|3|49|48219.92|0.03|0.07|N|O|1997-03-15|1997-02-17|1997-04-04|NONE|TRUCK|permanent foxes. packages|
-5895|146|7|4|31|32430.34|0.03|0.01|N|O|1997-03-03|1997-03-30|1997-03-08|TAKE BACK RETURN|TRUCK| final deposits nod slyly careful|
-5895|200|1|5|20|22004.00|0.07|0.00|N|O|1997-04-30|1997-02-07|1997-05-08|DELIVER IN PERSON|AIR|gular deposits wake blithely carefully fin|
-5895|78|7|6|15|14671.05|0.08|0.08|N|O|1997-04-19|1997-03-09|1997-05-13|TAKE BACK RETURN|RAIL|silent package|
-5920|187|8|1|50|54359.00|0.06|0.00|A|F|1995-03-13|1995-01-03|1995-03-31|TAKE BACK RETURN|RAIL|across the carefully pending platelets|
-5920|58|9|2|24|22993.20|0.01|0.05|A|F|1994-12-28|1995-01-21|1994-12-31|DELIVER IN PERSON|FOB|fully regular dolphins. furiousl|
-5920|117|1|3|2|2034.22|0.08|0.07|A|F|1995-02-18|1995-01-13|1995-03-04|NONE|SHIP| evenly spe|
-5920|12|2|4|28|25536.28|0.06|0.02|R|F|1994-12-17|1995-02-13|1994-12-31|NONE|SHIP|le slyly slyly even deposits. f|
-5920|100|4|5|42|42004.20|0.09|0.08|A|F|1994-12-18|1995-01-07|1995-01-14|COLLECT COD|AIR|lar, ironic dependencies sno|
-5921|99|3|1|44|43959.96|0.07|0.01|R|F|1994-07-14|1994-06-30|1994-07-15|NONE|TRUCK|ain about the special|
-5921|146|9|2|25|26153.50|0.06|0.01|A|F|1994-05-19|1994-06-15|1994-06-17|COLLECT COD|TRUCK|nd the slyly regular deposits. quick|
-5921|68|5|3|17|16457.02|0.06|0.01|R|F|1994-05-20|1994-05-26|1994-05-23|NONE|FOB|final asymptotes. even packages boost |
-5921|28|7|4|26|24128.52|0.03|0.04|A|F|1994-05-03|1994-07-06|1994-05-06|NONE|AIR|hy dependenc|
-5921|143|10|5|41|42768.74|0.04|0.02|R|F|1994-04-13|1994-05-31|1994-04-26|DELIVER IN PERSON|AIR|nusual, regular theodol|
-5921|115|6|6|5|5075.55|0.02|0.00|R|F|1994-06-01|1994-05-07|1994-06-10|COLLECT COD|TRUCK|eas cajole across the final, fi|
-5922|196|10|1|9|9865.71|0.07|0.00|N|O|1996-12-04|1997-01-20|1996-12-08|DELIVER IN PERSON|RAIL|haggle slyly even packages. packages|
-5922|157|2|2|37|39114.55|0.01|0.04|N|O|1996-12-19|1996-12-16|1997-01-15|COLLECT COD|RAIL|s wake slyly. requests cajole furiously asy|
-5922|90|1|3|35|34653.15|0.08|0.00|N|O|1996-12-12|1997-01-21|1997-01-01|DELIVER IN PERSON|SHIP|accounts. regu|
-5922|66|7|4|13|12558.78|0.08|0.07|N|O|1997-03-08|1996-12-26|1997-04-03|DELIVER IN PERSON|FOB|sly special accounts wake ironically.|
-5922|57|5|5|39|37324.95|0.04|0.07|N|O|1997-03-04|1997-01-17|1997-03-25|TAKE BACK RETURN|SHIP|e of the instructions. quick|
-5922|179|9|6|10|10791.70|0.04|0.01|N|O|1997-02-23|1996-12-26|1997-03-04|NONE|REG AIR|sly regular deposits haggle quickly ins|
-5923|177|8|1|27|29083.59|0.08|0.03|N|O|1997-08-16|1997-06-27|1997-08-29|DELIVER IN PERSON|RAIL|arefully i|
-5923|119|3|2|42|42802.62|0.01|0.08|N|O|1997-09-16|1997-07-23|1997-09-27|COLLECT COD|REG AIR|y regular theodolites w|
-5923|108|5|3|2|2016.20|0.06|0.05|N|O|1997-06-19|1997-07-31|1997-06-28|TAKE BACK RETURN|TRUCK|express patterns. even deposits|
-5923|174|4|4|46|49411.82|0.05|0.04|N|O|1997-07-29|1997-07-23|1997-08-23|COLLECT COD|SHIP|nto beans cajole blithe|
-5923|59|4|5|35|33566.75|0.04|0.05|N|O|1997-07-21|1997-07-11|1997-08-01|DELIVER IN PERSON|AIR|sts affix unusual, final requests. request|
-5924|176|5|1|38|40894.46|0.06|0.05|N|O|1995-12-17|1995-12-11|1996-01-06|TAKE BACK RETURN|AIR|ions cajole carefully along the |
-5924|53|1|2|49|46699.45|0.04|0.00|N|O|1995-10-25|1995-12-11|1995-11-08|NONE|MAIL|inly final excuses. blithely regular requ|
-5924|17|8|3|24|22008.24|0.09|0.08|N|O|1996-01-12|1995-12-13|1996-01-25|COLLECT COD|REG AIR| use carefully. special, e|
-5925|87|8|1|42|41457.36|0.05|0.02|N|O|1996-03-05|1996-01-13|1996-03-10|COLLECT COD|SHIP|to the furiously|
-5925|125|4|2|31|31778.72|0.03|0.03|N|O|1996-01-02|1995-12-14|1996-01-07|TAKE BACK RETURN|FOB|e slyly. furiously regular deposi|
-5925|89|10|3|50|49454.00|0.03|0.04|N|O|1996-02-14|1996-01-10|1996-02-15|NONE|TRUCK|es. stealthily express pains print bli|
-5925|54|9|4|30|28621.50|0.02|0.07|N|O|1996-02-21|1996-02-11|1996-03-10|NONE|TRUCK| the packa|
-5925|160|1|5|41|43466.56|0.00|0.06|N|O|1996-02-03|1995-12-24|1996-02-20|NONE|SHIP| across the pending deposits nag caref|
-5925|50|9|6|48|45602.40|0.02|0.00|N|O|1996-02-03|1996-01-19|1996-03-04|DELIVER IN PERSON|REG AIR| haggle after the fo|
-5926|90|1|1|8|7920.72|0.02|0.00|R|F|1994-07-17|1994-07-20|1994-08-11|COLLECT COD|MAIL|gle furiously express foxes. bo|
-5926|50|9|2|27|25651.35|0.09|0.05|A|F|1994-07-05|1994-08-11|1994-08-02|DELIVER IN PERSON|MAIL|ironic requests|
-5926|127|8|3|46|47247.52|0.01|0.03|R|F|1994-09-05|1994-08-12|1994-09-11|COLLECT COD|RAIL|ts integrate. courts haggl|
-5926|190|1|4|23|25074.37|0.01|0.02|A|F|1994-07-23|1994-08-10|1994-07-27|DELIVER IN PERSON|FOB|ickly special packages among |
-5927|90|1|1|44|43563.96|0.04|0.05|N|O|1997-11-29|1997-11-21|1997-12-13|DELIVER IN PERSON|TRUCK|rding to the special, final decoy|
-5927|115|2|2|8|8120.88|0.04|0.05|N|O|1997-09-24|1997-11-15|1997-10-22|TAKE BACK RETURN|SHIP|ilent dependencies nod c|
-5927|167|6|3|32|34149.12|0.10|0.07|N|O|1997-12-26|1997-10-27|1997-12-31|COLLECT COD|AIR|telets. carefully bold accounts was|
-5952|200|2|1|49|53909.80|0.10|0.02|N|O|1997-06-30|1997-07-10|1997-07-02|COLLECT COD|AIR|e furiously regular|
-5952|191|5|2|11|12003.09|0.10|0.05|N|O|1997-05-13|1997-06-04|1997-05-27|DELIVER IN PERSON|FOB|y nag blithely aga|
-5952|71|2|3|43|41756.01|0.01|0.01|N|O|1997-06-29|1997-06-06|1997-07-15|COLLECT COD|MAIL|posits sleep furiously quickly final p|
-5952|158|3|4|23|24337.45|0.00|0.07|N|O|1997-05-13|1997-06-27|1997-05-20|NONE|TRUCK|e blithely packages. eve|
-5953|129|10|1|36|37048.32|0.03|0.00|R|F|1992-05-28|1992-06-24|1992-05-29|DELIVER IN PERSON|FOB| cajole furio|
-5953|13|7|2|34|31042.34|0.03|0.04|A|F|1992-05-04|1992-06-12|1992-06-02|NONE|RAIL|hockey players use furiously against th|
-5953|162|9|3|5|5310.80|0.07|0.06|A|F|1992-04-10|1992-04-27|1992-04-14|NONE|SHIP|s. blithely |
-5953|169|8|4|23|24590.68|0.09|0.02|R|F|1992-06-05|1992-06-03|1992-06-29|TAKE BACK RETURN|FOB|he silent ideas. silent foxes po|
-5954|147|6|1|8|8377.12|0.03|0.00|A|F|1993-03-27|1993-01-22|1993-04-04|TAKE BACK RETURN|AIR|unusual th|
-5954|81|2|2|40|39243.20|0.02|0.01|A|F|1992-12-30|1993-01-16|1993-01-09|COLLECT COD|RAIL|iously ironic deposits after|
-5954|94|8|3|20|19881.80|0.09|0.07|A|F|1992-12-25|1993-02-05|1992-12-31|COLLECT COD|REG AIR| accounts wake carefu|
-5954|145|4|4|20|20902.80|0.00|0.01|R|F|1993-02-27|1993-01-04|1993-03-08|NONE|TRUCK|ke furiously blithely special packa|
-5954|100|4|5|35|35003.50|0.04|0.06|A|F|1993-03-17|1993-02-06|1993-04-10|NONE|SHIP|tions maintain slyly. furious|
-5954|193|5|6|39|42634.41|0.04|0.08|A|F|1993-02-27|1993-02-25|1993-03-29|DELIVER IN PERSON|REG AIR| always regular dolphins. furiously p|
-5955|140|1|1|14|14561.96|0.08|0.08|N|O|1995-06-22|1995-05-23|1995-06-24|DELIVER IN PERSON|TRUCK| unusual, bold theodolit|
-5955|62|7|2|15|14430.90|0.08|0.07|R|F|1995-04-22|1995-05-28|1995-04-27|NONE|FOB|y final accounts above the regu|
-5955|112|9|3|40|40484.40|0.03|0.00|R|F|1995-04-01|1995-06-11|1995-04-27|NONE|FOB|oss the fluffily regular|
-5956|155|3|1|10|10551.50|0.04|0.05|N|O|1998-07-27|1998-07-04|1998-08-21|NONE|MAIL|ic packages am|
-5956|55|7|2|23|21966.15|0.08|0.03|N|O|1998-06-06|1998-07-10|1998-06-15|DELIVER IN PERSON|RAIL|ly slyly special |
-5956|175|5|3|47|50532.99|0.04|0.06|N|O|1998-09-06|1998-06-29|1998-09-18|TAKE BACK RETURN|MAIL|lyly express theodol|
-5956|20|10|4|40|36800.80|0.09|0.05|N|O|1998-06-11|1998-07-19|1998-06-21|NONE|MAIL|final theodolites sleep carefully ironic c|
-5957|15|9|1|37|33855.37|0.07|0.00|A|F|1994-04-18|1994-02-19|1994-05-11|NONE|AIR| ideas use ruthlessly.|
-5957|59|4|2|46|44116.30|0.04|0.08|A|F|1994-01-23|1994-01-30|1994-02-07|NONE|SHIP|platelets. furiously unusual requests |
-5957|2|7|3|17|15334.00|0.01|0.01|A|F|1994-01-24|1994-02-16|1994-02-08|TAKE BACK RETURN|SHIP|. final, pending packages|
-5957|132|3|4|29|29931.77|0.01|0.03|R|F|1994-02-24|1994-03-04|1994-03-08|COLLECT COD|REG AIR|sits. final, even asymptotes cajole quickly|
-5957|88|9|5|40|39523.20|0.04|0.04|R|F|1994-01-07|1994-02-05|1994-01-26|DELIVER IN PERSON|SHIP|ironic asymptotes sleep blithely again|
-5957|6|1|6|41|37146.00|0.10|0.07|R|F|1994-03-25|1994-02-20|1994-03-31|DELIVER IN PERSON|MAIL|es across the regular requests maint|
-5957|159|1|7|32|33892.80|0.10|0.07|A|F|1994-03-05|1994-02-20|1994-03-09|NONE|TRUCK| boost carefully across the |
-5958|149|8|1|33|34621.62|0.02|0.04|N|O|1995-09-24|1995-12-12|1995-10-05|COLLECT COD|MAIL|lar, regular accounts wake furi|
-5958|43|6|2|23|21689.92|0.03|0.04|N|O|1995-09-26|1995-10-19|1995-09-27|COLLECT COD|SHIP|regular requests. bold, bold deposits unwin|
-5958|153|8|3|42|44232.30|0.10|0.00|N|O|1995-12-12|1995-10-19|1996-01-09|NONE|AIR|n accounts. final, ironic packages |
-5958|39|10|4|18|16902.54|0.04|0.05|N|O|1995-12-02|1995-10-17|1995-12-22|COLLECT COD|FOB|regular requests haggle|
-5958|132|8|5|32|33028.16|0.06|0.00|N|O|1995-09-20|1995-12-10|1995-10-14|COLLECT COD|REG AIR|e carefully special theodolites. carefully |
-5959|135|1|1|49|50721.37|0.07|0.03|R|F|1992-07-16|1992-08-09|1992-08-14|DELIVER IN PERSON|SHIP|usual packages haggle slyly pi|
-5959|147|8|2|17|17801.38|0.09|0.07|R|F|1992-06-10|1992-07-06|1992-06-23|COLLECT COD|MAIL|ackages. blithely ex|
-5959|5|6|3|4|3620.00|0.04|0.03|R|F|1992-06-14|1992-07-05|1992-07-01|NONE|MAIL|gular requests ar|
-5959|196|7|4|13|14250.47|0.03|0.00|A|F|1992-07-29|1992-07-13|1992-08-20|COLLECT COD|SHIP|ar forges. deposits det|
-5959|40|6|5|37|34781.48|0.04|0.01|R|F|1992-06-05|1992-07-18|1992-06-29|NONE|TRUCK|endencies. brai|
-5959|119|3|6|35|35668.85|0.03|0.00|A|F|1992-05-27|1992-06-19|1992-06-23|NONE|TRUCK|ely silent deposits. |
-5959|43|10|7|47|44322.88|0.02|0.01|R|F|1992-08-28|1992-07-24|1992-09-09|TAKE BACK RETURN|RAIL|deposits. slyly special cou|
-5984|70|5|1|13|12610.91|0.06|0.07|R|F|1994-10-16|1994-09-06|1994-11-11|NONE|MAIL|lar platelets. f|
-5984|102|3|2|25|25052.50|0.05|0.08|R|F|1994-10-06|1994-07-21|1994-10-28|COLLECT COD|RAIL|gular accounts. even packages nag slyly|
-5984|1|4|3|8|7208.00|0.10|0.00|R|F|1994-09-17|1994-08-28|1994-09-25|COLLECT COD|RAIL|its. express,|
-5984|190|1|4|35|38156.65|0.00|0.01|A|F|1994-08-25|1994-08-05|1994-08-31|DELIVER IN PERSON|SHIP|le fluffily regula|
-5985|86|7|1|4|3944.32|0.02|0.02|A|F|1995-05-04|1995-04-01|1995-05-17|DELIVER IN PERSON|MAIL|ole along the quickly slow d|
-5986|79|7|1|26|25455.82|0.00|0.00|R|F|1992-08-10|1992-05-23|1992-08-24|TAKE BACK RETURN|SHIP|e fluffily ironic ideas. silent |
-5986|196|8|2|25|27404.75|0.03|0.06|A|F|1992-06-16|1992-07-17|1992-06-29|TAKE BACK RETURN|MAIL| instructions. slyly regular de|
-5986|30|5|3|1|930.03|0.07|0.06|A|F|1992-05-21|1992-06-21|1992-05-24|DELIVER IN PERSON|REG AIR|fix quickly quickly final deposits. fluffil|
-5986|90|1|4|31|30692.79|0.00|0.03|A|F|1992-08-21|1992-06-29|1992-09-14|NONE|AIR|structions! furiously pending instructi|
-5986|136|7|5|6|6216.78|0.05|0.02|A|F|1992-07-16|1992-06-10|1992-07-29|DELIVER IN PERSON|RAIL|al foxes within the slyly speci|
-5987|23|2|1|1|923.02|0.01|0.04|N|O|1996-09-13|1996-10-29|1996-09-21|DELIVER IN PERSON|REG AIR|refully final excuses haggle furiously ag|
-5987|176|5|2|20|21523.40|0.10|0.06|N|O|1996-11-28|1996-09-17|1996-12-05|TAKE BACK RETURN|RAIL|ing excuses nag quickly always bold|
-5987|92|3|3|43|42659.87|0.08|0.04|N|O|1996-10-30|1996-10-13|1996-11-12|NONE|AIR|theodolites wake above the furiously b|
-5987|97|1|4|37|36892.33|0.08|0.08|N|O|1996-10-15|1996-10-27|1996-11-09|NONE|MAIL|le furiously carefully special |
-5988|172|1|1|41|43958.97|0.08|0.03|R|F|1994-01-20|1994-02-06|1994-02-10|COLLECT COD|AIR|the pending, express reque|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/nation.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/nation.tbl
deleted file mode 100644
index ed3fd5b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/nation.tbl
+++ /dev/null
@@ -1,25 +0,0 @@
-0|ALGERIA|0| haggle. carefully final deposits detect slyly agai|
-1|ARGENTINA|1|al foxes promise slyly according to the regular accounts. bold requests alon|
-2|BRAZIL|1|y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special |
-3|CANADA|1|eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold|
-4|EGYPT|4|y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d|
-5|ETHIOPIA|0|ven packages wake quickly. regu|
-6|FRANCE|3|refully final requests. regular, ironi|
-7|GERMANY|3|l platelets. regular accounts x-ray: unusual, regular acco|
-8|INDIA|2|ss excuses cajole slyly across the packages. deposits print aroun|
-9|INDONESIA|2| slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull|
-10|IRAN|4|efully alongside of the slyly final dependencies. |
-11|IRAQ|4|nic deposits boost atop the quickly final requests? quickly regula|
-12|JAPAN|2|ously. final, express gifts cajole a|
-13|JORDAN|4|ic deposits are blithely about the carefully regular pa|
-14|KENYA|0| pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t|
-15|MOROCCO|0|rns. blithely bold courts among the closely regular packages use furiously bold platelets?|
-16|MOZAMBIQUE|0|s. ironic, unusual asymptotes wake blithely r|
-17|PERU|1|platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun|
-18|CHINA|2|c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos|
-19|ROMANIA|3|ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account|
-20|SAUDI ARABIA|4|ts. silent requests haggle. closely express packages sleep across the blithely|
-21|VIETNAM|2|hely enticingly express accounts. even, final |
-22|RUSSIA|3| requests against the platelets use never according to the quickly regular pint|
-23|UNITED KINGDOM|3|eans boost carefully special requests. accounts are. carefull|
-24|UNITED STATES|1|y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/orders.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/orders.tbl
deleted file mode 100644
index 1ebd663..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/orders.tbl
+++ /dev/null
@@ -1,1500 +0,0 @@
-1|37|O|131251.81|1996-01-02|5-LOW|Clerk#000000951|0|nstructions sleep furiously among |
-2|79|O|40183.29|1996-12-01|1-URGENT|Clerk#000000880|0| foxes. pending accounts at the pending, silent asymptot|
-3|124|F|160882.76|1993-10-14|5-LOW|Clerk#000000955|0|sly final accounts boost. carefully regular ideas cajole carefully. depos|
-4|137|O|31084.79|1995-10-11|5-LOW|Clerk#000000124|0|sits. slyly regular warthogs cajole. regular, regular theodolites acro|
-5|46|F|86615.25|1994-07-30|5-LOW|Clerk#000000925|0|quickly. bold deposits sleep slyly. packages use slyly|
-6|56|F|36468.55|1992-02-21|4-NOT SPECIFIED|Clerk#000000058|0|ggle. special, final requests are against the furiously specia|
-7|40|O|171488.73|1996-01-10|2-HIGH|Clerk#000000470|0|ly special requests |
-32|131|O|116923.00|1995-07-16|2-HIGH|Clerk#000000616|0|ise blithely bold, regular requests. quickly unusual dep|
-33|67|F|99798.76|1993-10-27|3-MEDIUM|Clerk#000000409|0|uriously. furiously final request|
-34|62|O|41670.02|1998-07-21|3-MEDIUM|Clerk#000000223|0|ly final packages. fluffily final deposits wake blithely ideas. spe|
-35|128|O|148789.52|1995-10-23|4-NOT SPECIFIED|Clerk#000000259|0|zzle. carefully enticing deposits nag furio|
-36|116|O|38988.98|1995-11-03|1-URGENT|Clerk#000000358|0| quick packages are blithely. slyly silent accounts wake qu|
-37|88|F|113701.89|1992-06-03|3-MEDIUM|Clerk#000000456|0|kly regular pinto beans. carefully unusual waters cajole never|
-38|125|O|46366.56|1996-08-21|4-NOT SPECIFIED|Clerk#000000604|0|haggle blithely. furiously express ideas haggle blithely furiously regular re|
-39|82|O|219707.84|1996-09-20|3-MEDIUM|Clerk#000000659|0|ole express, ironic requests: ir|
-64|34|F|20065.73|1994-07-16|3-MEDIUM|Clerk#000000661|0|wake fluffily. sometimes ironic pinto beans about the dolphin|
-65|17|P|65883.92|1995-03-18|1-URGENT|Clerk#000000632|0|ular requests are blithely pending orbits-- even requests against the deposit|
-66|130|F|79258.24|1994-01-20|5-LOW|Clerk#000000743|0|y pending requests integrate|
-67|58|O|116227.05|1996-12-19|4-NOT SPECIFIED|Clerk#000000547|0|symptotes haggle slyly around the furiously iron|
-68|29|O|215135.72|1998-04-18|3-MEDIUM|Clerk#000000440|0| pinto beans sleep carefully. blithely ironic deposits haggle furiously acro|
-69|85|F|162176.23|1994-06-04|4-NOT SPECIFIED|Clerk#000000330|0| depths atop the slyly thin deposits detect among the furiously silent accou|
-70|65|F|84651.80|1993-12-18|5-LOW|Clerk#000000322|0| carefully ironic request|
-71|4|O|178821.73|1998-01-24|4-NOT SPECIFIED|Clerk#000000271|0| express deposits along the blithely regul|
-96|109|F|55090.67|1994-04-17|2-HIGH|Clerk#000000395|0|oost furiously. pinto|
-97|22|F|68908.31|1993-01-29|3-MEDIUM|Clerk#000000547|0|hang blithely along the regular accounts. furiously even ideas after the|
-98|106|F|51004.44|1994-09-25|1-URGENT|Clerk#000000448|0|c asymptotes. quickly regular packages should have to nag re|
-99|89|F|92326.79|1994-03-13|4-NOT SPECIFIED|Clerk#000000973|0|e carefully ironic packages. pending|
-100|148|O|141311.01|1998-02-28|4-NOT SPECIFIED|Clerk#000000577|0|heodolites detect slyly alongside of the ent|
-101|28|O|95591.40|1996-03-17|3-MEDIUM|Clerk#000000419|0|ding accounts above the slyly final asymptote|
-102|1|O|113954.89|1997-05-09|2-HIGH|Clerk#000000596|0| slyly according to the asymptotes. carefully final packages integrate furious|
-103|31|O|95563.95|1996-06-20|4-NOT SPECIFIED|Clerk#000000090|0|ges. carefully unusual instructions haggle quickly regular f|
-128|74|F|36333.34|1992-06-15|1-URGENT|Clerk#000000385|0|ns integrate fluffily. ironic asymptotes after the regular excuses nag around |
-129|73|F|188124.55|1992-11-19|5-LOW|Clerk#000000859|0|ing tithes. carefully pending deposits boost about the silently express |
-130|37|F|115717.37|1992-05-08|2-HIGH|Clerk#000000036|0|le slyly unusual, regular packages? express deposits det|
-131|94|F|96596.81|1994-06-08|3-MEDIUM|Clerk#000000625|0|after the fluffily special foxes integrate s|
-132|28|F|118802.62|1993-06-11|3-MEDIUM|Clerk#000000488|0|sits are daringly accounts. carefully regular foxes sleep slyly about the|
-133|44|O|80437.72|1997-11-29|1-URGENT|Clerk#000000738|0|usly final asymptotes |
-134|7|F|154260.84|1992-05-01|4-NOT SPECIFIED|Clerk#000000711|0|lar theodolites boos|
-135|61|O|174569.88|1995-10-21|4-NOT SPECIFIED|Clerk#000000804|0|l platelets use according t|
-160|83|O|86076.86|1996-12-19|4-NOT SPECIFIED|Clerk#000000342|0|thely special sauternes wake slyly of t|
-161|17|F|19056.99|1994-08-31|2-HIGH|Clerk#000000322|0|carefully! special instructions sin|
-162|16|O|2158.13|1995-05-08|3-MEDIUM|Clerk#000000378|0|nts hinder fluffily ironic instructions. express, express excuses |
-163|88|O|125170.86|1997-09-05|3-MEDIUM|Clerk#000000379|0|y final packages. final foxes since the quickly even|
-164|1|F|202660.52|1992-10-21|5-LOW|Clerk#000000209|0|cajole ironic courts. slyly final ideas are slyly. blithely final Tiresias sub|
-165|28|F|141824.23|1993-01-30|4-NOT SPECIFIED|Clerk#000000292|0|across the blithely regular accounts. bold|
-166|109|O|93335.60|1995-09-12|2-HIGH|Clerk#000000440|0|lets. ironic, bold asymptotes kindle|
-167|121|F|52982.23|1993-01-04|4-NOT SPECIFIED|Clerk#000000731|0|s nag furiously bold excuses. fluffily iron|
-192|83|O|133002.55|1997-11-25|5-LOW|Clerk#000000483|0|y unusual platelets among the final instructions integrate rut|
-193|80|F|48053.18|1993-08-08|1-URGENT|Clerk#000000025|0|the furiously final pin|
-194|62|F|114097.63|1992-04-05|3-MEDIUM|Clerk#000000352|0|egular requests haggle slyly regular, regular pinto beans. asymptote|
-195|136|F|120053.52|1993-12-28|3-MEDIUM|Clerk#000000216|0|old forges are furiously sheaves. slyly fi|
-196|65|F|33248.04|1993-03-17|2-HIGH|Clerk#000000988|0|beans boost at the foxes. silent foxes|
-197|34|P|100290.07|1995-04-07|2-HIGH|Clerk#000000969|0|solve quickly about the even braids. carefully express deposits affix care|
-198|112|O|125792.83|1998-01-02|4-NOT SPECIFIED|Clerk#000000331|0|its. carefully ironic requests sleep. furiously express fox|
-199|53|O|80592.44|1996-03-07|2-HIGH|Clerk#000000489|0|g theodolites. special packag|
-224|4|F|155680.60|1994-06-18|4-NOT SPECIFIED|Clerk#000000642|0|r the quickly thin courts. carefully|
-225|34|P|165890.47|1995-05-25|1-URGENT|Clerk#000000177|0|s. blithely ironic accounts wake quickly fluffily special acc|
-226|128|F|180119.22|1993-03-10|2-HIGH|Clerk#000000756|0|s are carefully at the blithely ironic acc|
-227|10|O|46076.46|1995-11-10|5-LOW|Clerk#000000919|0| express instructions. slyly regul|
-228|46|F|2638.98|1993-02-25|1-URGENT|Clerk#000000562|0|es was slyly among the regular foxes. blithely regular dependenci|
-229|112|F|142290.77|1993-12-29|1-URGENT|Clerk#000000628|0|he fluffily even instructions. furiously i|
-230|103|F|107231.60|1993-10-27|1-URGENT|Clerk#000000520|0|odolites. carefully quick requ|
-231|91|F|141554.06|1994-09-29|2-HIGH|Clerk#000000446|0| packages haggle slyly after the carefully ironic instruct|
-256|125|F|106315.25|1993-10-19|4-NOT SPECIFIED|Clerk#000000834|0|he fluffily final ideas might are final accounts. carefully f|
-257|124|O|7102.74|1998-03-28|3-MEDIUM|Clerk#000000680|0|ts against the sly warhorses cajole slyly accounts|
-258|43|F|186669.10|1993-12-29|1-URGENT|Clerk#000000167|0|dencies. blithely quick packages cajole. ruthlessly final accounts|
-259|44|F|75661.70|1993-09-29|4-NOT SPECIFIED|Clerk#000000601|0|ages doubt blithely against the final foxes. carefully express deposits dazzle|
-260|106|O|179292.14|1996-12-10|3-MEDIUM|Clerk#000000960|0|lently regular pinto beans sleep after the slyly e|
-261|47|F|201003.12|1993-06-29|3-MEDIUM|Clerk#000000310|0|ully fluffily brave instructions. furiousl|
-262|31|O|108443.84|1995-11-25|4-NOT SPECIFIED|Clerk#000000551|0|l packages. blithely final pinto beans use carefu|
-263|118|F|79782.56|1994-05-17|2-HIGH|Clerk#000000088|0| pending instructions. blithely un|
-288|8|O|163794.53|1997-02-21|1-URGENT|Clerk#000000109|0|uriously final requests. even, final ideas det|
-289|104|O|131092.67|1997-02-10|3-MEDIUM|Clerk#000000103|0|sily. slyly special excuse|
-290|118|F|62814.89|1994-01-01|4-NOT SPECIFIED|Clerk#000000735|0|efully dogged deposits. furiou|
-291|142|F|66817.05|1994-03-13|1-URGENT|Clerk#000000923|0|dolites. carefully regular pinto beans cajol|
-292|23|F|30783.05|1992-01-13|2-HIGH|Clerk#000000193|0|g pinto beans will have to sleep f|
-293|31|F|37248.78|1992-10-02|2-HIGH|Clerk#000000629|0|re bold, ironic deposits. platelets c|
-294|52|F|30059.47|1993-07-16|3-MEDIUM|Clerk#000000499|0|kly according to the frays. final dolphins affix quickly |
-295|19|F|89345.99|1994-09-29|2-HIGH|Clerk#000000155|0| unusual pinto beans play. regular ideas haggle|
-320|1|O|39835.54|1997-11-21|2-HIGH|Clerk#000000573|0|ar foxes nag blithely|
-321|124|F|62251.15|1993-03-21|3-MEDIUM|Clerk#000000289|0|equests run. blithely final dependencies after the deposits wake caref|
-322|134|F|127068.89|1992-03-19|1-URGENT|Clerk#000000158|0|fully across the slyly bold packages. packages against the quickly regular i|
-323|40|F|79683.42|1994-03-26|1-URGENT|Clerk#000000959|0|arefully pending foxes sleep blithely. slyly express accoun|
-324|106|F|26868.85|1992-03-20|1-URGENT|Clerk#000000352|0| about the ironic, regular deposits run blithely against the excuses|
-325|41|F|71543.41|1993-10-17|5-LOW|Clerk#000000844|0|ly sometimes pending pa|
-326|76|O|229165.17|1995-06-04|2-HIGH|Clerk#000000466|0| requests. furiously ironic asymptotes mold carefully alongside of the blit|
-327|145|P|24468.16|1995-04-17|5-LOW|Clerk#000000992|0|ng the slyly final courts. slyly even escapades eat |
-352|107|F|16003.86|1994-03-08|2-HIGH|Clerk#000000932|0|ke slyly bold pinto beans. blithely regular accounts against the spe|
-353|2|F|179984.42|1993-12-31|5-LOW|Clerk#000000449|0| quiet ideas sleep. even instructions cajole slyly. silently spe|
-354|139|O|157062.70|1996-03-14|2-HIGH|Clerk#000000511|0|ly regular ideas wake across the slyly silent ideas. final deposits eat b|
-355|71|F|69447.25|1994-06-14|5-LOW|Clerk#000000532|0|s. sometimes regular requests cajole. regular, pending accounts a|
-356|148|F|162786.67|1994-06-30|4-NOT SPECIFIED|Clerk#000000944|0|as wake along the bold accounts. even, |
-357|61|O|98723.11|1996-10-09|2-HIGH|Clerk#000000301|0|e blithely about the express, final accounts. quickl|
-358|4|F|226806.66|1993-09-20|2-HIGH|Clerk#000000392|0|l, silent instructions are slyly. silently even de|
-359|79|F|142891.22|1994-12-19|3-MEDIUM|Clerk#000000934|0|n dolphins. special courts above the carefully ironic requests use|
-384|115|F|122785.82|1992-03-03|5-LOW|Clerk#000000206|0|, even accounts use furiously packages. slyly ironic pla|
-385|34|O|50724.06|1996-03-22|5-LOW|Clerk#000000600|0|hless accounts unwind bold pain|
-386|61|F|90380.40|1995-01-25|2-HIGH|Clerk#000000648|0| haggle quickly. stealthily bold asymptotes haggle among the furiously even re|
-387|4|O|130647.18|1997-01-26|4-NOT SPECIFIED|Clerk#000000768|0| are carefully among the quickly even deposits. furiously silent req|
-388|46|F|120533.46|1992-12-16|4-NOT SPECIFIED|Clerk#000000356|0|ar foxes above the furiously ironic deposits nag slyly final reque|
-389|127|F|1984.14|1994-02-17|2-HIGH|Clerk#000000062|0|ing to the regular asymptotes. final, pending foxes about the blithely sil|
-390|103|O|168562.27|1998-04-07|5-LOW|Clerk#000000404|0|xpress asymptotes use among the regular, final pinto b|
-391|112|F|13282.23|1994-11-17|2-HIGH|Clerk#000000256|0|orges thrash fluffil|
-416|41|F|71362.50|1993-09-27|5-LOW|Clerk#000000294|0| the accounts. fluffily bold depo|
-417|55|F|91982.29|1994-02-06|3-MEDIUM|Clerk#000000468|0|ironic, even packages. thinly unusual accounts sleep along the slyly unusual |
-418|95|P|33124.96|1995-04-13|4-NOT SPECIFIED|Clerk#000000643|0|. furiously ironic instruc|
-419|118|O|111597.96|1996-10-01|3-MEDIUM|Clerk#000000376|0|osits. blithely pending theodolites boost carefully|
-420|91|O|198039.23|1995-10-31|4-NOT SPECIFIED|Clerk#000000756|0|leep carefully final excuses. fluffily pending requests unwind carefully above|
-421|40|F|1084.38|1992-02-22|5-LOW|Clerk#000000405|0|egular, even packages according to the final, un|
-422|74|O|106045.89|1997-05-31|4-NOT SPECIFIED|Clerk#000000049|0|aggle carefully across the accounts. regular accounts eat fluffi|
-423|104|O|26981.31|1996-06-01|1-URGENT|Clerk#000000674|0|quests. deposits cajole quickly. furiously bold accounts haggle q|
-448|149|O|114978.03|1995-08-21|3-MEDIUM|Clerk#000000597|0| regular, express foxes use blithely. quic|
-449|97|O|41605.63|1995-07-20|2-HIGH|Clerk#000000841|0|. furiously regular theodolites affix blithely |
-450|49|P|153386.61|1995-03-05|4-NOT SPECIFIED|Clerk#000000293|0|d theodolites. boldly bold foxes since the pack|
-451|100|O|104664.40|1998-05-25|5-LOW|Clerk#000000048|0|nic pinto beans. theodolites poach carefully; |
-452|61|O|2007.48|1997-10-14|1-URGENT|Clerk#000000498|0|t, unusual instructions above the blithely bold pint|
-453|46|O|216826.73|1997-05-26|5-LOW|Clerk#000000504|0|ss foxes. furiously regular ideas sleep according to t|
-454|49|O|23198.24|1995-12-27|5-LOW|Clerk#000000890|0|dolites sleep carefully blithely regular deposits. quickly regul|
-455|13|O|138010.76|1996-12-04|1-URGENT|Clerk#000000796|0| about the final platelets. dependen|
-480|73|F|20530.97|1993-05-08|5-LOW|Clerk#000000004|0|ealthy pinto beans. fluffily regular requests along the special sheaves wake |
-481|31|F|117827.18|1992-10-08|2-HIGH|Clerk#000000230|0|ly final ideas. packages haggle fluffily|
-482|127|O|136634.34|1996-03-26|1-URGENT|Clerk#000000295|0|ts. deposits wake: final acco|
-483|35|O|39793.05|1995-07-11|2-HIGH|Clerk#000000025|0|cross the carefully final e|
-484|55|O|219920.62|1997-01-03|3-MEDIUM|Clerk#000000545|0|grouches use. furiously bold accounts maintain. bold, regular deposits|
-485|101|O|110432.76|1997-03-26|2-HIGH|Clerk#000000105|0| regular ideas nag thinly furiously s|
-486|52|O|185968.15|1996-03-11|4-NOT SPECIFIED|Clerk#000000803|0|riously dolphins. fluffily ironic requ|
-487|109|F|48502.79|1992-08-18|1-URGENT|Clerk#000000086|0|ithely unusual courts eat accordi|
-512|64|P|124661.48|1995-05-20|5-LOW|Clerk#000000814|0|ding requests. carefully express theodolites was quickly. furious|
-513|61|O|63703.92|1995-05-01|2-HIGH|Clerk#000000522|0|regular packages. pinto beans cajole carefully against the even|
-514|76|O|104585.77|1996-04-04|2-HIGH|Clerk#000000094|0| cajole furiously. slyly final excuses cajole. slyly special instructions |
-515|142|F|153720.22|1993-08-29|4-NOT SPECIFIED|Clerk#000000700|0|eposits are furiously furiously silent pinto beans. pending pack|
-516|44|O|10677.86|1998-04-21|2-HIGH|Clerk#000000305|0|lar, unusual platelets are carefully. even courts sleep bold, final pinto bea|
-517|10|O|82197.79|1997-04-07|5-LOW|Clerk#000000359|0|slyly pending deposits cajole quickly packages. furiou|
-518|145|O|223537.09|1998-02-08|2-HIGH|Clerk#000000768|0| the carefully bold accounts. quickly regular excuses are|
-519|64|O|95731.50|1997-10-31|1-URGENT|Clerk#000000985|0|ains doze furiously against the f|
-544|94|F|47627.89|1993-02-17|2-HIGH|Clerk#000000145|0|the special, final accounts. dogged dolphins|
-545|64|O|23476.12|1995-11-07|2-HIGH|Clerk#000000537|0|as. blithely final hockey players about th|
-546|145|O|14790.37|1996-11-01|2-HIGH|Clerk#000000041|0|osits sleep. slyly special dolphins about the q|
-547|100|O|96855.29|1996-06-22|3-MEDIUM|Clerk#000000976|0|ing accounts eat. carefully regular packa|
-548|124|F|99088.75|1994-09-21|1-URGENT|Clerk#000000435|0|arefully express instru|
-549|110|F|141679.41|1992-07-13|1-URGENT|Clerk#000000196|0|ideas alongside of |
-550|25|O|33123.28|1995-08-02|1-URGENT|Clerk#000000204|0|t requests. blithely |
-551|91|O|46355.83|1995-05-30|1-URGENT|Clerk#000000179|0|xpress accounts boost quic|
-576|31|O|18307.45|1997-05-13|3-MEDIUM|Clerk#000000955|0|l requests affix regular requests. final account|
-577|56|F|34768.68|1994-12-19|5-LOW|Clerk#000000154|0| deposits engage stealthil|
-578|94|O|70392.02|1997-01-10|5-LOW|Clerk#000000281|0|e blithely even packages. slyly pending platelets bes|
-579|68|O|120828.12|1998-03-11|2-HIGH|Clerk#000000862|0| regular instructions. blithely even p|
-580|61|O|88219.12|1997-07-05|2-HIGH|Clerk#000000314|0|tegrate fluffily regular accou|
-581|70|O|126066.00|1997-02-23|4-NOT SPECIFIED|Clerk#000000239|0| requests. even requests use slyly. blithely ironic |
-582|50|O|129004.81|1997-10-21|1-URGENT|Clerk#000000378|0|n pinto beans print a|
-583|49|O|127817.38|1997-03-19|3-MEDIUM|Clerk#000000792|0|efully express requests. a|
-608|26|O|62567.99|1996-02-28|3-MEDIUM|Clerk#000000995|0|nic waters wake slyly slyly expre|
-609|127|F|21088.59|1994-06-01|3-MEDIUM|Clerk#000000348|0|- ironic gifts believe furiously ca|
-610|52|O|175142.28|1995-08-02|1-URGENT|Clerk#000000610|0|totes. ironic, unusual packag|
-611|106|F|73907.63|1993-01-27|1-URGENT|Clerk#000000401|0|ounts detect furiously ac|
-612|82|F|145695.42|1992-10-21|3-MEDIUM|Clerk#000000759|0|boost quickly quickly final excuses. final foxes use bravely afte|
-613|139|O|33396.35|1995-06-18|2-HIGH|Clerk#000000172|0|ts hinder among the deposits. fluffily ironic depos|
-614|134|F|218116.21|1992-12-01|2-HIGH|Clerk#000000388|0| deposits! even, daring theodol|
-615|67|F|32890.89|1992-05-09|5-LOW|Clerk#000000388|0|t to promise asymptotes. packages haggle alongside of the fluffil|
-640|97|F|145495.62|1993-01-23|2-HIGH|Clerk#000000433|0|r, unusual accounts boost carefully final ideas. slyly silent theod|
-641|133|F|120626.49|1993-08-30|5-LOW|Clerk#000000175|0|ents cajole furiously about the quickly silent pac|
-642|40|F|22994.51|1993-12-16|3-MEDIUM|Clerk#000000357|0| among the requests wake slyly alongside of th|
-643|58|P|180396.95|1995-03-25|2-HIGH|Clerk#000000354|0|g dependencies. regular accounts |
-644|8|F|201268.06|1992-05-01|1-URGENT|Clerk#000000550|0| blithely unusual platelets haggle ironic, special excuses. excuses unwi|
-645|115|F|234763.73|1994-12-03|2-HIGH|Clerk#000000090|0|quickly daring theodolites across the regu|
-646|52|F|142070.65|1994-11-22|2-HIGH|Clerk#000000203|0|carefully even foxes. fina|
-647|143|O|56449.23|1997-08-07|1-URGENT|Clerk#000000270|0|egular pearls. carefully express asymptotes are. even account|
-672|109|F|89877.09|1994-04-14|5-LOW|Clerk#000000106|0|egular requests are furiously according to |
-673|80|F|21137.08|1994-03-10|1-URGENT|Clerk#000000448|0| special pinto beans use quickly furiously even depende|
-674|34|F|27204.60|1992-08-29|5-LOW|Clerk#000000448|0|ully special deposits. furiously final warhorses affix carefully. fluffily f|
-675|13|O|125188.72|1997-07-31|2-HIGH|Clerk#000000168|0|ffily between the careful|
-676|38|O|163966.67|1996-12-13|2-HIGH|Clerk#000000248|0|the final deposits. special, pending|
-677|124|F|147915.68|1993-11-24|3-MEDIUM|Clerk#000000824|0|uriously special pinto beans cajole carefully. fi|
-678|131|F|135761.05|1993-02-27|5-LOW|Clerk#000000530|0|. blithely final somas about the|
-679|49|O|8945.03|1995-12-15|2-HIGH|Clerk#000000853|0|tealthy, final pinto beans haggle slyly. pending platelets about the special, |
-704|85|O|56210.26|1996-11-21|3-MEDIUM|Clerk#000000682|0|blithely pending platelets wake alongside of the final, iron|
-705|43|O|83773.49|1997-02-13|4-NOT SPECIFIED|Clerk#000000294|0|ithely regular dependencies. express, even packages sleep slyly pending t|
-706|148|O|23973.60|1995-09-09|1-URGENT|Clerk#000000448|0|g the packages. deposits caj|
-707|118|F|58218.35|1994-11-20|3-MEDIUM|Clerk#000000199|0| ideas about the silent, bold deposits nag dolphins|
-708|32|O|100445.59|1998-07-03|3-MEDIUM|Clerk#000000101|0|lphins cajole about t|
-709|37|O|72055.87|1998-04-21|1-URGENT|Clerk#000000461|0|ons alongside of the carefully bold pinto bea|
-710|133|F|208974.42|1993-01-02|5-LOW|Clerk#000000026|0| regular, regular requests boost. fluffily re|
-711|64|F|92484.70|1993-09-23|4-NOT SPECIFIED|Clerk#000000856|0|its. fluffily regular gifts are furi|
-736|47|O|130204.17|1998-06-21|5-LOW|Clerk#000000881|0|refully of the final pi|
-737|121|F|12984.85|1992-04-26|5-LOW|Clerk#000000233|0|ake blithely express, ironic theodolites. blithely special accounts wa|
-738|22|F|114145.18|1993-03-02|4-NOT SPECIFIED|Clerk#000000669|0|ly even foxes. furiously regular accounts cajole ca|
-739|1|O|159171.69|1998-05-31|5-LOW|Clerk#000000900|0| against the slyly ironic packages nag slyly ironic|
-740|44|O|83490.99|1995-07-16|3-MEDIUM|Clerk#000000583|0|courts haggle furiously across the final, regul|
-741|106|O|47985.98|1998-07-07|2-HIGH|Clerk#000000295|0|ic instructions. slyly express instructions solv|
-742|103|F|207632.55|1994-12-23|5-LOW|Clerk#000000543|0|equests? slyly ironic dolphins boost carefully above the blithely|
-743|79|O|23614.89|1996-10-04|4-NOT SPECIFIED|Clerk#000000933|0|eans. furiously ironic deposits sleep carefully carefully qui|
-768|98|O|220636.82|1996-08-20|3-MEDIUM|Clerk#000000411|0|jole slyly ironic packages. slyly even idea|
-769|80|F|43092.76|1993-06-02|3-MEDIUM|Clerk#000000172|0|ggle furiously. ironic packages haggle slyly. bold platelets affix s|
-770|32|O|64271.75|1998-05-23|5-LOW|Clerk#000000572|0|heodolites. furiously special pinto beans cajole pac|
-771|46|O|105302.05|1995-06-17|1-URGENT|Clerk#000000105|0|s. furiously final instructions across the deposit|
-772|97|F|128234.96|1993-04-17|2-HIGH|Clerk#000000430|0|s boost blithely fluffily idle ideas? fluffily even pin|
-773|133|F|146862.27|1993-09-26|3-MEDIUM|Clerk#000000307|0|tions are quickly accounts. accounts use bold, even pinto beans. gifts ag|
-774|80|O|145857.60|1995-12-04|1-URGENT|Clerk#000000883|0|tealthily even depths|
-775|134|F|59455.61|1995-03-18|1-URGENT|Clerk#000000191|0|kly express requests. fluffily silent accounts poach furiously|
-800|56|O|87892.38|1998-07-14|2-HIGH|Clerk#000000213|0|y alongside of the pending packages? final platelets nag fluffily carefu|
-801|118|F|127717.72|1992-02-18|1-URGENT|Clerk#000000186|0|iously from the furiously enticing reques|
-802|137|F|156381.95|1995-01-05|1-URGENT|Clerk#000000516|0|posits. ironic, pending requests cajole. even theodol|
-803|16|O|27629.66|1997-04-29|5-LOW|Clerk#000000260|0|ic instructions. even deposits haggle furiously at the deposits-- regular de|
-804|50|F|94400.43|1993-03-12|3-MEDIUM|Clerk#000000931|0|s. blithely final foxes are about the packag|
-805|127|O|90042.41|1995-07-05|4-NOT SPECIFIED|Clerk#000000856|0|y according to the fluffily |
-806|131|O|26839.16|1996-06-20|2-HIGH|Clerk#000000240|0| the ironic packages wake carefully fina|
-807|145|F|222392.53|1993-11-24|3-MEDIUM|Clerk#000000012|0|refully special tithes. blithely regular accoun|
-832|29|F|68494.08|1992-04-19|5-LOW|Clerk#000000495|0|xes. bravely regular packages sleep up the furiously bold accou|
-833|56|F|49033.69|1994-02-13|3-MEDIUM|Clerk#000000437|0|ts haggle quickly across the slyl|
-834|43|F|46459.92|1994-05-23|3-MEDIUM|Clerk#000000805|0| sleep. quickly even foxes are boldly. slyly express requests use slyly|
-835|65|O|62430.67|1995-10-08|4-NOT SPECIFIED|Clerk#000000416|0|s about the carefully special foxes haggle quickly about the|
-836|70|O|72843.48|1996-11-25|4-NOT SPECIFIED|Clerk#000000729|0|ely bold excuses sleep regular ideas. furiously unusual ideas wake furiou|
-837|116|F|60918.41|1994-06-15|4-NOT SPECIFIED|Clerk#000000563|0|kages sleep slyly above the ironic, final orbits|
-838|17|O|82918.36|1998-01-29|5-LOW|Clerk#000000213|0| slyly around the slyly even|
-839|28|O|70182.63|1995-08-08|1-URGENT|Clerk#000000951|0|the carefully even platelets. furiously unusual fo|
-864|139|O|74710.74|1997-08-17|1-URGENT|Clerk#000000036|0|ly after the slyly regular deposits. express, regular asymptotes nag ca|
-865|4|F|70430.54|1993-05-04|3-MEDIUM|Clerk#000000337|0|. special packages wake after the carefully final accounts. express pinto be|
-866|40|F|4766.19|1992-11-28|3-MEDIUM|Clerk#000000718|0|ins after the even, even accounts nod blithel|
-867|26|F|7471.75|1993-11-16|3-MEDIUM|Clerk#000000877|0|pades nag quickly final, |
-868|104|F|127345.45|1992-06-09|4-NOT SPECIFIED|Clerk#000000782|0|onic theodolites print carefully. blithely dogge|
-869|136|O|58932.19|1997-01-12|2-HIGH|Clerk#000000245|0|ar sheaves are slowly. slyly even attainments boost theodolites. furiously|
-870|34|F|40492.37|1993-06-20|4-NOT SPECIFIED|Clerk#000000123|0|blithely ironic ideas nod. sly, r|
-871|16|O|172861.58|1995-11-15|5-LOW|Clerk#000000882|0|oss the ironic theodolites.|
-896|2|F|169847.63|1993-03-09|1-URGENT|Clerk#000000187|0|inal packages eat blithely according to the warhorses. furiously quiet de|
-897|49|P|57697.44|1995-03-20|1-URGENT|Clerk#000000316|0| wake quickly against |
-898|55|F|101020.75|1993-06-03|2-HIGH|Clerk#000000611|0|. unusual pinto beans haggle quickly across |
-899|109|O|125562.09|1998-04-08|5-LOW|Clerk#000000575|0|rts engage carefully final theodolites.|
-900|46|F|120073.51|1994-10-01|4-NOT SPECIFIED|Clerk#000000060|0| fluffily express deposits nag furiousl|
-901|13|O|81826.12|1998-07-21|4-NOT SPECIFIED|Clerk#000000929|0|lyly even foxes are furious, silent requests. requests about the quickly |
-902|10|F|37348.62|1994-07-27|4-NOT SPECIFIED|Clerk#000000811|0|yly final requests over the furiously regula|
-903|11|O|109351.87|1995-07-07|4-NOT SPECIFIED|Clerk#000000793|0|e slyly about the final pl|
-928|67|F|228136.49|1995-03-02|5-LOW|Clerk#000000450|0|ithely express pinto beans. |
-929|83|F|109301.02|1992-10-02|2-HIGH|Clerk#000000160|0|its. furiously even foxes affix carefully finally silent accounts. express req|
-930|131|F|199102.23|1994-12-17|1-URGENT|Clerk#000000004|0| accounts nag slyly. ironic, ironic accounts wake blithel|
-931|103|F|117909.23|1992-12-07|1-URGENT|Clerk#000000881|0|ss packages haggle furiously express, regular deposits. even, e|
-932|41|O|40234.50|1997-05-16|2-HIGH|Clerk#000000218|0|ly express instructions boost furiously reg|
-933|97|F|71349.30|1992-08-05|4-NOT SPECIFIED|Clerk#000000752|0|ial courts wake permanently against the furiously regular ideas. unusual |
-934|52|O|17213.59|1996-07-03|1-URGENT|Clerk#000000229|0|ts integrate carefully. sly, regular deposits af|
-935|50|O|97733.87|1997-09-24|5-LOW|Clerk#000000180|0|iously final deposits cajole. blithely even packages |
-960|35|F|63537.13|1994-09-21|3-MEDIUM|Clerk#000000120|0|regular accounts. requests|
-961|56|P|158893.16|1995-06-04|4-NOT SPECIFIED|Clerk#000000720|0|ons nag furiously among the quickl|
-962|37|F|98258.73|1994-05-06|5-LOW|Clerk#000000463|0|ments nag deposits. fluffily ironic a|
-963|26|F|53287.25|1994-05-26|3-MEDIUM|Clerk#000000497|0|uses haggle carefully. slyly even dependencies after the packages ha|
-964|76|O|131146.47|1995-05-20|3-MEDIUM|Clerk#000000657|0|print blithely ironic, careful theodolit|
-965|70|P|41758.44|1995-05-15|5-LOW|Clerk#000000218|0|iously special packages. slyly pending requests are carefully |
-966|14|O|120516.93|1998-04-30|2-HIGH|Clerk#000000239|0|special deposits. furious|
-967|110|F|179287.95|1992-06-21|3-MEDIUM|Clerk#000000167|0|excuses engage quickly bold dep|
-992|55|O|133665.12|1997-11-11|3-MEDIUM|Clerk#000000875|0|ts. regular pinto beans thrash carefully sl|
-993|80|O|198238.65|1995-09-10|3-MEDIUM|Clerk#000000894|0|quickly express accounts among the furiously bol|
-994|2|F|41433.48|1994-04-20|5-LOW|Clerk#000000497|0|ole. slyly bold excuses nag caref|
-995|116|P|135157.92|1995-05-31|3-MEDIUM|Clerk#000000439|0|deas. blithely final deposits play. express accounts wake blithely caref|
-996|71|O|47447.63|1997-12-29|1-URGENT|Clerk#000000497|0|arefully final packages into the slyly final requests affix blit|
-997|109|O|27561.82|1997-05-19|2-HIGH|Clerk#000000651|0|ly express depths. furiously final requests haggle furiously. carefu|
-998|32|F|65269.38|1994-11-26|4-NOT SPECIFIED|Clerk#000000956|0|ronic dolphins. ironic, bold ideas haggle furiously furious|
-999|61|F|145249.13|1993-09-05|5-LOW|Clerk#000000464|0|pitaphs sleep. regular accounts use. f|
-1024|4|O|176084.63|1997-12-23|5-LOW|Clerk#000000903|0| blithely. even, express theodolites cajole slyly across|
-1025|103|F|82034.03|1995-05-05|2-HIGH|Clerk#000000376|0|ross the slyly final pa|
-1026|73|O|36464.76|1997-06-04|5-LOW|Clerk#000000223|0|s wake blithely. special acco|
-1027|128|F|112770.89|1992-06-03|3-MEDIUM|Clerk#000000241|0|equests cajole. slyly final pinto bean|
-1028|70|F|153864.67|1994-01-01|2-HIGH|Clerk#000000131|0|ts are. final, silent deposits are among the fl|
-1029|130|F|47440.91|1994-06-21|2-HIGH|Clerk#000000700|0|quests sleep. slyly even foxes wake quickly final theodolites. clo|
-1030|134|F|16346.94|1994-06-15|5-LOW|Clerk#000000422|0|ully ironic accounts sleep carefully. requests are carefully alongside of the |
-1031|4|F|128024.71|1994-09-01|3-MEDIUM|Clerk#000000448|0|s; ironic theodolites along the carefully ex|
-1056|28|F|38446.39|1995-02-11|1-URGENT|Clerk#000000125|0|t, even deposits hang about the slyly special i|
-1057|76|F|108107.42|1992-02-20|1-URGENT|Clerk#000000124|0|cuses dazzle carefully careful, ironic pinto beans. carefully even theod|
-1058|53|F|89359.11|1993-04-26|3-MEDIUM|Clerk#000000373|0|kly pending courts haggle. blithely regular sheaves integrate carefully fi|
-1059|127|F|198360.22|1994-02-27|1-URGENT|Clerk#000000104|0|en accounts. carefully bold packages cajole daringly special depende|
-1060|140|F|121994.04|1993-02-21|3-MEDIUM|Clerk#000000989|0|l platelets sleep quickly slyly special requests. furiously |
-1061|103|O|166947.75|1998-05-15|5-LOW|Clerk#000000576|0|uests sleep at the packages. fur|
-1062|106|O|39805.04|1997-01-15|1-URGENT|Clerk#000000152|0|eposits use blithely |
-1063|37|F|41392.31|1994-04-02|2-HIGH|Clerk#000000024|0|deposits nag quickly regular deposits. quickl|
-1088|148|F|47120.41|1992-05-21|5-LOW|Clerk#000000347|0|counts are blithely. platelets print. carefully |
-1089|49|O|103192.74|1996-05-04|4-NOT SPECIFIED|Clerk#000000226|0|ns haggle ruthlessly. even requests are quickly abov|
-1090|19|O|32929.30|1997-11-15|2-HIGH|Clerk#000000300|0| furiously regular platelets haggle along the slyly unusual foxes! |
-1091|83|O|35795.22|1996-08-27|1-URGENT|Clerk#000000549|0| even pinto beans haggle quickly alongside of the eve|
-1092|124|P|85552.21|1995-03-04|3-MEDIUM|Clerk#000000006|0|re quickly along the blithe|
-1093|101|O|79189.58|1997-07-31|4-NOT SPECIFIED|Clerk#000000159|0| after the carefully ironic requests. carefully ironic packages wake fluffil|
-1094|145|O|9006.25|1997-12-24|3-MEDIUM|Clerk#000000570|0|beans affix furiously about the pending, even deposits. finally pendi|
-1095|145|O|178491.24|1995-08-22|3-MEDIUM|Clerk#000000709|0|sly bold requests cajole carefully according to|
-1120|140|O|107958.62|1997-11-07|3-MEDIUM|Clerk#000000319|0|lly special requests. slyly pending platelets are quickly pending requ|
-1121|29|O|241837.88|1997-01-13|3-MEDIUM|Clerk#000000541|0|r escapades. deposits above the fluffily bold requests hag|
-1122|121|O|179747.47|1997-01-10|1-URGENT|Clerk#000000083|0|uffily carefully final theodolites. furiously express packages affix|
-1123|73|O|93259.93|1996-08-03|3-MEDIUM|Clerk#000000929|0|uriously pending requests. slyly regular instruction|
-1124|80|O|141858.97|1998-07-30|5-LOW|Clerk#000000326|0|regular pinto beans along the fluffily silent packages|
-1125|25|F|80438.38|1994-10-27|2-HIGH|Clerk#000000510|0|ithely final requests. i|
-1126|145|O|59982.31|1998-01-28|4-NOT SPECIFIED|Clerk#000000928|0|d slyly regular ideas: special ideas believe slyly. slyly ironic sheaves w|
-1127|58|O|103320.91|1995-09-19|4-NOT SPECIFIED|Clerk#000000397|0|usly silent, regular pinto beans. blithely express requests boos|
-1152|49|F|51775.54|1994-08-14|4-NOT SPECIFIED|Clerk#000000496|0|equests. deposits ab|
-1153|121|O|220727.97|1996-04-18|5-LOW|Clerk#000000059|0| across the pending deposi|
-1154|37|F|192417.85|1992-02-15|1-URGENT|Clerk#000000268|0|old asymptotes are special requests. blithely even deposits sleep furiously|
-1155|149|O|126902.81|1997-10-06|2-HIGH|Clerk#000000164|0|c deposits haggle among the ironic, even requests. carefully ironic sheaves n|
-1156|133|O|217682.81|1996-10-19|1-URGENT|Clerk#000000200|0| blithely ironic dolphins. furiously pendi|
-1157|97|O|85394.06|1998-01-14|4-NOT SPECIFIED|Clerk#000000207|0|out the regular excuses boost carefully against the furio|
-1158|142|O|31075.51|1996-06-30|2-HIGH|Clerk#000000549|0|integrate slyly furiously ironic deposit|
-1159|70|F|55553.68|1992-09-18|3-MEDIUM|Clerk#000000992|0|ts may sleep. requests according to the|
-1184|89|O|39700.29|1997-10-26|5-LOW|Clerk#000000777|0|iously even packages haggle fluffily care|
-1185|74|F|47033.21|1992-08-24|5-LOW|Clerk#000000344|0| even escapades are. package|
-1186|59|O|82026.18|1996-08-15|4-NOT SPECIFIED|Clerk#000000798|0|ingly regular pinto beans: instructi|
-1187|134|F|85948.02|1992-11-20|3-MEDIUM|Clerk#000000047|0|s after the furiously final deposits boost slyly under the|
-1188|20|O|54655.07|1996-04-11|2-HIGH|Clerk#000000256|0|ully ironic deposits. slyl|
-1189|46|F|71017.99|1994-04-09|1-URGENT|Clerk#000000243|0|f the even accounts. courts print blithely ironic accounts. sile|
-1190|13|O|31043.39|1997-03-16|5-LOW|Clerk#000000575|0|ccounts above the foxes integrate carefully after the |
-1191|112|O|28623.04|1995-11-07|3-MEDIUM|Clerk#000000011|0|uests nag furiously. carefully even requests|
-1216|122|F|68056.57|1992-12-07|5-LOW|Clerk#000000918|0|nal foxes around the e|
-1217|7|F|40982.08|1992-04-26|4-NOT SPECIFIED|Clerk#000000538|0| foxes nag quickly. ironic excuses nod. blithely pending|
-1218|10|F|99834.47|1994-06-20|4-NOT SPECIFIED|Clerk#000000994|0|s cajole. special, silent deposits about the theo|
-1219|28|O|10163.56|1995-10-05|3-MEDIUM|Clerk#000000800|0|od carefully. slyly final dependencies across the even fray|
-1220|49|O|122157.14|1996-08-29|1-URGENT|Clerk#000000712|0|inal theodolites wake. fluffily ironic asymptotes cajol|
-1221|14|F|117397.16|1992-04-19|4-NOT SPECIFIED|Clerk#000000852|0| detect against the silent, even deposits. carefully ironic|
-1222|10|F|47623.94|1993-02-05|3-MEDIUM|Clerk#000000811|0|theodolites use quickly even accounts. carefully final asympto|
-1223|10|O|26714.67|1996-05-25|4-NOT SPECIFIED|Clerk#000000238|0|posits was blithely fr|
-1248|49|F|210713.88|1992-01-02|1-URGENT|Clerk#000000890|0|t the carefully regular dugouts. s|
-1249|149|F|45889.09|1994-01-05|1-URGENT|Clerk#000000095|0|al ideas sleep above the pending pin|
-1250|37|F|12907.62|1992-09-29|4-NOT SPECIFIED|Clerk#000000652|0|ts after the fluffily pending instructions use slyly about the s|
-1251|38|O|109536.55|1997-10-30|1-URGENT|Clerk#000000276|0|, brave sauternes. deposits boost fluffily.|
-1252|149|O|93403.05|1997-08-04|5-LOW|Clerk#000000348|0|ng the slyly regular excuses. special courts nag furiously blithely e|
-1253|115|F|92730.74|1993-01-26|1-URGENT|Clerk#000000775|0| requests sleep furiously even foxes. ruthless packag|
-1254|70|O|94649.25|1995-12-22|1-URGENT|Clerk#000000607|0| pinto beans. carefully regular request|
-1255|122|F|62518.31|1994-05-30|4-NOT SPECIFIED|Clerk#000000798|0|ct slyly regular accounts. quick|
-1280|97|F|91664.85|1993-01-11|5-LOW|Clerk#000000160|0|posits thrash quickly after the theodolites. furiously iro|
-1281|62|F|165454.51|1994-12-11|1-URGENT|Clerk#000000430|0|counts. carefully pending accounts eat |
-1282|116|F|61297.42|1992-02-29|4-NOT SPECIFIED|Clerk#000000168|0|he quickly special packages. furiously final re|
-1283|118|O|202623.92|1996-08-30|4-NOT SPECIFIED|Clerk#000000260|0| pinto beans boost slyly ac|
-1284|134|O|106122.38|1996-01-07|2-HIGH|Clerk#000000492|0|s. blithely silent deposits s|
-1285|11|F|139124.72|1992-06-01|1-URGENT|Clerk#000000423|0|cial deposits cajole after the ironic requests. p|
-1286|109|F|207291.83|1993-05-14|4-NOT SPECIFIED|Clerk#000000939|0| deposits use carefully from the excuses. slyly bold p|
-1287|19|F|131432.42|1994-07-05|2-HIGH|Clerk#000000288|0|ly ironic dolphins integrate furiously among the final packages. st|
-1312|112|F|58111.00|1994-05-19|3-MEDIUM|Clerk#000000538|0|n, express accounts across the ironic|
-1313|148|F|46598.65|1994-09-13|1-URGENT|Clerk#000000774|0|ld accounts. regular deposits cajole. ironically pending theodolites use car|
-1314|143|F|56207.66|1994-05-13|3-MEDIUM|Clerk#000000485|0|ickly blithe packages nod ideas. furiously bold braids boost around the car|
-1315|22|O|121935.23|1998-03-22|5-LOW|Clerk#000000840|0|final theodolites alongside of the carefu|
-1316|16|F|163746.47|1993-12-03|1-URGENT|Clerk#000000857|0|ully bold theodolites? pending, bold pin|
-1317|100|P|139714.71|1995-05-19|2-HIGH|Clerk#000000373|0|sts. furiously special deposits lose fur|
-1318|128|O|81663.65|1998-06-27|3-MEDIUM|Clerk#000000581|0|s hang bold requests. pending, re|
-1319|32|O|31103.83|1996-09-27|2-HIGH|Clerk#000000257|0|y across the ruthlessly ironic accounts. unusu|
-1344|17|F|43809.37|1992-04-16|5-LOW|Clerk#000000178|0|omise close, silent requests. pending theodolites boost pending |
-1345|95|F|111207.93|1992-10-28|5-LOW|Clerk#000000447|0| regular tithes. quickly fluffy de|
-1346|76|F|171975.62|1992-06-18|2-HIGH|Clerk#000000374|0|ges sleep quickly-- even pint|
-1347|41|O|173444.60|1997-06-20|5-LOW|Clerk#000000977|0|he furiously even foxes use carefully express req|
-1348|19|O|94135.77|1998-04-18|5-LOW|Clerk#000000206|0|tly. quickly even deposi|
-1349|64|O|46376.09|1997-10-26|1-URGENT|Clerk#000000543|0|yly! blithely special theodolites cajole. unusual, reg|
-1350|52|F|49305.98|1993-08-24|1-URGENT|Clerk#000000635|0|iously about the blithely special a|
-1351|106|O|24637.96|1998-04-20|1-URGENT|Clerk#000000012|0| cajole. regular, special re|
-1376|47|O|23984.88|1997-05-04|4-NOT SPECIFIED|Clerk#000000730|0|der furiously final, final frets. carefull|
-1377|20|O|108334.30|1998-04-24|4-NOT SPECIFIED|Clerk#000000625|0|lly across the blithely express accounts. ironic excuses promise carefully de|
-1378|20|O|118495.12|1996-03-09|4-NOT SPECIFIED|Clerk#000000705|0| furiously even tithes cajole slyly among the quick|
-1379|65|O|84627.76|1998-05-25|5-LOW|Clerk#000000861|0|y deposits are caref|
-1380|137|O|94969.41|1996-07-07|3-MEDIUM|Clerk#000000969|0|inal deposits wake slyly daringly even requests. bold, even foxe|
-1381|127|O|58212.22|1998-05-25|3-MEDIUM|Clerk#000000107|0|even requests breach after the bold, ironic instructions. slyly even|
-1382|133|F|173522.71|1993-08-17|5-LOW|Clerk#000000241|0|fully final packages sl|
-1383|121|F|34797.72|1993-04-27|2-HIGH|Clerk#000000785|0|ts. express requests sleep blithel|
-1408|55|O|183965.61|1997-12-26|4-NOT SPECIFIED|Clerk#000000942|0|t the quickly final asymptotes. unusual|
-1409|143|F|72440.52|1992-12-31|4-NOT SPECIFIED|Clerk#000000065|0|ructions. furiously unusual excuses are regular, unusual theodolites. fin|
-1410|113|O|114879.19|1997-04-12|5-LOW|Clerk#000000123|0|iously along the bravely regular dolphins. pinto beans cajole furiously sp|
-1411|95|F|164462.61|1994-12-21|2-HIGH|Clerk#000000566|0|s. furiously special excuses across the pending pinto beans haggle sp|
-1412|53|F|78676.54|1993-03-13|4-NOT SPECIFIED|Clerk#000000083|0|uffily daring theodolit|
-1413|91|O|75733.58|1997-06-14|3-MEDIUM|Clerk#000000342|0|, ironic instructions. carefully even packages dazzle|
-1414|77|O|38057.81|1995-08-16|1-URGENT|Clerk#000000883|0|ccounts. ironic foxes haggle car|
-1415|79|F|24654.79|1994-05-29|4-NOT SPECIFIED|Clerk#000000601|0|rays. blithely final ideas affix quickl|
-1440|98|O|50201.16|1995-08-10|5-LOW|Clerk#000000956|0| pending requests. closely s|
-1441|122|O|156477.94|1997-03-06|4-NOT SPECIFIED|Clerk#000000156|0|ter the excuses. ironic dependencies m|
-1442|112|F|7108.12|1994-07-05|4-NOT SPECIFIED|Clerk#000000935|0|nal pinto beans. slyly ironic ideas cajol|
-1443|44|O|44672.03|1996-12-16|5-LOW|Clerk#000000185|0|x blithely against the carefully final somas. even asymptotes are. quickly spe|
-1444|134|F|207907.60|1994-12-06|3-MEDIUM|Clerk#000000783|0|ove the bold accounts cajole fluffily about|
-1445|115|F|154653.32|1995-01-10|3-MEDIUM|Clerk#000000211|0|even packages wake fluffily |
-1446|41|O|27663.16|1998-02-16|5-LOW|Clerk#000000274|0|lly regular notornis above the requests sleep final accounts! |
-1447|91|F|108171.38|1992-10-15|2-HIGH|Clerk#000000880|0|inly against the blithely pending excuses. regular, pe|
-1472|149|O|65331.05|1996-10-06|5-LOW|Clerk#000000303|0|y special dolphins around the final dependencies wake quick|
-1473|94|O|80624.38|1997-03-17|3-MEDIUM|Clerk#000000960|0|furiously close accoun|
-1474|70|F|51697.18|1995-01-09|1-URGENT|Clerk#000000438|0|detect quickly above the carefully even |
-1475|5|O|185496.66|1997-11-12|2-HIGH|Clerk#000000972|0|cally final packages boost. blithely ironic packa|
-1476|145|O|18795.62|1996-06-27|2-HIGH|Clerk#000000673|0|ding accounts hinder alongside of the quickly pending requests. fluf|
-1477|76|O|231831.35|1997-08-24|5-LOW|Clerk#000000612|0|ly bold foxes. final ideas would cajo|
-1478|50|O|20791.50|1997-08-03|2-HIGH|Clerk#000000827|0|lessly. carefully express|
-1479|16|O|31471.04|1995-12-16|4-NOT SPECIFIED|Clerk#000000697|0|he furiously even foxes. thinly bold deposits|
-1504|2|F|89399.40|1992-08-28|3-MEDIUM|Clerk#000000381|0|, brave deposits. bold de|
-1505|37|F|55892.35|1992-08-21|2-HIGH|Clerk#000000544|0|s. slyly ironic packages cajole. carefully regular packages haggle |
-1506|148|F|195844.84|1992-09-21|3-MEDIUM|Clerk#000000620|0| dependencies. accounts affix blithely slowly unusual deposits. slyly regular |
-1507|121|F|96166.92|1993-10-14|3-MEDIUM|Clerk#000000305|0|stealthy, ironic de|
-1508|103|O|151282.65|1998-04-10|5-LOW|Clerk#000000117|0| after the furiously regular pinto beans hang slyly quickly ironi|
-1509|64|F|180455.98|1993-07-08|5-LOW|Clerk#000000770|0|the regular ideas. regul|
-1510|53|O|154590.05|1996-09-17|5-LOW|Clerk#000000128|0|ld carefully. furiously final asymptotes haggle furiously|
-1511|79|O|59651.38|1996-12-22|4-NOT SPECIFIED|Clerk#000000386|0|ts above the depend|
-1536|94|O|5184.26|1997-01-26|3-MEDIUM|Clerk#000000117|0|ges are! furiously final deposits cajole iron|
-1537|109|F|108317.51|1992-02-15|4-NOT SPECIFIED|Clerk#000000862|0|g to the even deposits. ironic, final packages |
-1538|29|O|179554.41|1995-06-18|4-NOT SPECIFIED|Clerk#000000258|0| instructions. regular theod|
-1539|112|F|39612.63|1995-03-10|5-LOW|Clerk#000000840|0|nstructions boost pa|
-1540|16|F|128014.15|1992-08-05|2-HIGH|Clerk#000000927|0|r ideas hinder blithe|
-1541|94|P|47286.32|1995-05-18|1-URGENT|Clerk#000000906|0|y. slyly ironic warhorses around the furiously regul|
-1542|143|F|132972.24|1993-09-15|3-MEDIUM|Clerk#000000435|0|t the furiously close deposits do was f|
-1543|52|O|139047.22|1997-02-20|1-URGENT|Clerk#000000398|0|unts. furiously pend|
-1568|17|O|76119.72|1997-01-30|4-NOT SPECIFIED|Clerk#000000554|0|d notornis. carefully |
-1569|104|O|87803.55|1998-04-02|5-LOW|Clerk#000000786|0|orbits. fluffily even decoys serve blithely. furiously furious realms nag acro|
-1570|124|O|35589.57|1998-03-16|1-URGENT|Clerk#000000745|0|pinto beans haggle furiousl|
-1571|103|F|151404.78|1992-12-05|2-HIGH|Clerk#000000565|0|ously furiously bold warthogs. slyly ironic instructions are quickly a|
-1572|11|O|47232.79|1996-02-24|2-HIGH|Clerk#000000994|0|fluffily ironic accounts haggle blithely final platelets! slyly regular foxes|
-1573|148|F|86918.57|1992-12-28|2-HIGH|Clerk#000000940|0|ess, ironic deposits use along the carefu|
-1574|134|O|179923.54|1996-12-12|3-MEDIUM|Clerk#000000809|0| ideas hinder after the carefully unusual |
-1575|145|O|197031.52|1995-09-13|3-MEDIUM|Clerk#000000497|0|. furiously regular dep|
-1600|94|F|130515.61|1993-03-03|3-MEDIUM|Clerk#000000627|0|tions cajole quietly above the regular, silent requests. slyly fin|
-1601|53|F|73962.95|1994-08-27|5-LOW|Clerk#000000469|0|ent deposits are ca|
-1602|1|F|4225.26|1993-08-05|5-LOW|Clerk#000000660|0|deposits. busily silent instructions haggle furiously. fin|
-1603|2|F|29305.47|1993-07-31|4-NOT SPECIFIED|Clerk#000000869|0|s. slyly silent deposits boo|
-1604|113|F|107139.29|1993-07-17|5-LOW|Clerk#000000512|0|lithely silent waters. blithely unusual packages alongside |
-1605|58|O|130687.64|1998-04-24|4-NOT SPECIFIED|Clerk#000000616|0|sleep furiously? ruthless, even pinto beans |
-1606|53|O|115877.40|1997-04-17|4-NOT SPECIFIED|Clerk#000000550|0|r requests. quickly even platelets breach before the ironically|
-1607|149|O|166335.03|1995-12-16|2-HIGH|Clerk#000000498|0| bold, pending foxes haggle. slyly silent |
-1632|67|O|183286.33|1997-01-08|3-MEDIUM|Clerk#000000351|0|onic requests are accounts. bold a|
-1633|16|O|52359.51|1995-10-14|2-HIGH|Clerk#000000666|0|y silent accounts sl|
-1634|70|O|145898.47|1996-09-10|1-URGENT|Clerk#000000360|0|arefully blithely ironic requests. slyly unusual instructions alongside|
-1635|4|O|70232.26|1997-02-13|3-MEDIUM|Clerk#000000958|0|s. slyly ironic requests affix slyly |
-1636|79|O|172021.87|1997-06-17|3-MEDIUM|Clerk#000000457|0|ding requests. slyly ironic courts wake quickl|
-1637|73|F|180912.15|1995-02-08|4-NOT SPECIFIED|Clerk#000000189|0| final accounts. blithely silent ideas cajole bravely. carefully express |
-1638|139|O|172436.30|1997-08-13|2-HIGH|Clerk#000000643|0|he fluffily regular asymp|
-1639|5|O|104166.56|1995-08-20|4-NOT SPECIFIED|Clerk#000000939|0|haggle furiously. final requests detect furious|
-1664|64|O|178060.22|1996-03-03|1-URGENT|Clerk#000000090|0|y quickly even asymptotes. furiously regular packages haggle quickly fin|
-1665|76|F|4819.91|1994-05-08|2-HIGH|Clerk#000000920|0|ly regular packages are fluffily even ideas. fluffily final|
-1666|95|O|128367.97|1995-10-18|1-URGENT|Clerk#000000849|0|ffily pending dependencies wake fluffily. pending, final accounts |
-1667|5|O|125030.37|1997-10-10|2-HIGH|Clerk#000000103|0|e accounts. slyly express accounts must are a|
-1668|142|O|137576.19|1997-07-12|4-NOT SPECIFIED|Clerk#000000148|0|eodolites. carefully dogged dolphins haggle q|
-1669|2|O|24362.39|1997-06-09|3-MEDIUM|Clerk#000000663|0|er ironic requests detect furiously blithely sp|
-1670|25|O|89999.72|1997-05-24|2-HIGH|Clerk#000000320|0|unusual dependencies. furiously special platelets main|
-1671|35|O|104391.11|1996-07-27|4-NOT SPECIFIED|Clerk#000000275|0|ly. slyly pending requests was above the |
-1696|4|O|102665.03|1998-01-08|4-NOT SPECIFIED|Clerk#000000041|0|bravely bold accounts above the quickly bold|
-1697|76|O|122621.31|1996-10-07|1-URGENT|Clerk#000000815|0|o x-ray blithely. pl|
-1698|40|O|141118.87|1997-04-23|2-HIGH|Clerk#000000432|0|slyly. carefully express deposit|
-1699|85|F|66408.29|1993-12-30|1-URGENT|Clerk#000000125|0|jole blithely. furiously un|
-1700|65|O|89143.36|1996-06-15|3-MEDIUM|Clerk#000000328|0|ely final dolphins wake sometimes above the quietly regular deposits. fur|
-1701|130|F|72835.95|1992-05-19|2-HIGH|Clerk#000000395|0|furiously. regular, close theodoli|
-1702|67|P|194119.31|1995-05-07|2-HIGH|Clerk#000000300|0|around the carefully final deposits cajole carefully according to the b|
-1703|134|F|121220.59|1993-01-28|3-MEDIUM|Clerk#000000463|0| pinto beans poach. bold courts boost. regular, express deposits at|
-1728|64|O|131604.34|1996-05-22|2-HIGH|Clerk#000000711|0|beans. slyly regular instructions sleep! slyly final packages|
-1729|133|F|12137.76|1992-05-19|2-HIGH|Clerk#000000158|0|pending foxes wake. accounts|
-1730|124|O|150886.49|1998-07-24|5-LOW|Clerk#000000794|0| fluffily pending deposits serve. furiously even requests wake furiou|
-1731|128|O|190490.78|1996-01-06|1-URGENT|Clerk#000000268|0|lithely regular, final instructions. ironic, express packages are above|
-1732|146|F|179854.51|1993-11-29|5-LOW|Clerk#000000903|0|inal requests integrate dolph|
-1733|148|O|165489.52|1996-05-12|2-HIGH|Clerk#000000789|0|e carefully according to the accounts. furiously pending instructions sleep|
-1734|7|F|44002.53|1994-06-11|2-HIGH|Clerk#000000722|0| final ideas haggle. blithely quick foxes sleep busily bold ideas. i|
-1735|22|F|98541.95|1992-12-27|1-URGENT|Clerk#000000458|0|ully idle requests wake qu|
-1760|115|O|82151.12|1996-05-17|5-LOW|Clerk#000000917|0| deposits. busily regular deposits wake blithely along the furiously even re|
-1761|106|F|211925.95|1993-12-24|2-HIGH|Clerk#000000817|0|efully slyly bold frets. packages boost b|
-1762|77|F|202227.17|1994-08-20|4-NOT SPECIFIED|Clerk#000000653|0|ly ironic packages. furi|
-1763|121|O|140685.01|1996-10-29|2-HIGH|Clerk#000000321|0|es. bold dependencies haggle furiously along |
-1764|29|F|47384.71|1992-03-25|1-URGENT|Clerk#000000182|0|. slyly final packages integrate carefully acro|
-1765|73|O|36551.43|1995-12-03|4-NOT SPECIFIED|Clerk#000000490|0| regular excuses wake slyly|
-1766|139|O|41032.81|1996-10-12|2-HIGH|Clerk#000000983|0|unusual deposits affix quickly beyond the carefully s|
-1767|25|P|136582.60|1995-03-14|2-HIGH|Clerk#000000327|0|eposits use carefully carefully regular platelets. quickly regular packages al|
-1792|49|F|107919.86|1993-11-09|5-LOW|Clerk#000000102|0|ructions haggle along the pending packages. carefully speci|
-1793|19|F|82504.56|1992-07-12|4-NOT SPECIFIED|Clerk#000000291|0|regular packages cajole. blithely special packages according to the final d|
-1794|140|O|179462.21|1997-09-28|1-URGENT|Clerk#000000686|0|ally silent pinto beans. regular package|
-1795|94|F|146849.33|1994-03-19|2-HIGH|Clerk#000000815|0| quickly final packages! blithely dogged accounts c|
-1796|47|F|33755.47|1992-11-21|2-HIGH|Clerk#000000245|0|eans use furiously around th|
-1797|125|O|51494.47|1996-05-07|3-MEDIUM|Clerk#000000508|0|quiet platelets haggle since the quickly ironic instructi|
-1798|52|O|46393.97|1997-07-28|1-URGENT|Clerk#000000741|0|al foxes are blithe|
-1799|61|F|46815.93|1994-03-07|4-NOT SPECIFIED|Clerk#000000339|0|ns sleep furiously final waters. blithely regular instructions h|
-1824|49|F|81351.53|1994-05-05|1-URGENT|Clerk#000000972|0|e blithely fluffily|
-1825|148|F|150582.77|1993-12-05|3-MEDIUM|Clerk#000000345|0|ironic, final accou|
-1826|82|F|124719.97|1992-04-16|4-NOT SPECIFIED|Clerk#000000718|0|the even asymptotes dazzle fluffily slyly regular asymptotes. final, unu|
-1827|106|O|210113.88|1996-06-22|4-NOT SPECIFIED|Clerk#000000369|0|luffily even requests haggle sly|
-1828|32|F|137369.50|1994-04-18|3-MEDIUM|Clerk#000000840|0|y quickly bold packag|
-1829|112|F|127532.20|1994-05-08|2-HIGH|Clerk#000000537|0| accounts wake above the furiously unusual requests. pending package|
-1830|133|F|85122.24|1995-02-23|1-URGENT|Clerk#000000045|0|according to the even,|
-1831|71|F|58032.77|1993-12-02|1-URGENT|Clerk#000000854|0| accounts. carefully even accounts boost furiously. regular ideas engage. |
-1856|106|F|189361.42|1992-03-20|4-NOT SPECIFIED|Clerk#000000952|0|. special pinto beans run acr|
-1857|133|F|102793.59|1993-01-13|2-HIGH|Clerk#000000083|0|hely final ideas slee|
-1858|143|O|30457.91|1997-12-13|1-URGENT|Clerk#000000389|0|thely. slyly final deposits sleep|
-1859|61|O|105094.09|1997-04-11|4-NOT SPECIFIED|Clerk#000000949|0| the foxes. bravely special excuses nag carefully special r|
-1860|10|O|9103.40|1996-04-04|3-MEDIUM|Clerk#000000556|0|osits. quickly bold deposits according to |
-1861|70|F|95063.41|1994-01-03|3-MEDIUM|Clerk#000000847|0|r the fluffily close sauternes. furio|
-1862|34|O|97981.06|1998-02-24|5-LOW|Clerk#000000348|0|ts snooze ironically abou|
-1863|74|F|96359.65|1993-09-23|4-NOT SPECIFIED|Clerk#000000658|0|old sentiments. careful, |
-1888|121|F|224724.11|1993-10-31|4-NOT SPECIFIED|Clerk#000000659|0|olites. pinto beans cajole. regular deposits affix. slyly regular|
-1889|25|O|96431.77|1997-03-16|1-URGENT|Clerk#000000854|0|p around the regular notornis. unusual deposits|
-1890|10|O|202364.58|1996-12-18|4-NOT SPECIFIED|Clerk#000000627|0|romise final, regular deposits. regular fox|
-1891|61|F|76848.96|1994-12-15|5-LOW|Clerk#000000495|0|unusual foxes sleep regular deposits. requests wake special pac|
-1892|25|F|133273.64|1994-03-26|5-LOW|Clerk#000000733|0|sts. slyly regular dependencies use slyly. ironic, spec|
-1893|125|O|116792.13|1997-10-30|2-HIGH|Clerk#000000111|0|olites. silent, special deposits eat slyly quickly express packages; hockey p|
-1894|76|F|44387.23|1992-03-30|1-URGENT|Clerk#000000626|0|e furiously. furiously even accounts are slyly final accounts. closely speci|
-1895|7|F|44429.81|1994-05-30|3-MEDIUM|Clerk#000000878|0|ress accounts. bold accounts cajole. slyly final pinto beans poach regul|
-1920|110|O|119605.91|1998-06-24|5-LOW|Clerk#000000018|0|hely; furiously regular excuses|
-1921|88|F|57584.12|1994-01-18|3-MEDIUM|Clerk#000000293|0|counts. slyly quiet requests along the ruthlessly regular accounts are |
-1922|56|O|11575.77|1996-07-13|3-MEDIUM|Clerk#000000984|0|side of the blithely final re|
-1923|136|O|171128.10|1997-07-07|1-URGENT|Clerk#000000471|0| express dolphins. |
-1924|76|O|169756.19|1996-09-07|4-NOT SPECIFIED|Clerk#000000823|0| of the ironic accounts. instructions near the final instr|
-1925|17|F|146382.71|1992-03-05|1-URGENT|Clerk#000000986|0|e slyly regular deposits. furiously |
-1926|94|O|100035.03|1996-01-31|2-HIGH|Clerk#000000568|0|cajole. even warhorses sleep carefully. |
-1927|140|O|23327.88|1995-09-30|3-MEDIUM|Clerk#000000616|0|riously special packages. permanent pearls wake furiously. even packages alo|
-1952|67|F|12896.25|1994-03-16|2-HIGH|Clerk#000000254|0| silent accounts boost |
-1953|149|F|57213.18|1993-11-30|3-MEDIUM|Clerk#000000891|0| fluffily along the quickly even packages. |
-1954|56|O|158853.63|1997-05-31|4-NOT SPECIFIED|Clerk#000000104|0| unusual excuses cajole according to the blithely regular theodolites.|
-1955|13|F|103085.13|1992-04-20|1-URGENT|Clerk#000000792|0|ly special ideas. sometimes final |
-1956|127|F|88704.26|1992-09-20|4-NOT SPECIFIED|Clerk#000000600|0|ironic ideas are silent ideas. furiously final deposits sleep slyly carefu|
-1957|31|O|77482.87|1998-07-21|2-HIGH|Clerk#000000639|0|nding excuses about the |
-1958|53|O|176294.34|1995-09-22|5-LOW|Clerk#000000343|0| haggle blithely. flu|
-1959|43|O|62277.18|1997-01-13|4-NOT SPECIFIED|Clerk#000000631|0| cajole about the blithely express requests. even excuses mold bl|
-1984|52|O|79230.47|1998-04-01|1-URGENT|Clerk#000000416|0| slyly special instructions. unusual foxes use packages. carefully regular req|
-1985|7|F|171522.54|1994-09-02|4-NOT SPECIFIED|Clerk#000000741|0|slyly slyly even pains. slyly reg|
-1986|149|F|34269.96|1994-05-05|2-HIGH|Clerk#000000609|0|across the theodolites. quick|
-1987|100|F|6406.29|1994-04-30|2-HIGH|Clerk#000000652|0|gular platelets alongside |
-1988|109|O|117132.72|1995-10-06|4-NOT SPECIFIED|Clerk#000000011|0|ly ironic dolphins serve quickly busy accounts. bu|
-1989|118|F|39263.28|1994-03-16|4-NOT SPECIFIED|Clerk#000000747|0|ely bold pinto beans ha|
-1990|119|F|48781.39|1994-12-16|2-HIGH|Clerk#000000114|0|e bold patterns. always regul|
-1991|19|F|139854.41|1992-09-07|4-NOT SPECIFIED|Clerk#000000854|0|ing accounts can haggle at the carefully final Tiresias-- pending, regular|
-2016|8|O|24347.36|1996-08-16|3-MEDIUM|Clerk#000000641|0|the carefully ironic foxes. requests nag bold, r|
-2017|101|O|70529.27|1998-05-13|3-MEDIUM|Clerk#000000427|0|nusual requests. blit|
-2018|19|P|25007.95|1995-04-05|4-NOT SPECIFIED|Clerk#000000920|0|gular accounts wake fur|
-2019|136|F|43789.14|1992-10-23|1-URGENT|Clerk#000000565|0| furiously bold packages. fluffily fi|
-2020|73|F|136162.13|1993-06-21|3-MEDIUM|Clerk#000000192|0|es. furiously regular packages above the furiously special theodolites are a|
-2021|70|O|27016.74|1995-07-15|1-URGENT|Clerk#000000155|0|ong the furiously regular requests. unusual deposits wake fluffily inside|
-2022|62|F|206742.11|1992-03-15|1-URGENT|Clerk#000000268|0| dependencies sleep fluffily even, ironic deposits. express, silen|
-2023|118|F|144123.37|1992-05-06|5-LOW|Clerk#000000137|0|ular courts engage according to the|
-2048|17|F|33401.77|1993-11-15|1-URGENT|Clerk#000000934|0|s cajole after the blithely final accounts. f|
-2049|31|O|153048.74|1995-12-07|2-HIGH|Clerk#000000859|0|ly regular requests thrash blithely about the fluffily even theodolites. r|
-2050|28|F|208517.98|1994-06-02|4-NOT SPECIFIED|Clerk#000000821|0|d accounts against the furiously regular packages use bli|
-2051|40|O|87988.34|1996-03-18|4-NOT SPECIFIED|Clerk#000000333|0|ctions sleep blithely. blithely regu|
-2052|91|F|141822.19|1992-04-13|2-HIGH|Clerk#000000767|0| requests sleep around the even, even courts. ironic theodolites affix furious|
-2053|142|F|125125.57|1995-02-07|1-URGENT|Clerk#000000717|0|ar requests: blithely sly accounts boost carefully across t|
-2054|41|F|144335.16|1992-06-08|4-NOT SPECIFIED|Clerk#000000103|0|l requests affix carefully about the furiously special|
-2055|97|F|57092.26|1993-09-04|1-URGENT|Clerk#000000067|0|. warhorses affix slyly blithely express instructions? fur|
-2080|95|F|45767.69|1993-06-18|5-LOW|Clerk#000000190|0|ironic, pending theodolites are carefully about the quickly regular theodolite|
-2081|121|O|145654.97|1997-07-05|2-HIGH|Clerk#000000136|0|ong the regular theo|
-2082|49|F|46753.63|1995-01-10|2-HIGH|Clerk#000000354|0|cial accounts. ironic, express dolphins nod slyly sometimes final reques|
-2083|101|F|31795.52|1993-07-14|3-MEDIUM|Clerk#000000361|0|al patterns. bold, final foxes nag bravely about the furiously express|
-2084|80|F|190652.53|1993-03-17|2-HIGH|Clerk#000000048|0|zle furiously final, careful packages. slyly ironic ideas amo|
-2085|49|F|45311.07|1993-11-21|3-MEDIUM|Clerk#000000818|0|ress, express ideas haggle|
-2086|142|F|188985.18|1994-10-19|1-URGENT|Clerk#000000046|0| permanently regular|
-2087|50|O|53581.41|1998-01-31|2-HIGH|Clerk#000000626|0|e always regular packages nod against the furiously spec|
-2112|64|O|17986.15|1997-02-05|2-HIGH|Clerk#000000351|0|against the slyly even id|
-2113|32|O|65678.21|1997-11-08|2-HIGH|Clerk#000000527|0|slyly regular instruct|
-2114|79|F|106446.02|1995-01-16|5-LOW|Clerk#000000751|0|r, unusual accounts haggle across the busy platelets. carefully |
-2115|106|O|134814.65|1998-05-23|4-NOT SPECIFIED|Clerk#000000101|0|odolites boost. carefully regular excuses cajole. quickly ironic pinto be|
-2116|23|F|60887.90|1994-08-26|1-URGENT|Clerk#000000197|0|efully after the asymptotes. furiously sp|
-2117|22|O|145713.03|1997-04-26|2-HIGH|Clerk#000000887|0|ely even dependencies. regular foxes use blithely.|
-2118|134|O|38974.67|1996-10-09|1-URGENT|Clerk#000000196|0|ial requests wake carefully special packages. f|
-2119|64|O|34632.57|1996-08-20|2-HIGH|Clerk#000000434|0|uickly pending escapades. fluffily ir|
-2144|136|F|119917.28|1994-03-29|3-MEDIUM|Clerk#000000546|0|t. carefully quick requests across the deposits wake regu|
-2145|134|F|18885.35|1992-10-03|1-URGENT|Clerk#000000886|0|sts would snooze blithely alongside of th|
-2146|118|F|179686.07|1992-09-14|4-NOT SPECIFIED|Clerk#000000476|0|ven packages. dependencies wake slyl|
-2147|100|F|91513.79|1992-09-06|4-NOT SPECIFIED|Clerk#000000424|0| haggle carefully furiously final foxes. pending escapades thrash. bold theod|
-2148|130|F|19612.03|1995-04-19|4-NOT SPECIFIED|Clerk#000000517|0|ross the furiously unusual theodolites. always expre|
-2149|101|F|105145.40|1993-03-13|5-LOW|Clerk#000000555|0|nusual accounts nag furiously special reques|
-2150|82|F|166961.06|1994-06-03|3-MEDIUM|Clerk#000000154|0|ect slyly against the even, final packages. quickly regular pinto beans wake c|
-2151|58|O|124608.69|1996-11-11|3-MEDIUM|Clerk#000000996|0|c requests. ironic platelets cajole across the quickly fluffy deposits.|
-2176|104|F|87248.17|1992-11-10|1-URGENT|Clerk#000000195|0|s haggle regularly accor|
-2177|136|O|183493.42|1997-01-20|3-MEDIUM|Clerk#000000161|0|ove the blithely unusual packages cajole carefully fluffily special request|
-2178|8|O|79594.68|1996-12-12|3-MEDIUM|Clerk#000000656|0|thely according to the instructions. furious|
-2179|41|O|77487.09|1996-09-07|2-HIGH|Clerk#000000935|0|ounts alongside of the furiously unusual braids cajol|
-2180|76|O|208481.57|1996-09-14|4-NOT SPECIFIED|Clerk#000000650|0|xpress, unusual pains. furiously ironic excu|
-2181|76|O|100954.64|1995-09-13|3-MEDIUM|Clerk#000000814|0|y against the ironic, even|
-2182|23|F|116003.11|1994-04-05|2-HIGH|Clerk#000000071|0|ccounts. quickly bold deposits across the excuses sl|
-2183|113|O|49841.12|1996-06-22|1-URGENT|Clerk#000000287|0| among the express, ironic packages. slyly ironic platelets integrat|
-2208|68|P|245388.06|1995-05-01|4-NOT SPECIFIED|Clerk#000000900|0|symptotes wake slyly blithely unusual packages.|
-2209|91|F|129086.93|1992-07-10|2-HIGH|Clerk#000000056|0|er above the slyly silent requests. furiously reg|
-2210|32|F|31689.46|1992-01-16|2-HIGH|Clerk#000000941|0| believe carefully quickly express pinto beans. deposi|
-2211|92|F|140031.23|1994-06-30|2-HIGH|Clerk#000000464|0|ffily bold courts e|
-2212|118|F|17231.05|1994-03-23|3-MEDIUM|Clerk#000000954|0|structions above the unusual requests use fur|
-2213|122|F|146136.10|1993-01-15|4-NOT SPECIFIED|Clerk#000000598|0|osits are carefully reg|
-2214|115|O|150345.63|1998-05-05|3-MEDIUM|Clerk#000000253|0|packages. fluffily even accounts haggle blithely. carefully ironic depen|
-2215|40|O|108239.46|1996-06-16|4-NOT SPECIFIED|Clerk#000000817|0|le final, final foxes. quickly regular gifts are carefully deposit|
-2240|56|F|174090.30|1992-03-06|4-NOT SPECIFIED|Clerk#000000622|0|accounts against the slyly express foxes are after the slyly regular |
-2241|103|F|165219.08|1993-05-11|1-URGENT|Clerk#000000081|0|y about the silent excuses. furiously ironic instructions along the sil|
-2242|82|O|15082.82|1997-07-20|4-NOT SPECIFIED|Clerk#000000360|0| pending multipliers. carefully express asymptotes use quickl|
-2243|49|O|10451.97|1995-06-10|2-HIGH|Clerk#000000813|0|ously regular deposits integrate s|
-2244|127|F|21207.08|1993-01-09|1-URGENT|Clerk#000001000|0|ckages. ironic, ironic accounts haggle blithely express excuses. |
-2245|58|F|150585.73|1993-04-28|3-MEDIUM|Clerk#000000528|0|ake carefully. braids haggle slyly quickly b|
-2246|113|O|85755.84|1996-05-27|4-NOT SPECIFIED|Clerk#000000739|0| final gifts sleep |
-2247|95|F|13491.31|1992-08-02|4-NOT SPECIFIED|Clerk#000000947|0|furiously regular packages. final brai|
-2272|139|F|127934.71|1993-04-13|2-HIGH|Clerk#000000449|0|s. bold, ironic pinto beans wake. silently specia|
-2273|136|O|142291.79|1996-12-14|5-LOW|Clerk#000000155|0|uickly express foxes haggle quickly against|
-2274|104|F|58273.89|1993-09-04|4-NOT SPECIFIED|Clerk#000000258|0|nstructions try to hag|
-2275|149|F|37398.90|1992-10-22|4-NOT SPECIFIED|Clerk#000000206|0| furiously furious platelets. slyly final packa|
-2276|43|O|141159.63|1996-04-29|4-NOT SPECIFIED|Clerk#000000821|0|ecial requests. fox|
-2277|89|F|79270.23|1995-01-02|4-NOT SPECIFIED|Clerk#000000385|0|accounts cajole. even i|
-2278|142|O|101878.46|1998-04-25|3-MEDIUM|Clerk#000000186|0|r pinto beans integrate after the carefully even deposits. blit|
-2279|80|F|142322.33|1993-02-23|3-MEDIUM|Clerk#000000898|0|de of the quickly unusual instructio|
-2304|46|F|93769.28|1994-01-07|4-NOT SPECIFIED|Clerk#000000415|0|onic platelets. ironic packages haggle. packages nag doggedly according to|
-2305|43|F|122964.66|1993-01-26|2-HIGH|Clerk#000000440|0|ove the furiously even acco|
-2306|28|O|244704.23|1995-07-26|2-HIGH|Clerk#000000975|0| wake furiously requests. permanent requests affix. final packages caj|
-2307|106|F|59417.76|1993-06-29|5-LOW|Clerk#000000952|0|furiously even asymptotes? carefully regular accounts|
-2308|25|F|58546.02|1992-10-25|4-NOT SPECIFIED|Clerk#000000609|0|ts. slyly final depo|
-2309|100|O|146933.07|1995-09-04|5-LOW|Clerk#000000803|0|he carefully pending packages. fluffily stealthy foxes engage carefully|
-2310|31|O|82928.12|1996-09-20|5-LOW|Clerk#000000917|0|wake carefully. unusual instructions nag ironic, regular excuse|
-2311|73|P|153233.93|1995-05-02|2-HIGH|Clerk#000000761|0|ly pending asymptotes-- furiously bold excus|
-2336|142|O|22294.51|1996-01-07|4-NOT SPECIFIED|Clerk#000000902|0|c, final excuses sleep furiously among the even theodolites. f|
-2337|142|O|45704.96|1997-06-18|4-NOT SPECIFIED|Clerk#000000754|0| quickly. final accounts haggle. carefully final acco|
-2338|140|O|28155.92|1997-09-15|2-HIGH|Clerk#000000951|0|riously final dugouts. final, ironic packages wake express, ironic id|
-2339|109|F|63470.78|1993-12-15|5-LOW|Clerk#000000847|0| against the regular |
-2340|65|O|30778.78|1996-01-12|1-URGENT|Clerk#000000964|0|ter the deposits sleep according to the slyly regular packages. carefully |
-2341|82|F|55950.21|1993-05-30|5-LOW|Clerk#000000443|0|sts-- blithely bold dolphins through the deposits nag blithely carefully re|
-2342|37|O|104038.78|1996-06-09|1-URGENT|Clerk#000000615|0|oost carefully across the regular accounts. blithely final d|
-2343|73|O|85381.00|1995-08-21|3-MEDIUM|Clerk#000000170|0|fluffily over the slyly special deposits. quickl|
-2368|13|F|101240.96|1993-08-20|1-URGENT|Clerk#000000830|0|t the bold instructions. carefully unusual |
-2369|110|O|73517.91|1996-12-24|2-HIGH|Clerk#000000752|0|iously even requests are dogged, express |
-2370|142|F|73924.21|1994-01-17|1-URGENT|Clerk#000000231|0|lyly final packages. quickly final deposits haggl|
-2371|19|O|193857.67|1998-01-07|1-URGENT|Clerk#000000028|0|ckages haggle at th|
-2372|31|O|104927.66|1997-11-21|5-LOW|Clerk#000000342|0|s: deposits haggle along the final ideas. careful|
-2373|28|F|55211.04|1994-03-12|4-NOT SPECIFIED|Clerk#000000306|0| even, special courts grow quickly. pending,|
-2374|4|F|115219.88|1993-10-29|4-NOT SPECIFIED|Clerk#000000081|0| blithely regular packages. blithely unusua|
-2375|5|O|106612.48|1996-11-20|3-MEDIUM|Clerk#000000197|0|unusual, pending theodolites cajole carefully |
-2400|37|O|92798.66|1998-07-25|5-LOW|Clerk#000000782|0|nusual courts nag against the carefully unusual pinto b|
-2401|148|O|88448.24|1997-07-29|4-NOT SPECIFIED|Clerk#000000531|0|ully unusual instructions boost carefully silently regular requests. |
-2402|67|O|70403.62|1996-09-06|4-NOT SPECIFIED|Clerk#000000162|0|slyly final sheaves sleep slyly. q|
-2403|55|O|111020.79|1998-04-11|3-MEDIUM|Clerk#000000820|0|furiously regular deposits use. furiously unusual accounts wake along the |
-2404|77|O|109077.69|1997-03-13|4-NOT SPECIFIED|Clerk#000000409|0|deposits breach furiously. ironic foxes haggle carefully bold packag|
-2405|73|O|115929.14|1996-12-23|3-MEDIUM|Clerk#000000535|0|ular, regular asympto|
-2406|7|O|182516.77|1996-10-28|5-LOW|Clerk#000000561|0|blithely regular accounts u|
-2407|55|O|112843.52|1998-06-19|2-HIGH|Clerk#000000068|0|uests affix slyly among the slyly regular depos|
-2432|103|O|62661.93|1996-07-13|1-URGENT|Clerk#000000115|0|re. slyly even deposits wake bra|
-2433|31|F|147071.86|1994-08-22|4-NOT SPECIFIED|Clerk#000000324|0|ess patterns are slyly. packages haggle carefu|
-2434|25|O|123956.25|1997-04-27|3-MEDIUM|Clerk#000000190|0|s. quickly ironic dolphins impress final deposits. blithel|
-2435|73|F|122490.66|1993-02-21|5-LOW|Clerk#000000112|0|es are carefully along the carefully final instructions. pe|
-2436|125|O|73990.08|1995-09-11|4-NOT SPECIFIED|Clerk#000000549|0|arefully. blithely bold deposits affix special accounts. final foxes nag. spe|
-2437|85|F|143411.69|1993-04-21|4-NOT SPECIFIED|Clerk#000000578|0|. theodolites wake slyly-- ironic, pending platelets above the carefully exp|
-2438|13|F|214494.39|1993-07-15|2-HIGH|Clerk#000000744|0|the final, regular warhorses. regularly |
-2439|55|O|41811.12|1997-03-15|2-HIGH|Clerk#000000819|0|lithely after the car|
-2464|145|O|30495.65|1997-11-23|5-LOW|Clerk#000000633|0|le about the instructions. courts wake carefully even|
-2465|34|O|180737.75|1995-06-24|1-URGENT|Clerk#000000078|0|al pinto beans. final, bold packages wake quickly|
-2466|19|F|161625.50|1994-03-06|1-URGENT|Clerk#000000424|0|c pinto beans. express deposits wake quickly. even, final courts nag. package|
-2467|35|O|7231.91|1995-07-16|4-NOT SPECIFIED|Clerk#000000914|0|pades sleep furiously. sometimes regular packages again|
-2468|112|O|160627.01|1997-06-09|4-NOT SPECIFIED|Clerk#000000260|0|ickly regular packages. slyly ruthless requests snooze quickly blithe|
-2469|124|O|192074.23|1996-11-26|5-LOW|Clerk#000000730|0| sleep closely regular instructions. furiously ironic instructi|
-2470|58|O|104966.33|1997-04-19|3-MEDIUM|Clerk#000000452|0|to the furiously final packages? pa|
-2471|89|O|34936.31|1998-03-12|4-NOT SPECIFIED|Clerk#000000860|0|carefully blithely regular pac|
-2496|136|F|140390.60|1994-01-09|2-HIGH|Clerk#000000142|0|slyly. pending instructions sleep. quic|
-2497|47|F|171326.48|1992-08-27|1-URGENT|Clerk#000000977|0|ily ironic pinto beans. furiously final platelets alongside of t|
-2498|97|F|45514.27|1993-11-08|5-LOW|Clerk#000000373|0|g the slyly special pinto beans. |
-2499|121|O|147243.86|1995-09-24|1-URGENT|Clerk#000000277|0|r the quickly bold foxes. bold instructi|
-2500|133|F|131122.82|1992-08-15|2-HIGH|Clerk#000000447|0|integrate slyly pending deposits. furiously ironic accounts across the s|
-2501|67|O|79380.51|1997-05-25|5-LOW|Clerk#000000144|0|ickly special theodolite|
-2502|70|F|33470.40|1993-05-28|4-NOT SPECIFIED|Clerk#000000914|0|lyly: carefully pending ideas affix again|
-2503|7|F|183671.08|1993-06-20|3-MEDIUM|Clerk#000000294|0|ly even packages was. ironic, regular deposits unwind furiously across the p|
-2528|55|F|92069.62|1994-11-20|1-URGENT|Clerk#000000789|0|ular dependencies? regular frays kindle according to the blith|
-2529|136|O|4104.30|1996-08-20|2-HIGH|Clerk#000000511|0|posits across the silent instructions wake blithely across |
-2530|128|F|58853.11|1994-03-21|3-MEDIUM|Clerk#000000291|0|ular instructions about the quic|
-2531|44|O|143212.85|1996-05-06|4-NOT SPECIFIED|Clerk#000000095|0|even accounts. furiously ironic excuses sleep fluffily. carefully silen|
-2532|94|O|116093.49|1995-10-11|2-HIGH|Clerk#000000498|0|the blithely pending accounts. regular, regular excuses boost aro|
-2533|50|O|168495.03|1997-03-24|1-URGENT|Clerk#000000594|0|ecial instructions. spec|
-2534|76|O|202784.54|1996-07-17|3-MEDIUM|Clerk#000000332|0|packages cajole ironic requests. furiously regular|
-2535|121|F|67018.30|1993-05-25|5-LOW|Clerk#000000296|0|phins cajole beneath the fluffily express asymptotes. c|
-2560|131|F|153426.79|1992-09-05|1-URGENT|Clerk#000000538|0|atelets; quickly sly requests|
-2561|58|O|137473.58|1997-11-14|1-URGENT|Clerk#000000861|0|ual requests. unusual deposits cajole furiously pending, regular platelets. |
-2562|10|F|136360.37|1992-08-01|1-URGENT|Clerk#000000467|0|elets. pending dolphins promise slyly. bo|
-2563|62|F|168952.10|1993-11-19|4-NOT SPECIFIED|Clerk#000000150|0|sly even packages after the furio|
-2564|77|F|3967.47|1994-09-09|2-HIGH|Clerk#000000718|0|usly regular pinto beans. orbits wake carefully. slyly e|
-2565|56|O|204438.57|1998-02-28|3-MEDIUM|Clerk#000000032|0|x-ray blithely along|
-2566|86|F|89992.48|1992-10-10|3-MEDIUM|Clerk#000000414|0|ructions boost bold ideas. idly ironic accounts use according to th|
-2567|70|O|263411.29|1998-02-27|2-HIGH|Clerk#000000031|0|detect. furiously ironic requests|
-2592|101|F|8225.96|1993-03-05|4-NOT SPECIFIED|Clerk#000000524|0|ts nag fluffily. quickly stealthy theodolite|
-2593|92|F|134726.09|1993-09-04|2-HIGH|Clerk#000000468|0|r the carefully final|
-2594|79|F|94866.39|1992-12-17|1-URGENT|Clerk#000000550|0|ests. theodolites above the blithely even accounts detect furio|
-2595|74|O|173130.20|1995-12-14|4-NOT SPECIFIED|Clerk#000000222|0|arefully ironic requests nag carefully ideas. |
-2596|43|O|74940.13|1996-08-17|1-URGENT|Clerk#000000242|0|requests. ironic, bold theodolites wak|
-2597|104|F|21964.66|1993-02-04|2-HIGH|Clerk#000000757|0|iously ruthless exc|
-2598|112|O|84871.50|1996-03-05|3-MEDIUM|Clerk#000000391|0| ironic notornis according to the blithely final requests should |
-2599|149|O|62807.13|1996-11-07|2-HIGH|Clerk#000000722|0|ts. slyly regular theodolites wake sil|
-2624|52|O|27148.63|1996-11-28|5-LOW|Clerk#000000930|0|ic, regular packages|
-2625|40|F|39382.74|1992-10-14|4-NOT SPECIFIED|Clerk#000000386|0| final deposits. blithely ironic ideas |
-2626|139|O|84314.51|1995-09-08|4-NOT SPECIFIED|Clerk#000000289|0|gside of the carefully special packages are furiously after the slyly express |
-2627|149|F|26798.65|1992-03-24|3-MEDIUM|Clerk#000000181|0|s. silent, ruthless requests|
-2628|56|F|165655.99|1993-10-22|5-LOW|Clerk#000000836|0|ajole across the blithely careful accounts. blithely silent deposits sl|
-2629|139|O|96458.03|1998-04-06|5-LOW|Clerk#000000680|0|uches dazzle carefully even, express excuses. ac|
-2630|85|F|127132.51|1992-10-24|5-LOW|Clerk#000000712|0|inal theodolites. ironic instructions s|
-2631|37|F|63103.32|1993-09-24|5-LOW|Clerk#000000833|0| quickly unusual deposits doubt around |
-2656|77|F|105492.37|1993-05-04|1-URGENT|Clerk#000000307|0|elets. slyly final accou|
-2657|25|O|148176.06|1995-10-17|2-HIGH|Clerk#000000160|0| foxes-- slyly final dependencies around the slyly final theodo|
-2658|14|O|163834.46|1995-09-23|3-MEDIUM|Clerk#000000400|0|bout the slyly regular accounts. ironic, |
-2659|83|F|79785.52|1993-12-18|4-NOT SPECIFIED|Clerk#000000758|0|cross the pending requests maintain |
-2660|127|O|16922.51|1995-08-05|5-LOW|Clerk#000000480|0|ly finally regular deposits. ironic theodolites cajole|
-2661|74|O|106036.84|1997-01-04|3-MEDIUM|Clerk#000000217|0|al, regular pinto beans. silently final deposits should have t|
-2662|37|O|87689.88|1996-08-21|3-MEDIUM|Clerk#000000589|0|bold pinto beans above the slyly final accounts affix furiously deposits. pac|
-2663|95|O|35131.80|1995-09-06|1-URGENT|Clerk#000000950|0|ar requests. furiously final dolphins along the fluffily spe|
-2688|98|F|181077.36|1992-01-24|2-HIGH|Clerk#000000720|0|have to nag according to the pending theodolites. sly|
-2689|103|F|41552.78|1992-04-09|4-NOT SPECIFIED|Clerk#000000698|0|press pains wake. furiously express theodolites alongsid|
-2690|94|O|224674.27|1996-03-31|3-MEDIUM|Clerk#000000760|0|ravely even theodolites |
-2691|7|F|30137.17|1992-04-30|5-LOW|Clerk#000000439|0|es at the regular deposits sleep slyly by the fluffy requests. eve|
-2692|62|O|24265.24|1997-12-02|3-MEDIUM|Clerk#000000878|0|es. regular asymptotes cajole above t|
-2693|19|O|66158.13|1996-09-04|1-URGENT|Clerk#000000370|0|ndle never. blithely regular packages nag carefully enticing platelets. ca|
-2694|121|O|102807.59|1996-03-14|5-LOW|Clerk#000000722|0| requests. bold deposits above the theodol|
-2695|58|O|138584.20|1996-08-20|1-URGENT|Clerk#000000697|0|ven deposits around the quickly regular packa|
-2720|31|F|161307.05|1993-06-08|1-URGENT|Clerk#000000948|0|quickly. special asymptotes are fluffily ironi|
-2721|79|O|59180.25|1996-01-27|2-HIGH|Clerk#000000401|0| ideas eat even, unusual ideas. theodolites are carefully|
-2722|35|F|50328.84|1994-04-09|5-LOW|Clerk#000000638|0|rding to the carefully quick deposits. bli|
-2723|61|O|104759.25|1995-10-06|5-LOW|Clerk#000000836|0|nts must have to cajo|
-2724|137|F|116069.66|1994-09-14|2-HIGH|Clerk#000000217|0| sleep blithely. blithely idle |
-2725|89|F|75144.68|1994-05-21|4-NOT SPECIFIED|Clerk#000000835|0|ular deposits. spec|
-2726|7|F|47753.00|1992-11-27|5-LOW|Clerk#000000470|0| blithely even dinos sleep care|
-2727|74|O|3089.42|1998-04-19|4-NOT SPECIFIED|Clerk#000000879|0|sual theodolites cajole enticingly above the furiously fin|
-2752|59|F|187932.30|1993-11-19|2-HIGH|Clerk#000000648|0| carefully regular foxes are quickly quickl|
-2753|16|F|159720.39|1993-11-30|2-HIGH|Clerk#000000380|0|ending instructions. unusual deposits|
-2754|145|F|25985.52|1994-04-03|2-HIGH|Clerk#000000960|0|cies detect slyly. |
-2755|118|F|101202.18|1992-02-07|4-NOT SPECIFIED|Clerk#000000177|0|ously according to the sly foxes. blithely regular pinto bean|
-2756|118|F|142323.38|1994-04-18|1-URGENT|Clerk#000000537|0|arefully special warho|
-2757|76|O|89792.48|1995-07-20|2-HIGH|Clerk#000000216|0| regular requests subl|
-2758|43|O|36671.88|1998-07-12|5-LOW|Clerk#000000863|0|s cajole according to the carefully special |
-2759|116|F|89731.10|1993-11-25|4-NOT SPECIFIED|Clerk#000000071|0|ts. regular, pending pinto beans sleep ab|
-2784|95|O|106635.21|1998-01-07|1-URGENT|Clerk#000000540|0|g deposits alongside of the silent requests s|
-2785|148|O|132854.79|1995-07-21|2-HIGH|Clerk#000000098|0|iously pending packages sleep according to the blithely unusual foxe|
-2786|79|F|178254.66|1992-03-22|2-HIGH|Clerk#000000976|0|al platelets cajole blithely ironic requests. ironic re|
-2787|103|O|3726.14|1995-09-30|1-URGENT|Clerk#000000906|0|he ironic, regular |
-2788|124|F|17172.66|1994-09-22|1-URGENT|Clerk#000000641|0|nts wake across the fluffily bold accoun|
-2789|37|O|219123.27|1998-03-14|2-HIGH|Clerk#000000972|0|gular patterns boost. carefully even re|
-2790|25|F|177458.97|1994-08-19|2-HIGH|Clerk#000000679|0| the carefully express deposits sleep slyly |
-2791|121|F|156697.55|1994-10-10|2-HIGH|Clerk#000000662|0|as. slyly ironic accounts play furiously bl|
-2816|58|F|42225.53|1994-09-20|2-HIGH|Clerk#000000289|0|kages at the final deposits cajole furious foxes. quickly |
-2817|40|F|71453.85|1994-04-19|3-MEDIUM|Clerk#000000982|0|ic foxes haggle upon the daringly even pinto beans. slyly|
-2818|49|F|120086.84|1994-12-12|3-MEDIUM|Clerk#000000413|0|eep furiously special ideas. express |
-2819|103|F|66927.16|1994-05-05|1-URGENT|Clerk#000000769|0|ngside of the blithely ironic dolphins. furio|
-2820|19|F|143813.39|1994-05-20|3-MEDIUM|Clerk#000000807|0|equests are furiously. carefu|
-2821|118|F|36592.48|1993-08-09|3-MEDIUM|Clerk#000000323|0|ng requests. even instructions are quickly express, silent instructi|
-2822|79|F|40142.15|1993-07-26|2-HIGH|Clerk#000000510|0|furiously against the accounts. unusual accounts aft|
-2823|79|O|171894.45|1995-09-09|2-HIGH|Clerk#000000567|0|encies. carefully fluffy accounts m|
-2848|70|F|116258.53|1992-03-10|1-URGENT|Clerk#000000256|0|ly fluffy foxes sleep furiously across the slyly regu|
-2849|46|O|180054.29|1996-04-30|2-HIGH|Clerk#000000659|0|al packages are after the quickly bold requests. carefully special |
-2850|100|O|122969.79|1996-10-02|2-HIGH|Clerk#000000392|0|, regular deposits. furiously pending packages hinder carefully carefully u|
-2851|145|O|7859.36|1997-09-07|5-LOW|Clerk#000000566|0|Tiresias wake quickly quickly even|
-2852|91|F|99050.81|1993-01-16|1-URGENT|Clerk#000000740|0|ruthless deposits against the final instructions use quickly al|
-2853|94|F|103641.15|1994-05-05|2-HIGH|Clerk#000000878|0|the carefully even packages.|
-2854|139|F|153568.02|1994-06-27|1-URGENT|Clerk#000000010|0| furiously ironic tithes use furiously |
-2855|49|F|48419.58|1993-04-04|4-NOT SPECIFIED|Clerk#000000973|0| silent, regular packages sleep |
-2880|8|F|145761.99|1992-03-15|2-HIGH|Clerk#000000756|0|ves maintain doggedly spec|
-2881|100|F|45695.84|1992-05-10|5-LOW|Clerk#000000864|0|uriously. slyly express requests according to the silent dol|
-2882|121|O|172872.37|1995-08-22|2-HIGH|Clerk#000000891|0|pending deposits. carefully eve|
-2883|121|F|170360.27|1995-01-23|5-LOW|Clerk#000000180|0|uses. carefully ironic accounts lose fluffil|
-2884|92|O|71683.84|1997-10-12|3-MEDIUM|Clerk#000000780|0|efully express instructions sleep against|
-2885|7|F|146896.72|1992-09-19|4-NOT SPECIFIED|Clerk#000000280|0|ly sometimes special excuses. final requests are |
-2886|109|F|94527.23|1994-11-13|4-NOT SPECIFIED|Clerk#000000619|0|uctions. ironic packages sle|
-2887|109|O|28571.39|1997-05-26|5-LOW|Clerk#000000566|0|slyly even pinto beans. slyly bold epitaphs cajole blithely above t|
-2912|94|F|27727.52|1992-03-12|5-LOW|Clerk#000000186|0|jole blithely above the quickly regular packages. carefully regular pinto bean|
-2913|43|O|130702.19|1997-07-12|3-MEDIUM|Clerk#000000118|0|mptotes doubt furiously slyly regu|
-2914|109|F|60867.14|1993-03-03|3-MEDIUM|Clerk#000000543|0|he slyly regular theodolites are furiously sile|
-2915|94|F|96015.13|1994-03-31|5-LOW|Clerk#000000410|0|ld packages. bold deposits boost blithely. ironic, unusual theodoli|
-2916|8|O|20182.22|1995-12-27|2-HIGH|Clerk#000000681|0|ithely blithe deposits sleep beyond the|
-2917|91|O|100714.13|1997-12-09|4-NOT SPECIFIED|Clerk#000000061|0| special dugouts among the special deposi|
-2918|118|O|21760.09|1996-09-08|3-MEDIUM|Clerk#000000439|0|ular deposits across th|
-2919|53|F|137223.14|1993-12-10|2-HIGH|Clerk#000000209|0|es. pearls wake quietly slyly ironic instructions--|
-2944|14|O|146581.14|1997-09-24|4-NOT SPECIFIED|Clerk#000000740|0|deas. permanently special foxes haggle carefully ab|
-2945|29|O|223507.72|1996-01-03|2-HIGH|Clerk#000000499|0|ons are carefully toward the permanent, bold pinto beans. regu|
-2946|125|O|102226.59|1996-02-05|5-LOW|Clerk#000000329|0|g instructions about the regular accounts sleep carefully along the pen|
-2947|70|P|43360.95|1995-04-26|1-URGENT|Clerk#000000464|0|ronic accounts. accounts run furiously d|
-2948|44|F|100758.71|1994-08-23|5-LOW|Clerk#000000701|0| deposits according to the blithely pending |
-2949|137|F|94231.71|1994-04-12|2-HIGH|Clerk#000000184|0|y ironic accounts use. quickly blithe accou|
-2950|136|O|183620.33|1997-07-06|1-URGENT|Clerk#000000833|0| dolphins around the furiously |
-2951|74|O|125509.17|1996-02-06|2-HIGH|Clerk#000000680|0|gular deposits above the finally regular ideas integrate idly stealthil|
-2976|29|F|145768.47|1993-12-10|4-NOT SPECIFIED|Clerk#000000159|0|. furiously ironic asymptotes haggle ruthlessly silently regular r|
-2977|73|O|25170.88|1996-08-27|3-MEDIUM|Clerk#000000252|0|quickly special platelets are furio|
-2978|44|P|139542.14|1995-05-03|1-URGENT|Clerk#000000135|0|d. even platelets are. ironic dependencies cajole slow, e|
-2979|133|O|116789.98|1996-03-23|3-MEDIUM|Clerk#000000820|0|even, ironic foxes sleep along|
-2980|4|O|187514.11|1996-09-14|3-MEDIUM|Clerk#000000661|0|y quick pinto beans wake. slyly re|
-2981|49|O|37776.79|1998-07-29|5-LOW|Clerk#000000299|0|hely among the express foxes. blithely stealthy requests cajole boldly. regu|
-2982|85|F|55582.94|1995-03-19|2-HIGH|Clerk#000000402|0|lyly. express theodolites affix slyly after the slyly speci|
-2983|62|F|58168.07|1992-01-07|1-URGENT|Clerk#000000278|0|r the even requests. accounts maintain. regular accounts|
-3008|40|O|156018.74|1995-11-08|3-MEDIUM|Clerk#000000701|0|ze quickly. blithely regular packages above the slyly bold foxes shall|
-3009|55|O|108424.94|1997-02-28|1-URGENT|Clerk#000000205|0|r ideas. carefully pe|
-3010|8|O|141647.08|1996-01-26|2-HIGH|Clerk#000000931|0| blithely final requests. special deposits are slyl|
-3011|91|F|46418.85|1992-01-14|5-LOW|Clerk#000000515|0|onic deposits kindle slyly. dependencies around the quickly iro|
-3012|32|F|91678.66|1993-05-05|1-URGENT|Clerk#000000414|0|ts after the regular pinto beans impress blithely s|
-3013|143|O|156407.40|1997-02-05|5-LOW|Clerk#000000591|0|the furiously pendin|
-3014|29|F|194159.59|1992-10-30|4-NOT SPECIFIED|Clerk#000000476|0|ep blithely according to the blith|
-3015|103|F|110826.83|1992-09-27|5-LOW|Clerk#000000013|0|ously regular deposits affix carefully. furiousl|
-3040|112|F|119201.64|1993-04-12|3-MEDIUM|Clerk#000000544|0|carefully special packages. blithe|
-3041|113|O|23039.46|1997-06-03|5-LOW|Clerk#000000092|0|s. unusual, pending deposits use carefully. thinly final|
-3042|20|F|104523.03|1994-11-21|3-MEDIUM|Clerk#000000573|0| the slyly ironic depo|
-3043|44|F|78221.69|1992-04-25|5-LOW|Clerk#000000137|0|cajole blithely furiously fina|
-3044|53|O|52433.54|1996-04-03|2-HIGH|Clerk#000000008|0|cajole final courts. ironic deposits about the quickly final re|
-3045|50|O|85822.67|1995-09-27|1-URGENT|Clerk#000000405|0| express courts sleep quickly special asymptotes. |
-3046|32|O|117817.52|1995-11-30|2-HIGH|Clerk#000000522|0|r deposits. platelets use furi|
-3047|25|O|37881.31|1997-03-21|1-URGENT|Clerk#000000962|0|as. slyly express deposits are dogged pearls. silent ide|
-3072|23|F|87475.82|1994-01-30|4-NOT SPECIFIED|Clerk#000000370|0|ely final deposits cajole carefully. ironic, re|
-3073|136|F|151419.50|1994-01-08|3-MEDIUM|Clerk#000000404|0|kly slyly bold accounts. express courts near the regular ideas sleep bli|
-3074|67|F|85861.93|1992-11-01|5-LOW|Clerk#000000546|0|yly even asymptotes shall have to haggle fluffily. deposits are|
-3075|127|F|37696.70|1994-05-07|3-MEDIUM|Clerk#000000433|0|ackages: carefully unusual reques|
-3076|92|F|93828.15|1993-07-23|2-HIGH|Clerk#000000099|0|busy foxes. deposits affix quickly ironic, pending pint|
-3077|121|O|99290.01|1997-08-06|2-HIGH|Clerk#000000228|0|kly. fluffily ironic requests use qui|
-3078|49|F|46310.83|1993-02-12|2-HIGH|Clerk#000000110|0|ounts are alongside of the blith|
-3079|100|O|148299.05|1997-09-12|5-LOW|Clerk#000000505|0|lly ironic accounts|
-3104|70|F|102693.61|1993-09-16|3-MEDIUM|Clerk#000000871|0|ges boost-- regular accounts are furiousl|
-3105|137|O|125396.80|1996-11-13|4-NOT SPECIFIED|Clerk#000000772|0|s. blithely final ins|
-3106|145|O|132494.97|1997-01-12|3-MEDIUM|Clerk#000000729|0|its use slyly final theodolites; regular dolphins hang above t|
-3107|26|O|107406.26|1997-08-21|1-URGENT|Clerk#000000669|0|ously even deposits acr|
-3108|85|F|63278.00|1993-08-05|1-URGENT|Clerk#000000574|0|s packages haggle furiously am|
-3109|124|F|216104.85|1993-07-24|5-LOW|Clerk#000000936|0|bold requests sleep quickly according to the slyly final|
-3110|88|F|115161.29|1994-12-17|2-HIGH|Clerk#000000564|0|round the fluffy instructions. carefully silent packages cajol|
-3111|133|O|154383.37|1995-08-25|5-LOW|Clerk#000000922|0|slyly regular theodolites. furious deposits cajole deposits. ironic theodoli|
-3136|23|F|145426.11|1994-08-10|4-NOT SPECIFIED|Clerk#000000891|0|tructions sleep slyly. pending di|
-3137|136|O|8958.65|1995-07-26|3-MEDIUM|Clerk#000000063|0|ymptotes wake carefully above t|
-3138|139|F|139579.18|1994-02-09|4-NOT SPECIFIED|Clerk#000000650|0|e fluffily final theodolites. even dependencies wake along the quickly ir|
-3139|17|F|40975.96|1992-01-02|3-MEDIUM|Clerk#000000855|0|ounts against the ruthlessly unusual dolphins|
-3140|145|F|54356.10|1992-04-09|1-URGENT|Clerk#000000670|0|carefully ironic deposits use furiously. blith|
-3141|26|O|115959.96|1995-11-10|1-URGENT|Clerk#000000475|0|es. furiously bold instructions after the carefully final p|
-3142|8|F|16030.15|1992-06-28|3-MEDIUM|Clerk#000000043|0|usual accounts about the carefully special requests sleep slyly quickly regul|
-3143|107|F|135647.68|1993-02-17|1-URGENT|Clerk#000000519|0| are final, ironic accounts. ironic |
-3168|136|F|69412.71|1992-01-30|5-LOW|Clerk#000000352|0|s sleep slyly? ironic, furious instructions detect. quickly final i|
-3169|19|F|126804.90|1993-12-21|3-MEDIUM|Clerk#000000252|0| even pinto beans are blithely special, special multip|
-3170|5|O|190142.17|1997-11-09|1-URGENT|Clerk#000000288|0|requests. furiously bold|
-3171|47|F|84405.78|1993-04-06|5-LOW|Clerk#000000940|0|ar deposits. idly r|
-3172|89|F|121360.83|1992-06-03|4-NOT SPECIFIED|Clerk#000000771|0|es. slyly ironic packages x-ra|
-3173|148|O|64892.73|1996-08-10|5-LOW|Clerk#000000516|0|ial requests lose along t|
-3174|127|O|92856.91|1995-11-15|5-LOW|Clerk#000000663|0|rts. silent, regular pinto beans are blithely regular packages. furiousl|
-3175|44|F|205282.63|1994-07-15|5-LOW|Clerk#000000629|0| across the slyly even realms use carefully ironic deposits: sl|
-3200|13|O|131103.31|1996-02-07|1-URGENT|Clerk#000000020|0| regular dependencies impress evenly even excuses. blithely |
-3201|97|F|90755.31|1993-07-02|4-NOT SPECIFIED|Clerk#000000738|0|. busy, express instruction|
-3202|88|F|50601.01|1992-12-24|5-LOW|Clerk#000000067|0|fluffily express requests affix carefully around th|
-3203|127|O|49357.72|1997-11-05|2-HIGH|Clerk#000000493|0|e furiously silent warhorses. slyly silent deposits wake bli|
-3204|10|F|41573.42|1992-12-26|1-URGENT|Clerk#000000693|0|ess somas cajole slyly. pending accounts cajole|
-3205|148|F|153637.79|1992-04-11|5-LOW|Clerk#000000803|0|e furiously. quickly regular dinos about the final pinto be|
-3206|122|O|64344.86|1996-08-09|1-URGENT|Clerk#000000755|0|ntegrate furiously final, express |
-3207|22|O|133038.59|1998-02-16|1-URGENT|Clerk#000000695|0|uriously accounts. fluffily i|
-3232|82|F|55619.01|1992-10-09|1-URGENT|Clerk#000000314|0|yly final accounts. packages agains|
-3233|140|F|54121.92|1994-10-24|5-LOW|Clerk#000000470|0|ly ironic epitaphs use stealthy, express deposits. quickly regular instruct|
-3234|14|O|147343.68|1996-04-05|4-NOT SPECIFIED|Clerk#000000367|0|ents according to the dependencies will sleep after the blithely even p|
-3235|46|O|104695.09|1995-11-15|5-LOW|Clerk#000000349|0| quickly pinto beans. ironi|
-3236|142|O|39470.39|1996-11-06|4-NOT SPECIFIED|Clerk#000000553|0|ithely slyly pending req|
-3237|19|F|10508.12|1992-06-03|1-URGENT|Clerk#000000606|0|inal requests. slyly even foxes detect about the furiously exp|
-3238|61|F|41375.69|1993-02-21|5-LOW|Clerk#000000818|0|lly express deposits are. furiously unusual ideas wake carefully somas. instr|
-3239|35|O|156802.80|1998-01-12|4-NOT SPECIFIED|Clerk#000000619|0| cajole carefully along the furiously pending deposits. |
-3264|94|O|162634.53|1996-11-02|5-LOW|Clerk#000000244|0|carefully. express, bold|
-3265|53|F|43315.15|1992-06-27|1-URGENT|Clerk#000000265|0|re quickly quickly pe|
-3266|4|P|68309.28|1995-03-17|5-LOW|Clerk#000000545|0|refully ironic instructions. slyly final pi|
-3267|112|O|33998.90|1997-01-07|5-LOW|Clerk#000000484|0| the packages. regular decoys about the bold dependencies grow fi|
-3268|142|F|36024.96|1994-06-25|5-LOW|Clerk#000000746|0|y brave requests unwind furiously accordin|
-3269|17|O|218697.85|1996-03-01|3-MEDIUM|Clerk#000000378|0|ts. accounts wake carefully. carefully dogged accounts wake slyly slyly i|
-3270|38|O|166669.86|1997-05-28|1-URGENT|Clerk#000000375|0|uffily pending courts ca|
-3271|34|F|86534.05|1992-01-01|1-URGENT|Clerk#000000421|0|s. furiously regular requests|
-3296|148|F|187553.35|1994-10-19|3-MEDIUM|Clerk#000000991|0|as! carefully final requests wake. furiously even|
-3297|139|F|9679.45|1992-11-03|2-HIGH|Clerk#000000220|0| after the theodolites cajole carefully according to the finally|
-3298|116|O|62716.67|1996-04-17|5-LOW|Clerk#000000241|0|even accounts boost |
-3299|91|F|42867.92|1993-12-26|3-MEDIUM|Clerk#000000853|0|bold deposits. special instructions sleep care|
-3300|118|O|27049.22|1995-07-15|5-LOW|Clerk#000000198|0|ses. carefully unusual instructions must have to detect about the blithel|
-3301|133|F|48497.09|1994-09-04|4-NOT SPECIFIED|Clerk#000000325|0|ular gifts impress enticingly carefully express deposits; instructions boo|
-3302|34|O|38330.42|1995-11-14|2-HIGH|Clerk#000000367|0|eep blithely ironic requests. quickly even courts haggle slyly|
-3303|145|O|97758.28|1997-12-14|4-NOT SPECIFIED|Clerk#000000661|0|nto beans sleep furiously above the carefully ironic |
-3328|7|F|139580.85|1992-11-19|5-LOW|Clerk#000000384|0|ake among the express accounts? carefully ironic packages cajole never.|
-3329|4|O|46107.70|1995-07-03|2-HIGH|Clerk#000000236|0|old deposits. special accounts haggle furiousl|
-3330|7|F|43255.19|1994-12-19|1-URGENT|Clerk#000000124|0|kages use. carefully regular deposits cajole carefully about |
-3331|91|F|65189.17|1993-05-21|2-HIGH|Clerk#000000901|0|uffily carefully sly accounts. blithely unu|
-3332|143|F|73739.06|1994-11-05|1-URGENT|Clerk#000000840|0|ans detect carefully furiously final deposits: regular accoun|
-3333|92|F|197973.22|1992-09-16|4-NOT SPECIFIED|Clerk#000000157|0|ctions boost slyly quickly even accounts. deposits along|
-3334|76|O|28930.68|1996-02-18|5-LOW|Clerk#000000532|0|ounts maintain carefully. furiously close request|
-3335|49|O|112603.34|1995-10-15|3-MEDIUM|Clerk#000000694|0| deposits poach. ironic ideas about the carefully ironi|
-3360|103|O|168750.48|1998-01-23|5-LOW|Clerk#000000254|0| the deposits. fluffily bold requests cajole regula|
-3361|49|F|75026.51|1992-08-23|4-NOT SPECIFIED|Clerk#000000577|0|unts detect furiously instructions. slow deposi|
-3362|140|O|183176.60|1995-07-29|5-LOW|Clerk#000000011|0|the quickly pending deposits. silent, ev|
-3363|52|O|91017.61|1995-09-23|2-HIGH|Clerk#000000615|0|posits. ironic, final deposits are furiously slyly pending |
-3364|46|O|108412.57|1997-06-21|1-URGENT|Clerk#000000280|0|y even foxes? blithely stea|
-3365|82|F|174634.12|1994-11-09|2-HIGH|Clerk#000000126|0|he slyly regular foxes nag about the accounts. fluffily |
-3366|52|O|13603.08|1997-05-18|1-URGENT|Clerk#000000160|0| pinto beans upon the quickly expres|
-3367|73|F|101339.68|1992-12-31|4-NOT SPECIFIED|Clerk#000000029|0|efully blithely ironic pinto beans. carefully close |
-3392|74|O|96057.42|1995-10-28|1-URGENT|Clerk#000000325|0|es thrash blithely depths. bold multipliers wake f|
-3393|98|O|183104.71|1995-07-04|2-HIGH|Clerk#000000076|0|even requests. excuses are carefully deposits. fluf|
-3394|149|O|162165.94|1996-05-05|4-NOT SPECIFIED|Clerk#000000105|0| blithely among the attainments. carefully final accounts nag blit|
-3395|149|F|141486.77|1994-10-30|4-NOT SPECIFIED|Clerk#000000682|0|ideas haggle beside the ev|
-3396|149|F|196443.16|1994-05-21|3-MEDIUM|Clerk#000000868|0|uffily regular platelet|
-3397|130|F|80084.61|1994-06-23|3-MEDIUM|Clerk#000000048|0|yly. final deposits wake f|
-3398|67|O|1147.42|1996-09-23|1-URGENT|Clerk#000000818|0|uthless, special courts atop the unusual accounts grow fur|
-3399|122|P|56938.16|1995-02-28|4-NOT SPECIFIED|Clerk#000000575|0|the carefully sly accounts. regular, pending theodolites wa|
-3424|103|O|42410.57|1996-08-21|1-URGENT|Clerk#000000190|0|ven requests are quickly pending accounts. blithely furious requests |
-3425|115|O|157040.57|1996-03-31|4-NOT SPECIFIED|Clerk#000000188|0|ions. deposits nag blithely alongside of the carefully f|
-3426|53|O|91929.93|1996-10-16|3-MEDIUM|Clerk#000000283|0|alongside of the slyly|
-3427|4|O|133451.14|1997-05-29|4-NOT SPECIFIED|Clerk#000000404|0|y final pinto beans snooze fluffily bold asymptot|
-3428|10|O|88047.04|1996-04-07|5-LOW|Clerk#000000953|0|lar excuses. slyly pending ideas detect p|
-3429|146|O|141902.54|1997-01-06|4-NOT SPECIFIED|Clerk#000000737|0|l deposits cajole furiously enticing deposits. blithe packages haggle careful|
-3430|113|F|161066.22|1994-12-12|4-NOT SPECIFIED|Clerk#000000664|0| regular attainments are at the final foxes. final packages along the blithe|
-3431|47|F|45536.27|1993-08-22|1-URGENT|Clerk#000000439|0| sleep. slyly busy Tiresias a|
-3456|46|F|32796.35|1993-06-01|5-LOW|Clerk#000000924|0|es promise slyly. ironicall|
-3457|25|P|174223.20|1995-04-27|4-NOT SPECIFIED|Clerk#000000849|0|ely thin asymptotes. deposits kindle. pending|
-3458|95|F|153069.14|1994-12-22|2-HIGH|Clerk#000000392|0|rges snooze. slyly unusua|
-3459|119|F|127134.05|1994-07-28|4-NOT SPECIFIED|Clerk#000000777|0|n instructions? carefully regular excuses are blithely. silent, ironi|
-3460|82|O|245976.74|1995-10-03|2-HIGH|Clerk#000000078|0|ans integrate carefu|
-3461|100|F|190960.69|1993-01-31|1-URGENT|Clerk#000000504|0|al, bold deposits cajole fluffily fluffily final foxes. pending ideas beli|
-3462|133|O|63590.17|1997-05-17|3-MEDIUM|Clerk#000000657|0|uriously express asympto|
-3463|89|F|85255.56|1993-08-18|1-URGENT|Clerk#000000545|0|ding to the carefully ironic deposits|
-3488|148|F|92716.17|1995-01-08|3-MEDIUM|Clerk#000000694|0|cording to the carefully regular deposits. re|
-3489|109|F|62453.97|1993-07-29|3-MEDIUM|Clerk#000000307|0|s detect. carefully even platelets across the fur|
-3490|91|O|100106.96|1997-05-26|5-LOW|Clerk#000000703|0|gular ideas. furiously silent deposits across the unusual accounts boost i|
-3491|83|O|50287.06|1998-06-24|1-URGENT|Clerk#000000560|0|nic orbits believe carefully across the |
-3492|103|F|168721.45|1994-11-24|5-LOW|Clerk#000000066|0|packages along the regular foxes lose final dependencie|
-3493|82|F|41686.10|1993-08-24|2-HIGH|Clerk#000000887|0|lyly special accounts use blithely across the furiously sil|
-3494|49|F|136058.70|1993-04-04|5-LOW|Clerk#000000559|0|r instructions haggle. accounts cajole. carefully final requests at the |
-3495|31|O|58666.79|1996-02-26|2-HIGH|Clerk#000000441|0|nticing excuses are carefully|
-3520|125|O|151233.65|1997-08-04|1-URGENT|Clerk#000000023|0|hely. ideas nag; even, even fo|
-3521|7|F|142029.67|1992-10-26|5-LOW|Clerk#000000812|0|y even instructions cajole carefully above the bli|
-3522|26|F|151515.08|1994-09-26|5-LOW|Clerk#000000250|0|deposits-- slyly stealthy requests boost caref|
-3523|149|O|129657.08|1998-04-07|2-HIGH|Clerk#000000688|0|are on the carefully even depe|
-3524|94|F|22767.49|1992-05-03|2-HIGH|Clerk#000000607|0|efully unusual tithes among the foxes use blithely daringly bold deposits. re|
-3525|109|O|100749.60|1995-12-22|4-NOT SPECIFIED|Clerk#000000084|0|s nag among the blithely e|
-3526|56|F|53827.34|1995-03-16|5-LOW|Clerk#000000364|0|to the quickly special deposits print agai|
-3527|56|O|145232.09|1997-06-21|5-LOW|Clerk#000000874|0|regular ideas across the quickly bold theodo|
-3552|35|O|103656.44|1997-04-23|2-HIGH|Clerk#000000973|0| the ironic packages. furiously |
-3553|91|F|119838.14|1994-05-18|3-MEDIUM|Clerk#000000270|0|counts mold furiously. slyly i|
-3554|44|O|98335.61|1995-06-17|5-LOW|Clerk#000000931|0|hely ironic requests haggl|
-3555|46|O|134442.37|1996-07-07|5-LOW|Clerk#000000585|0|s nag carefully regular, even pinto be|
-3556|16|F|114681.55|1992-09-23|4-NOT SPECIFIED|Clerk#000000140|0|e. dependencies need to haggle alongs|
-3557|121|F|85477.89|1992-11-09|2-HIGH|Clerk#000000291|0|ithely courts. furi|
-3558|28|O|112912.00|1996-02-29|1-URGENT|Clerk#000000841|0|around the furiously even requests. quickl|
-3559|106|F|30722.49|1992-10-24|3-MEDIUM|Clerk#000000634|0|sly deposits. fluffily final ideas cajole careful|
-3584|13|O|80487.97|1997-08-11|1-URGENT|Clerk#000000760|0|fully bold packages. fluffily final braids haggle final, ironic dolphins. b|
-3585|139|F|159015.39|1994-11-23|2-HIGH|Clerk#000000988|0|regular asymptotes. bold pains above the carefully pending asymptot|
-3586|121|F|112845.04|1993-12-05|2-HIGH|Clerk#000000438|0|he quickly final courts. carefully regular requests nag unusua|
-3587|79|O|174798.97|1996-05-10|4-NOT SPECIFIED|Clerk#000000443|0|ular patterns detect |
-3588|119|F|207925.83|1995-03-19|4-NOT SPECIFIED|Clerk#000000316|0|ong the pains. evenly unusual |
-3589|31|F|39103.37|1994-05-26|2-HIGH|Clerk#000000023|0|ithe deposits nag furiously. furiously pending packages sleep f|
-3590|149|P|218482.70|1995-05-13|5-LOW|Clerk#000000986|0|lyly final deposits.|
-3591|136|F|98140.86|1993-12-08|3-MEDIUM|Clerk#000000144|0|ual foxes haggle! unusual request|
-3616|128|F|60933.29|1994-02-16|4-NOT SPECIFIED|Clerk#000000268|0|uickly about the quickly final requests. fluffily final packages wake evenly|
-3617|40|O|126205.42|1996-03-19|3-MEDIUM|Clerk#000000886|0|the carefully regular platelets ha|
-3618|10|O|136954.81|1997-12-13|3-MEDIUM|Clerk#000000894|0|. ideas run carefully. thin, pending |
-3619|149|O|222274.54|1996-11-20|2-HIGH|Clerk#000000211|0|uests mold after the blithely ironic excuses. slyly pending pa|
-3620|44|O|59291.75|1997-03-07|5-LOW|Clerk#000000124|0|le quickly against the epitaphs. requests sleep slyly according to the|
-3621|142|F|106150.05|1993-05-06|3-MEDIUM|Clerk#000000643|0|kly unusual deposits. qu|
-3622|91|O|109202.90|1995-11-27|5-LOW|Clerk#000000012|0|c deposits are fluffily about the blithely final theo|
-3623|4|O|175017.68|1996-12-26|1-URGENT|Clerk#000000184|0|- ironic excuses boost quickly in place |
-3648|125|F|180417.11|1993-06-17|5-LOW|Clerk#000000717|0|foxes. unusual deposits boost quickly. slyly regular asymptotes across t|
-3649|40|F|124470.32|1994-07-06|5-LOW|Clerk#000000349|0|taphs boost above the final p|
-3650|46|F|189547.57|1992-05-28|4-NOT SPECIFIED|Clerk#000000454|0|kages sleep fluffily slyly|
-3651|100|O|113191.45|1998-04-27|1-URGENT|Clerk#000000222|0|ly unusual deposits thrash quickly after the ideas.|
-3652|107|O|107732.23|1997-02-25|4-NOT SPECIFIED|Clerk#000000024|0|sly even requests after the |
-3653|40|F|142866.39|1994-03-27|1-URGENT|Clerk#000000402|0| pearls. bold accounts are along the ironic,|
-3654|7|F|222653.54|1992-06-03|5-LOW|Clerk#000000475|0|s cajole slyly carefully special theodolites. even deposits haggl|
-3655|49|F|74882.22|1992-10-06|1-URGENT|Clerk#000000815|0|er the carefully unusual deposits sleep quickly according to|
-3680|127|F|124402.59|1992-12-10|4-NOT SPECIFIED|Clerk#000000793|0|ular platelets. carefully regular packages cajole blithely al|
-3681|52|F|36889.65|1992-04-04|1-URGENT|Clerk#000000566|0|. ironic deposits against the ironic, regular frets use pending plat|
-3682|32|O|67525.43|1997-01-22|2-HIGH|Clerk#000000001|0|es haggle carefully. decoys nag |
-3683|88|F|99960.46|1993-03-04|2-HIGH|Clerk#000000248|0|ze across the express foxes. carefully special acco|
-3684|23|F|89509.91|1993-07-20|2-HIGH|Clerk#000000835|0|bold accounts affix along the carefully ironic requ|
-3685|16|F|154958.89|1992-01-17|3-MEDIUM|Clerk#000000954|0| sleep fluffily special ide|
-3686|40|O|82190.77|1998-07-07|2-HIGH|Clerk#000000175|0|s. furiously final pinto beans poach carefully among |
-3687|43|F|99851.38|1993-02-03|1-URGENT|Clerk#000000585|0|gular accounts. slyly regular instructions can are final ide|
-3712|64|F|127527.05|1992-01-02|2-HIGH|Clerk#000000032|0| promise according |
-3713|149|O|215342.63|1998-05-07|3-MEDIUM|Clerk#000000325|0|s haggle quickly. ironic, regular Tiresi|
-3714|40|O|84493.55|1998-05-01|3-MEDIUM|Clerk#000000595|0|nding accounts. ironic pinto beans wake slyly. furiously pendin|
-3715|65|O|64000.93|1996-03-18|1-URGENT|Clerk#000000463|0| always silent requests wake pinto beans. slyly pending foxes are aga|
-3716|43|O|146221.66|1997-08-19|4-NOT SPECIFIED|Clerk#000000748|0| pending ideas haggle. ironic,|
-3717|28|O|176525.53|1998-06-03|4-NOT SPECIFIED|Clerk#000000974|0|t the carefully even ideas use sp|
-3718|31|O|63195.54|1996-10-23|2-HIGH|Clerk#000000016|0|refully. furiously final packages use carefully slyly pending deposits! final,|
-3719|118|O|139902.71|1997-02-16|2-HIGH|Clerk#000000034|0|, enticing accounts are blithely among the daringly final asymptotes. furious|
-3744|65|F|33085.68|1992-01-10|3-MEDIUM|Clerk#000000765|0|osits sublate about the regular requests. fluffily unusual accou|
-3745|112|F|19405.73|1993-09-29|5-LOW|Clerk#000000181|0|ckages poach slyly against the foxes. slyly ironic instructi|
-3746|74|F|80018.54|1994-09-11|4-NOT SPECIFIED|Clerk#000000188|0|. express, special requests nag quic|
-3747|149|O|204355.65|1996-08-20|1-URGENT|Clerk#000000226|0|refully across the final theodolites. carefully bold accounts cajol|
-3748|53|O|83804.38|1998-02-28|1-URGENT|Clerk#000000156|0|slyly special packages|
-3749|38|P|87073.89|1995-02-24|3-MEDIUM|Clerk#000000639|0|y regular instructions haggle blithel|
-3750|97|P|177181.67|1995-04-30|3-MEDIUM|Clerk#000000885|0|y. express, even packages wake after the ide|
-3751|10|F|202917.72|1994-04-27|4-NOT SPECIFIED|Clerk#000000925|0|sheaves. express, unusual t|
-3776|85|F|150349.92|1992-11-20|2-HIGH|Clerk#000000698|0|efully even platelets slee|
-3777|28|F|82467.29|1994-04-08|3-MEDIUM|Clerk#000000941|0| regular, special dolphins cajole enticingly ca|
-3778|106|F|221036.31|1993-05-26|1-URGENT|Clerk#000000187|0| above the express requests. packages maintain fluffily according to|
-3779|74|O|31538.94|1997-01-05|4-NOT SPECIFIED|Clerk#000000670|0| against the deposits. quickly bold instructions x-ray. pending fox|
-3780|41|O|65385.42|1996-04-13|5-LOW|Clerk#000000967|0| around the brave, pendin|
-3781|139|O|133864.82|1996-06-20|1-URGENT|Clerk#000000394|0|yly after the ruthless packages. pinto beans use slyly: never ironic dependenc|
-3782|65|O|145096.17|1996-08-24|1-URGENT|Clerk#000000121|0|counts are. pending, regular asym|
-3783|44|F|155017.92|1993-12-06|4-NOT SPECIFIED|Clerk#000000614|0| along the pinto beans. special packages use. regular theo|
-3808|79|F|228054.01|1994-04-24|1-URGENT|Clerk#000000717|0|odolites. blithely ironic cour|
-3809|148|O|143070.70|1996-05-01|5-LOW|Clerk#000000646|0| regular excuses. even theodolites are fluffily according to t|
-3810|100|F|124675.27|1992-09-17|1-URGENT|Clerk#000000660|0|ters sleep across the carefully final |
-3811|80|O|154967.89|1998-04-16|3-MEDIUM|Clerk#000000290|0|sits wake slyly abo|
-3812|41|O|70502.52|1996-08-13|3-MEDIUM|Clerk#000000727|0|al, final requests cajole|
-3813|146|O|77247.05|1998-06-29|1-URGENT|Clerk#000000531|0|g the furiously regular instructions|
-3814|118|P|149451.88|1995-02-22|5-LOW|Clerk#000000669|0| the furiously pending theodo|
-3815|104|O|14275.01|1997-08-26|1-URGENT|Clerk#000000249|0|es snooze carefully stealth|
-3840|100|O|187156.38|1998-07-17|4-NOT SPECIFIED|Clerk#000000713|0|yly slow theodolites. enticingly |
-3841|58|F|129033.13|1994-10-05|4-NOT SPECIFIED|Clerk#000000018|0| bold requests sleep quickly ironic packages. sometimes regular deposits nag |
-3842|28|F|131447.03|1992-04-09|5-LOW|Clerk#000000418|0|silent ideas. final deposits use furiously. blithely express excuses cajole fu|
-3843|10|O|34035.17|1997-01-04|4-NOT SPECIFIED|Clerk#000000693|0|eodolites; slyly unusual accounts nag boldly |
-3844|79|F|6793.45|1994-12-29|1-URGENT|Clerk#000000686|0|r dolphins. slyly ironic theodolites ag|
-3845|89|F|134333.33|1992-04-26|1-URGENT|Clerk#000000404|0|es among the pending, regular accounts sleep blithely blithely even de|
-3846|49|O|123120.06|1998-02-05|2-HIGH|Clerk#000000877|0|y alongside of the slyl|
-3847|34|F|7014.31|1993-03-12|5-LOW|Clerk#000000338|0|uriously even deposits. furiously pe|
-3872|134|O|198538.68|1996-09-06|5-LOW|Clerk#000000943|0|counts boost slyly against the ironic platelets-- blithely p|
-3873|55|O|95291.79|1998-03-30|4-NOT SPECIFIED|Clerk#000000791|0|express deposits-- even ideas |
-3874|119|F|66455.34|1993-06-09|3-MEDIUM|Clerk#000000208|0|ular asymptotes sleep blithely ironic ideas. blithel|
-3875|118|O|74483.95|1997-09-10|1-URGENT|Clerk#000000587|0| solve among the fluffily even |
-3876|29|O|95126.32|1996-08-02|5-LOW|Clerk#000000708|0|into beans. blithely|
-3877|17|F|178492.01|1993-05-21|5-LOW|Clerk#000000652|0|foxes. thinly bold reques|
-3878|88|O|59989.66|1997-03-23|1-URGENT|Clerk#000000314|0|e carefully regular platelets. special, express dependencies slee|
-3879|142|O|80274.22|1995-11-23|1-URGENT|Clerk#000000231|0|sts along the quickly ironic sentiments cajole carefully according to t|
-3904|149|O|39338.44|1997-11-15|4-NOT SPECIFIED|Clerk#000000883|0|sits haggle furiously across the requests. theodolites ha|
-3905|22|F|56227.04|1993-12-21|4-NOT SPECIFIED|Clerk#000000573|0|usly even accounts lose quietly above the slyly express p|
-3906|46|F|145630.76|1992-05-28|3-MEDIUM|Clerk#000000867|0|ironic theodolites haggle blithely above the final re|
-3907|67|F|240457.56|1992-08-19|3-MEDIUM|Clerk#000000084|0|gular pinto beans sleep f|
-3908|43|F|57127.71|1993-03-09|3-MEDIUM|Clerk#000000490|0|ounts cajole. regularly|
-3909|22|O|82746.74|1998-07-27|1-URGENT|Clerk#000000980|0|nic, special theodolites sleep furiously! furiously |
-3910|64|O|47272.67|1996-08-26|3-MEDIUM|Clerk#000000270|0|ickly. furiously final packag|
-3911|10|P|35019.95|1995-03-17|4-NOT SPECIFIED|Clerk#000000818|0|he fluffily final forges haggle slyly according to the blithely|
-3936|32|O|168618.39|1996-11-07|2-HIGH|Clerk#000000200|0|iously express packages engage slyly fina|
-3937|94|O|187516.29|1997-11-30|4-NOT SPECIFIED|Clerk#000000189|0|ckages boost carefully blithely q|
-3938|31|F|46918.22|1993-03-03|1-URGENT|Clerk#000000199|0|. unusual, final foxes haggle|
-3939|70|O|8720.45|1996-01-11|5-LOW|Clerk#000000647|0|ly ruthlessly silent requests. blithely regular requests haggle blithely wh|
-3940|149|O|129012.84|1996-02-14|5-LOW|Clerk#000000363|0|e above the ideas. quickly even dependencies along the blithely ir|
-3941|136|O|95453.80|1996-08-29|2-HIGH|Clerk#000000503|0|gular theodolites integrate quickly |
-3942|76|F|38596.81|1993-06-28|4-NOT SPECIFIED|Clerk#000000608|0|eas cajole bold requests. idly silent instructions |
-3943|40|O|60314.97|1996-10-09|5-LOW|Clerk#000000482|0|se alongside of the final pinto beans. regular packages boost across the ca|
-3968|25|O|121704.45|1997-02-17|4-NOT SPECIFIED|Clerk#000000431|0| the slyly special accounts; |
-3969|52|O|169797.40|1997-05-14|2-HIGH|Clerk#000000731|0|uriously final dependencies slee|
-3970|76|F|163709.85|1992-03-27|3-MEDIUM|Clerk#000000190|0|luffily furiously regular deposits. blithely special requests cajole blithely|
-3971|104|O|47925.47|1996-06-28|5-LOW|Clerk#000000287|0|alongside of the instructions ought to are |
-3972|124|F|1861.19|1994-04-21|3-MEDIUM|Clerk#000000049|0|y regular requests haggle quickly. pending, express acco|
-3973|103|F|91541.48|1992-03-24|4-NOT SPECIFIED|Clerk#000000114|0|somas according to the quickly even instructions wake fu|
-3974|94|O|56779.06|1996-03-05|4-NOT SPECIFIED|Clerk#000000938|0|deposits are furiously beneath the bl|
-3975|118|O|37804.43|1995-04-11|3-MEDIUM|Clerk#000000016|0|ts. regular, regular Tiresias play furiously. ironi|
-4000|70|F|84053.93|1992-01-04|5-LOW|Clerk#000000339|0|le carefully closely even pinto beans. regular, ironic foxes against the|
-4001|115|O|95929.46|1997-05-15|3-MEDIUM|Clerk#000000878|0|detect. asymptotes sleep furio|
-4002|104|O|76518.11|1997-04-08|5-LOW|Clerk#000000097|0| regular braids are. furiously even patterns agains|
-4003|112|F|17603.01|1993-01-27|1-URGENT|Clerk#000000177|0| blithe theodolites are slyly. slyly silent accounts toward|
-4004|70|F|220715.14|1993-05-07|3-MEDIUM|Clerk#000000273|0|accounts among the blithely regular sentiments |
-4005|140|O|129062.13|1996-11-20|2-HIGH|Clerk#000000341|0|ily according to the slyly iron|
-4006|35|F|70557.05|1995-01-04|3-MEDIUM|Clerk#000000765|0|ly ironic packages integrate. regular requests alongside of |
-4007|8|F|116193.97|1993-06-18|2-HIGH|Clerk#000000623|0|ecial packages. slyly regular accounts integrate |
-4032|10|O|62497.51|1998-02-26|3-MEDIUM|Clerk#000000686|0|iresias sleep slyly regular ideas. quickly unusual|
-4033|83|F|57740.74|1993-06-02|5-LOW|Clerk#000000181|0|ously bold instructions haggle furiously above the fluf|
-4034|94|F|186912.51|1993-11-14|4-NOT SPECIFIED|Clerk#000000548|0|ts x-ray. express requests affix fluffily regular theodolites. pending, fina|
-4035|118|F|22840.21|1992-02-19|5-LOW|Clerk#000000097|0|he ironic deposits sleep blith|
-4036|47|O|82563.10|1997-04-26|3-MEDIUM|Clerk#000000398|0|ly express deposits nag slyly. ironic, final asymptotes boost bra|
-4037|121|F|36389.43|1993-03-24|2-HIGH|Clerk#000000384|0|t carefully above the unusual the|
-4038|94|O|155045.39|1996-01-06|1-URGENT|Clerk#000000272|0|re slyly. silent requests wake quickly. regular packages play quickly |
-4039|29|O|143753.01|1997-11-16|1-URGENT|Clerk#000000358|0|ly ironic deposits. ironic reques|
-4064|130|O|148500.71|1996-10-10|4-NOT SPECIFIED|Clerk#000000598|0|ccounts. furiously unusual theodolites wake carefully about|
-4065|80|F|156345.64|1994-06-09|1-URGENT|Clerk#000000131|0|even foxes! slyly final deposits agai|
-4066|32|O|176911.21|1997-01-27|4-NOT SPECIFIED|Clerk#000000286|0|yly ironic dinos. quickly regular accounts haggle. requests wa|
-4067|16|F|136517.34|1992-10-07|2-HIGH|Clerk#000000027|0|tes boost furiously quick asymptotes. final deposits of the dolphins solv|
-4068|125|O|71852.67|1996-09-18|3-MEDIUM|Clerk#000000203|0|lly even accounts wake furiously across the unusual platelets. unusu|
-4069|73|F|198816.13|1992-05-13|3-MEDIUM|Clerk#000000359|0|deposits: slyly bold ideas detect furiously. f|
-4070|29|O|98275.37|1995-06-12|2-HIGH|Clerk#000000713|0|xpress ideas poach ab|
-4071|148|O|67789.42|1996-09-15|4-NOT SPECIFIED|Clerk#000000486|0|nal deposits. pending deposits d|
-4096|139|F|81089.61|1992-07-03|4-NOT SPECIFIED|Clerk#000000706|0|sits. quickly thin deposits x-ray blith|
-4097|10|O|134308.04|1996-05-24|1-URGENT|Clerk#000000475|0|ickly under the even accounts. even packages after the furiously express|
-4098|23|O|48478.54|1996-11-05|4-NOT SPECIFIED|Clerk#000000491|0|otes. quickly final requests after the stealthily ironic pinto bean|
-4099|17|F|207364.80|1992-08-21|1-URGENT|Clerk#000000379|0|r platelets. slyly regular requests cajole carefully against the|
-4100|4|O|3892.77|1996-03-12|3-MEDIUM|Clerk#000000429|0|posits. carefully unusual packages use pending deposits. regular she|
-4101|142|F|21640.10|1993-11-22|4-NOT SPECIFIED|Clerk#000000704|0|y around the express, careful epitaphs. accounts use fluffily. quickly p|
-4102|22|O|128786.57|1996-03-17|1-URGENT|Clerk#000000675|0|nding dependencies was slyly about the bl|
-4103|106|F|38164.23|1992-07-03|5-LOW|Clerk#000000679|0|fully ironic dependencies.|
-4128|139|O|5472.17|1995-10-07|4-NOT SPECIFIED|Clerk#000000635|0|ctions. dependencies from the slyly regular accounts nag slyly fu|
-4129|32|F|67226.28|1993-06-26|3-MEDIUM|Clerk#000000541|0|nwind. quickly final theodolites use packages. accounts|
-4130|104|O|47823.04|1996-03-10|5-LOW|Clerk#000000609|0|omise alongside of the carefully final foxes. blithel|
-4131|44|O|145971.60|1998-01-30|1-URGENT|Clerk#000000612|0| above the foxes hang |
-4132|19|P|65601.08|1995-05-29|4-NOT SPECIFIED|Clerk#000000158|0|ld asymptotes solve alongside of the express, final packages. fluffily fi|
-4133|101|F|31693.88|1992-08-07|4-NOT SPECIFIED|Clerk#000000268|0|al, express foxes. quickly pending deposits might cajole alongsi|
-4134|97|F|125191.12|1995-01-12|1-URGENT|Clerk#000000171|0|fully even deposits. regular de|
-4135|37|O|99577.55|1997-03-10|3-MEDIUM|Clerk#000000627|0|ly quietly even ideas. deposits haggle blithely|
-4160|55|O|82493.07|1996-08-20|5-LOW|Clerk#000000283|0|the carefully special accounts. furiously regular dugouts alongs|
-4161|118|F|198995.21|1993-08-21|5-LOW|Clerk#000000047|0|nts. fluffily regular foxes above the quickly daring reques|
-4162|22|F|72359.55|1992-02-10|5-LOW|Clerk#000000179|0|r packages are slyly accounts. furiously special foxes detect carefully re|
-4163|64|F|11493.80|1992-12-21|2-HIGH|Clerk#000000268|0| integrate furiously slyly regular depende|
-4164|94|O|8709.16|1998-07-03|2-HIGH|Clerk#000000720|0| regularly busy theodolites boost furiously quickly bold packages. express, s|
-4165|4|O|11405.40|1997-07-25|3-MEDIUM|Clerk#000000621|0|special foxes affix never blithely ironic pinto beans; blithely |
-4166|43|F|100671.06|1993-02-28|5-LOW|Clerk#000000757|0|quickly sly forges impress. careful foxes across the blithely even a|
-4167|28|O|62108.45|1998-06-17|1-URGENT|Clerk#000000917|0|kly furiously even deposits. unu|
-4192|146|O|197192.95|1998-04-19|1-URGENT|Clerk#000000369|0|equests above the slyly regular pinto beans unwi|
-4193|4|F|143191.54|1994-01-09|2-HIGH|Clerk#000000201|0|ng accounts haggle quickly. packages use fluffily ironic excu|
-4194|106|F|62972.29|1994-10-16|3-MEDIUM|Clerk#000000385|0| instructions are quickly even pinto beans. courts boost furiously regular, ev|
-4195|104|F|54478.95|1993-05-29|4-NOT SPECIFIED|Clerk#000000777|0| pinto beans cajole furiously theodolites-- slyly regular deposits doub|
-4196|106|O|201455.98|1998-05-15|3-MEDIUM|Clerk#000000532|0|affix carefully. quickly final requests |
-4197|92|O|217709.03|1996-08-13|4-NOT SPECIFIED|Clerk#000000264|0| pinto beans according|
-4198|143|O|105789.01|1997-06-16|3-MEDIUM|Clerk#000000583|0|g the special packages haggle pen|
-4199|5|F|30494.62|1992-02-13|1-URGENT|Clerk#000000309|0|e blithely. special deposits haggle slyly final foxes. carefully even|
-4224|70|O|150655.44|1997-07-14|1-URGENT|Clerk#000000034|0|jole quickly final dolphins. slyly pending foxes wake furiously bold pl|
-4225|128|O|72533.07|1997-06-03|3-MEDIUM|Clerk#000000992|0|r the platelets nag among the special deposits. ironic, ironic re|
-4226|92|F|29827.44|1993-03-09|5-LOW|Clerk#000000203|0|phins wake slyly regular packages. deposits haggle slowl|
-4227|133|F|92261.08|1995-02-24|1-URGENT|Clerk#000000063|0|ng the requests; ideas haggle fluffily. slyly unusual ideas c|
-4228|110|O|22072.16|1997-03-28|5-LOW|Clerk#000000309|0|pecial requests aft|
-4229|14|O|75145.87|1998-03-03|1-URGENT|Clerk#000000301|0|p furiously: final excuses hagg|
-4230|140|F|219709.60|1992-03-04|1-URGENT|Clerk#000000364|0|lly ironic deposits integrate carefully about the fu|
-4231|86|O|111403.66|1997-11-20|4-NOT SPECIFIED|Clerk#000000630|0|ly final accounts cajole furiously accounts. bravely ironic platelets am|
-4256|118|F|23067.48|1992-04-05|4-NOT SPECIFIED|Clerk#000000043|0|y alongside of the fluffily iro|
-4257|17|P|41723.86|1995-03-25|3-MEDIUM|Clerk#000000682|0|r ideas cajole along the blithely regular gifts.|
-4258|92|O|133829.35|1996-10-27|4-NOT SPECIFIED|Clerk#000000364|0|efully final platelets around the blit|
-4259|104|O|12918.70|1997-10-09|5-LOW|Clerk#000000781|0|es snooze slyly against the furiously unusual ideas. furious|
-4260|142|F|18566.14|1992-05-16|4-NOT SPECIFIED|Clerk#000000919|0|e among the fluffily bold accounts.|
-4261|118|F|83665.20|1992-10-03|1-URGENT|Clerk#000000662|0| about the even, pending packages. slyly bold deposits boost|
-4262|88|O|176278.57|1996-08-04|3-MEDIUM|Clerk#000000239|0| of the furious accounts. furiously regular accounts w|
-4263|4|O|158885.83|1998-03-16|1-URGENT|Clerk#000000265|0|sly ruthless deposits. final packages are instructions. fu|
-4288|34|F|75030.81|1992-12-04|4-NOT SPECIFIED|Clerk#000000823|0|usly carefully even theodolites: slyly express pac|
-4289|125|F|20752.62|1993-10-07|3-MEDIUM|Clerk#000000912|0|e carefully close instructions. slyly special reques|
-4290|41|F|26128.99|1995-01-15|3-MEDIUM|Clerk#000000688|0| slyly quickly bold requests. final deposits haggle pending ideas! som|
-4291|89|F|71822.86|1993-11-29|3-MEDIUM|Clerk#000000655|0| sleep fluffily between the bold packages. bold|
-4292|25|F|145906.24|1992-01-09|3-MEDIUM|Clerk#000000794|0| ruthlessly. slyly bo|
-4293|103|O|198322.91|1996-08-20|2-HIGH|Clerk#000000750|0|ly packages. regular packages nag according to t|
-4294|49|F|232194.74|1992-08-15|3-MEDIUM|Clerk#000000407|0|ng pinto beans breach. slyly express requests bo|
-4295|5|O|77754.62|1996-02-10|3-MEDIUM|Clerk#000000023|0|e boldly bold dependencies|
-4320|115|O|67049.37|1996-12-08|4-NOT SPECIFIED|Clerk#000000223|0|ages haggle after the slowly bold se|
-4321|16|F|118896.95|1994-07-18|3-MEDIUM|Clerk#000000041|0|ending deposits are carefully carefully regular packa|
-4322|142|O|149671.92|1998-03-13|3-MEDIUM|Clerk#000000433|0|totes nag across the fluffily special instructions. quickly silent hockey |
-4323|104|F|27598.17|1994-01-23|2-HIGH|Clerk#000000282|0|lve after the slyly regular multipliers. even, regular excus|
-4324|73|O|178249.05|1995-07-17|1-URGENT|Clerk#000000800|0|ccounts. slyly stealthy requests shall have t|
-4325|130|O|20214.49|1996-07-18|2-HIGH|Clerk#000000591|0|y around the always ev|
-4326|29|O|39048.94|1996-10-27|4-NOT SPECIFIED|Clerk#000000869|0|packages. carefully express deposit|
-4327|146|P|126235.35|1995-03-16|2-HIGH|Clerk#000000571|0|yly pending braids. final requests abo|
-4352|14|O|18653.09|1997-11-26|2-HIGH|Clerk#000000620|0|ly final platelets integrate carefully even requ|
-4353|73|O|21815.30|1997-12-12|2-HIGH|Clerk#000000790|0|uickly even ideas cajole|
-4354|145|F|179827.12|1994-09-30|4-NOT SPECIFIED|Clerk#000000046|0|pending notornis. requests serve |
-4355|4|O|186370.23|1996-11-16|1-URGENT|Clerk#000000362|0|ndencies use furiously across the regular |
-4356|97|F|39828.51|1994-04-11|5-LOW|Clerk#000000956|0| asymptotes sleep blithely. asymptotes sleep. blithely regul|
-4357|47|O|67045.94|1997-10-23|4-NOT SPECIFIED|Clerk#000000031|0|ages nag between the|
-4358|25|O|46298.53|1997-08-12|1-URGENT|Clerk#000000692|0|according to the fluffily special asymptotes |
-4359|16|F|107824.40|1993-03-03|1-URGENT|Clerk#000000393|0|sts. special, unusual deposits across the ironic theodo|
-4384|25|F|52562.16|1992-07-13|1-URGENT|Clerk#000000192|0|onic platelets. furiously regular asymptotes according to the special pac|
-4385|122|O|39190.62|1996-08-06|2-HIGH|Clerk#000000597|0|ully final requests. ironic, even dolphins above the regular |
-4386|61|O|134413.58|1998-02-06|5-LOW|Clerk#000000070|0| dolphins. silent, idle pinto beans |
-4387|110|O|116740.67|1995-10-23|1-URGENT|Clerk#000000025|0|ter the regular pinto beans. special, final gifts above the requests wi|
-4388|10|O|69668.22|1996-03-28|2-HIGH|Clerk#000000715|0|ts wake against the carefully final accounts. sly|
-4389|55|F|120324.82|1994-05-05|3-MEDIUM|Clerk#000000403|0|wly express excuses after the permanently even instructions are|
-4390|7|P|140608.69|1995-05-23|1-URGENT|Clerk#000000691|0|inal pinto beans. exp|
-4391|38|F|48284.06|1992-02-18|2-HIGH|Clerk#000000880|0|regular accounts. even depo|
-4416|149|F|76067.10|1992-06-30|5-LOW|Clerk#000000391|0| deposits. ideas cajole express theodolites: |
-4417|67|O|60868.39|1998-07-09|1-URGENT|Clerk#000000365|0|ideas are alongside of the blithely final reque|
-4418|61|F|47099.71|1993-03-25|3-MEDIUM|Clerk#000000731|0|pecial pinto beans. close foxes affix iron|
-4419|104|O|94030.43|1996-06-12|4-NOT SPECIFIED|Clerk#000000410|0|ages wake furiously slyly thin theodolit|
-4420|109|F|6088.41|1994-06-18|1-URGENT|Clerk#000000706|0|lly bold deposits along the bold, pending foxes detect blithely after the acco|
-4421|10|O|258779.02|1997-04-04|3-MEDIUM|Clerk#000000246|0|t the pending warhorses. express waters a|
-4422|70|P|107140.22|1995-05-22|3-MEDIUM|Clerk#000000938|0|ly bold accounts sleep special, regular foxes. doggedly regular in|
-4423|64|F|4913.06|1995-02-17|5-LOW|Clerk#000000888|0|excuses are ruthless|
-4448|70|O|127191.47|1998-05-21|2-HIGH|Clerk#000000428|0|. deposits haggle around the silent packages; slyly unusual packages|
-4449|10|O|48206.14|1998-02-08|5-LOW|Clerk#000000035|0|ourts are carefully even deposits. pending |
-4450|106|O|110194.31|1997-07-15|1-URGENT|Clerk#000000867|0|quests boost. furiously even realms are blithely bold requests. bl|
-4451|4|F|92851.80|1994-10-01|1-URGENT|Clerk#000000181|0|. carefully final foxes along the quickly express T|
-4452|13|F|64838.66|1994-06-21|5-LOW|Clerk#000000985|0|oxes are slyly. express, ironic pinto beans wake after the quickly pending re|
-4453|65|O|137030.40|1997-04-01|3-MEDIUM|Clerk#000000603|0|ages could have to nag slyly furiously even asymptotes! slowly regular |
-4454|142|F|159578.94|1994-02-02|5-LOW|Clerk#000000411|0|uriously regular pint|
-4455|19|F|102534.63|1993-10-11|3-MEDIUM|Clerk#000000924|0|even requests. bravely regular foxes according to the carefully unusual |
-4480|85|F|28658.26|1994-03-31|4-NOT SPECIFIED|Clerk#000000534|0|press, bold deposits boost blit|
-4481|148|O|77705.40|1996-03-30|5-LOW|Clerk#000000443|0|press sheaves cajole furio|
-4482|82|P|63535.56|1995-05-15|4-NOT SPECIFIED|Clerk#000000534|0|ravely bold accounts. furiously ironic instructions affix quickly. pend|
-4483|52|F|126597.21|1992-03-07|3-MEDIUM|Clerk#000000615|0|its. blithely idle accounts run; theodolites wake carefully around the fi|
-4484|131|O|237947.61|1996-12-24|1-URGENT|Clerk#000000392|0|ct across the pinto beans. quickly pending excuses engage furiously.|
-4485|53|F|182432.17|1994-11-13|3-MEDIUM|Clerk#000000038|0|es wake slyly even packages. blithely brave requests nag above the regul|
-4486|37|O|135613.18|1998-03-03|2-HIGH|Clerk#000000656|0|ffily according to the carefully pending acc|
-4487|46|F|109469.90|1993-02-23|3-MEDIUM|Clerk#000000017|0|s up the never pending excuses wake furiously special pinto beans. furiously i|
-4512|70|O|148682.82|1995-10-25|5-LOW|Clerk#000000393|0|ending instructions maintain fu|
-4513|85|O|119820.38|1996-03-15|5-LOW|Clerk#000000154|0|ests. final, final ideas|
-4514|97|F|143899.85|1994-04-30|3-MEDIUM|Clerk#000000074|0|deposits according to the carefull|
-4515|140|F|161745.44|1992-03-17|1-URGENT|Clerk#000000191|0|quests among the accounts sleep boldly about the regular f|
-4516|130|F|35949.14|1994-03-29|3-MEDIUM|Clerk#000000739|0|ing packages sleep slyly regular attainments|
-4517|113|O|47614.08|1998-03-07|4-NOT SPECIFIED|Clerk#000000231|0|uriously final deposits doze furiously furiously reg|
-4518|125|O|25861.74|1997-05-01|3-MEDIUM|Clerk#000000187|0|luffily against the spec|
-4519|136|F|68885.66|1993-03-30|4-NOT SPECIFIED|Clerk#000000938|0|ccording to the final |
-4544|112|O|151148.81|1997-08-07|3-MEDIUM|Clerk#000000435|0|g dependencies dazzle slyly ironic somas. carefu|
-4545|59|F|143276.28|1993-01-17|4-NOT SPECIFIED|Clerk#000000303|0|ep. requests use sly|
-4546|43|O|39906.87|1995-07-29|5-LOW|Clerk#000000373|0|ns sleep. regular, regular instructions maintai|
-4547|109|F|52114.01|1993-08-23|3-MEDIUM|Clerk#000000519|0|uctions thrash platelets. slyly final foxes wake slyly against th|
-4548|127|O|139915.23|1996-06-28|5-LOW|Clerk#000000798|0| in place of the blithely express sentiments haggle slyly r|
-4549|64|O|43889.17|1998-03-05|4-NOT SPECIFIED|Clerk#000000965|0|ully even deposits dazzle. fluffily pending ideas against the requests|
-4550|118|F|27461.48|1994-12-29|2-HIGH|Clerk#000000748|0|s haggle carefully acco|
-4551|109|O|82824.14|1996-02-09|2-HIGH|Clerk#000000462|0|ts. slyly quick theodolite|
-4576|139|O|56936.10|1996-08-14|5-LOW|Clerk#000000798|0|e pending deposits. |
-4577|79|O|104259.88|1998-05-02|5-LOW|Clerk#000000409|0|ly. unusual platelets are alw|
-4578|91|F|95761.93|1992-09-13|5-LOW|Clerk#000000121|0| to the furiously ironic instructions? furiou|
-4579|106|O|85927.85|1995-12-01|2-HIGH|Clerk#000000951|0|its wake quickly blithely specia|
-4580|82|F|118464.65|1993-11-15|4-NOT SPECIFIED|Clerk#000000086|0|rs wake blithely regular requests. fluffily ev|
-4581|79|F|89592.11|1992-09-04|4-NOT SPECIFIED|Clerk#000000687|0|ges. carefully pending accounts use furiously abo|
-4582|19|O|18247.86|1996-07-04|1-URGENT|Clerk#000000638|0|g the furiously regular pac|
-4583|22|F|206495.43|1994-09-25|3-MEDIUM|Clerk#000000240|0|equests. slyly even platelets was qui|
-4608|80|F|157767.86|1994-06-17|1-URGENT|Clerk#000000259|0|y even instructions detect slyly asymptotes. blithely final packa|
-4609|133|O|70462.84|1996-12-05|3-MEDIUM|Clerk#000000239|0|hang slyly slyly expre|
-4610|26|F|135934.60|1993-06-18|5-LOW|Clerk#000000616|0|e carefully express pinto|
-4611|29|F|166506.22|1993-01-10|2-HIGH|Clerk#000000152|0|. furiously regular instructions haggle dolphins. even instructions det|
-4612|61|F|82598.87|1993-09-20|3-MEDIUM|Clerk#000000397|0|bove the deposits. even deposits dazzle. slyly express packages haggle sl|
-4613|133|O|212339.55|1998-03-05|3-MEDIUM|Clerk#000000541|0|furiously blithely pending dependen|
-4614|61|O|151801.06|1996-04-22|1-URGENT|Clerk#000000974|0| sauternes wake thinly special accounts. fur|
-4615|29|F|10500.27|1993-08-27|3-MEDIUM|Clerk#000000982|0|jole after the fluffily pending foxes. packages affix carefully acco|
-4640|97|O|81138.17|1996-01-01|5-LOW|Clerk#000000902|0|requests. deposits do detect above the blithely iron|
-4641|134|F|98485.21|1993-01-20|4-NOT SPECIFIED|Clerk#000000755|0|ronic, final requests integrate slyly: specia|
-4642|148|F|117537.87|1995-02-27|1-URGENT|Clerk#000000295|0|cial requests wake carefully around the regular, unusual ideas. furi|
-4643|67|O|52414.19|1995-06-30|2-HIGH|Clerk#000000292|0|ously regular packages. unusual, special platel|
-4644|94|O|85901.70|1998-01-17|5-LOW|Clerk#000000961|0|requests. fluffily even ideas bo|
-4645|44|F|231012.22|1994-09-20|1-URGENT|Clerk#000000764|0|fully even instructions. final gifts sublate quickly final requests. bl|
-4646|83|O|124637.19|1996-06-18|1-URGENT|Clerk#000000036|0|n place of the blithely qu|
-4647|28|F|110958.36|1994-05-14|3-MEDIUM|Clerk#000000626|0|out the deposits. slyly final pinto beans haggle idly. slyly s|
-4672|79|O|199593.71|1995-11-07|1-URGENT|Clerk#000000475|0|lyly final dependencies caj|
-4673|82|O|58094.75|1996-08-13|4-NOT SPECIFIED|Clerk#000000914|0|c deposits are slyly. bravely ironic deposits cajole carefully after the |
-4674|37|F|115411.37|1994-04-19|1-URGENT|Clerk#000000122|0|careful hockey players. carefully pending deposits caj|
-4675|86|F|68817.08|1993-11-25|4-NOT SPECIFIED|Clerk#000000741|0|al deposits haggle slyly final|
-4676|14|O|182025.95|1995-09-01|2-HIGH|Clerk#000000407|0|s. slyly bold accounts sleep furiously special|
-4677|40|O|25661.87|1998-02-21|3-MEDIUM|Clerk#000000245|0|ly pending deposits after the carefully regular foxes sleep blithely after t|
-4678|88|O|131752.07|1998-08-02|4-NOT SPECIFIED|Clerk#000000175|0|side of the bold platelets detect slyly blithely ironic e|
-4679|88|F|7211.59|1993-01-20|2-HIGH|Clerk#000000905|0|ely regular accounts affix slyly. final dolphins are. furiously final de|
-4704|2|O|63873.14|1996-08-16|4-NOT SPECIFIED|Clerk#000000256|0|lithely final requests about the fluffily regular |
-4705|98|F|173340.09|1992-03-22|4-NOT SPECIFIED|Clerk#000000522|0| special instructions poa|
-4706|25|F|101709.52|1992-12-29|4-NOT SPECIFIED|Clerk#000000722|0| packages above the never regular packages nag packages. deposits c|
-4707|91|F|61052.10|1995-02-27|2-HIGH|Clerk#000000943|0|ully enticing accounts behind the regular|
-4708|85|F|56998.36|1994-10-01|1-URGENT|Clerk#000000383|0|ly thinly even accounts. unusu|
-4709|26|O|49903.57|1996-01-08|3-MEDIUM|Clerk#000000785|0|he furiously even deposits! ironic theodolites haggle blithely. r|
-4710|100|F|88966.68|1994-12-08|4-NOT SPECIFIED|Clerk#000000734|0|the final, regular foxes. carefully ironic pattern|
-4711|142|O|129546.56|1998-05-06|1-URGENT|Clerk#000000818|0|mptotes. unusual packages wake furiously qui|
-4736|139|O|67572.73|1995-11-20|2-HIGH|Clerk#000000563|0|blithely regular courts affix into the carefully ironic deposits. slyly exp|
-4737|79|F|62014.51|1993-03-11|4-NOT SPECIFIED|Clerk#000000275|0|ents use slyly among the unusual, ironic pearls. furiously pending |
-4738|5|F|149466.62|1992-04-08|2-HIGH|Clerk#000000150|0|deposits. thin acco|
-4739|148|F|68255.82|1993-02-21|5-LOW|Clerk#000000872|0|ing to the pending attainments: pending, express account|
-4740|68|O|42579.40|1996-07-05|2-HIGH|Clerk#000000420|0| dependencies haggle about the|
-4741|127|F|180692.90|1992-07-07|4-NOT SPECIFIED|Clerk#000000983|0|ly bold deposits are slyly about the r|
-4742|64|P|155356.80|1995-03-23|3-MEDIUM|Clerk#000000058|0|n packages. quickly regular ideas cajole blithely|
-4743|97|F|65702.39|1993-03-31|5-LOW|Clerk#000000048|0|pinto beans above the bold, even idea|
-4768|136|F|4820.55|1993-11-22|2-HIGH|Clerk#000000875|0|ctions snooze idly beneath the quick waters. fluffily u|
-4769|121|P|136765.03|1995-04-14|4-NOT SPECIFIED|Clerk#000000116|0|pon the asymptotes. idle, final account|
-4770|59|O|72150.68|1995-06-20|2-HIGH|Clerk#000000461|0|cial instructions believe carefully. |
-4771|95|F|49625.21|1992-12-14|1-URGENT|Clerk#000000571|0|lly express deposits serve furiously along the f|
-4772|28|F|64102.93|1994-09-14|1-URGENT|Clerk#000000708|0|es sleep. regular requests haggle furiously slyly |
-4773|122|O|196080.26|1995-12-23|1-URGENT|Clerk#000000327|0|ptotes was slyly along the|
-4774|52|F|124380.73|1993-04-20|3-MEDIUM|Clerk#000000299|0|eposits use blithely bold deposits. carefully regular gifts about the fin|
-4775|128|O|112444.42|1995-08-13|4-NOT SPECIFIED|Clerk#000000609|0|s integrate slyly slyly final instructions. carefully bold pack|
-4800|37|F|91795.13|1992-01-06|5-LOW|Clerk#000000625|0|ggle furiously along the pending pinto beans. deposits use: final foxe|
-4801|88|O|108353.08|1996-01-25|1-URGENT|Clerk#000000553|0|r the final sentiments. pending theodolites sleep doggedly across t|
-4802|130|O|5978.65|1997-01-23|3-MEDIUM|Clerk#000000400|0| ironic, thin packages wake furiously ironic, ironic deposits. the|
-4803|124|O|158776.68|1996-02-08|5-LOW|Clerk#000000892|0|lly unusual courts are ironic|
-4804|37|F|111547.31|1992-01-28|2-HIGH|Clerk#000000614|0|ly final accounts. blithely unusual theodolite|
-4805|16|F|172102.96|1992-04-25|4-NOT SPECIFIED|Clerk#000000514|0|even accounts wake furiously slyly final accounts; blithel|
-4806|7|F|35390.15|1993-04-21|5-LOW|Clerk#000000625|0|ave accounts. furiously pending wa|
-4807|53|O|138902.23|1997-01-09|3-MEDIUM|Clerk#000000310|0|kly. slyly special accounts|
-4832|34|O|84954.79|1997-12-04|3-MEDIUM|Clerk#000000548|0|final accounts sleep among the blithe|
-4833|133|O|84800.44|1996-05-12|3-MEDIUM|Clerk#000000256|0|r deposits against the slyly final excuses slee|
-4834|19|O|124539.00|1996-09-12|2-HIGH|Clerk#000000284|0|lar accounts. furiously ironic accounts haggle slyly |
-4835|146|F|70857.51|1994-10-25|1-URGENT|Clerk#000000250|0|s integrate furiously blithely expr|
-4836|65|O|78711.40|1996-12-18|1-URGENT|Clerk#000000691|0|c packages cajole carefully through the accounts. careful|
-4837|130|O|68519.84|1998-04-24|4-NOT SPECIFIED|Clerk#000000517|0|n accounts are regular, bold accounts. even instructions use request|
-4838|44|F|61811.33|1992-08-02|1-URGENT|Clerk#000000569|0|ffily bold sentiments. carefully close dolphins cajole across the |
-4839|25|F|71241.63|1994-05-10|1-URGENT|Clerk#000000925|0| even somas. slyly express ideas lose carefully. blithely unusu|
-4864|88|F|149614.34|1992-11-11|5-LOW|Clerk#000000423|0|ests nag within the quickly ironic asymptotes. ironic|
-4865|85|O|162113.46|1997-06-07|3-MEDIUM|Clerk#000000418|0|sits boost stealthily above the bl|
-4866|53|O|25767.07|1997-08-07|2-HIGH|Clerk#000000663|0|kages. unusual packages nag fluffily. qui|
-4867|10|F|9741.03|1992-05-21|1-URGENT|Clerk#000000891|0|ss the slyly regular dependencies. fluffily regular deposits within the car|
-4868|76|O|159005.35|1997-03-02|5-LOW|Clerk#000000729|0|regular asymptotes. regular packages sublate carefully al|
-4869|58|F|175422.13|1994-09-26|5-LOW|Clerk#000000802|0|boost! ironic packages un|
-4870|103|F|94534.07|1994-08-06|3-MEDIUM|Clerk#000000911|0|nto beans about the blithely regular d|
-4871|46|O|129636.99|1995-06-12|1-URGENT|Clerk#000000531|0|ven, special instructions across t|
-4896|85|F|93206.35|1992-08-22|1-URGENT|Clerk#000000622|0|sly pending deposits. final accounts boost above the sly, even|
-4897|80|F|115688.85|1992-09-17|5-LOW|Clerk#000000184|0|s. bold pinto beans sleep. evenly final accounts daz|
-4898|14|F|40572.64|1994-07-11|4-NOT SPECIFIED|Clerk#000000841|0|final patterns. special theodolites haggle ruthlessly at the blithely spec|
-4899|61|F|12291.83|1993-10-18|4-NOT SPECIFIED|Clerk#000000348|0| instructions. furiously even packages are furiously speci|
-4900|137|F|221320.76|1992-06-30|4-NOT SPECIFIED|Clerk#000000878|0|sleep quickly unusual |
-4901|79|O|146298.28|1997-12-31|4-NOT SPECIFIED|Clerk#000000980|0|inal dependencies cajole furiously. carefully express accounts na|
-4902|139|O|26011.20|1998-07-04|3-MEDIUM|Clerk#000000874|0| the slyly express dolphins. |
-4903|92|F|34363.63|1992-03-22|4-NOT SPECIFIED|Clerk#000000907|0|yly. multipliers within the fo|
-4928|4|F|59931.42|1993-10-04|4-NOT SPECIFIED|Clerk#000000952|0|slyly brave instructions after the ironic excuses haggle ruthlessly about|
-4929|149|O|135187.33|1996-02-29|3-MEDIUM|Clerk#000000109|0|uests. furiously special ideas poach. pending |
-4930|149|F|176867.34|1994-05-06|5-LOW|Clerk#000000593|0| haggle slyly quietly final theodolites. packages are furious|
-4931|50|F|115759.13|1994-11-17|1-URGENT|Clerk#000000356|0|leep. slyly express dolphins nag slyly. furiously regular s|
-4932|122|F|42927.07|1993-08-10|1-URGENT|Clerk#000000830|0|onic foxes. enticingly reg|
-4933|94|O|42945.82|1995-07-14|3-MEDIUM|Clerk#000000848|0|y special sauternes integr|
-4934|40|O|180478.16|1997-02-17|1-URGENT|Clerk#000000372|0|nes cajole; carefully special accounts haggle. special pinto beans nag |
-4935|40|F|162088.30|1993-05-25|4-NOT SPECIFIED|Clerk#000000601|0|c foxes. fluffily pendin|
-4960|124|F|153259.41|1995-02-26|5-LOW|Clerk#000000229|0|uriously even excuses. fluffily regular instructions along the furiously ironi|
-4961|58|O|89224.24|1998-04-06|3-MEDIUM|Clerk#000000731|0| braids. furiously even theodolites |
-4962|104|F|44781.32|1993-07-28|3-MEDIUM|Clerk#000000008|0| breach never ironic |
-4963|34|O|54175.35|1996-11-07|3-MEDIUM|Clerk#000000754|0|ully unusual epitaphs nod s|
-4964|101|O|204163.10|1997-07-28|4-NOT SPECIFIED|Clerk#000000144|0|ithely final theodolites. blithely regu|
-4965|52|F|110626.82|1993-10-21|5-LOW|Clerk#000000638|0|dependencies poach packages. sometim|
-4966|70|O|59186.02|1996-09-07|2-HIGH|Clerk#000000243|0|accounts. blithely ironic courts wake boldly furiously express |
-4967|98|O|103814.27|1997-02-17|3-MEDIUM|Clerk#000000397|0|e theodolites; furiously b|
-4992|62|F|203904.80|1992-05-10|1-URGENT|Clerk#000000166|0|telets nag carefully am|
-4993|13|F|145730.19|1994-08-04|4-NOT SPECIFIED|Clerk#000000258|0|ing instructions nag furiously. un|
-4994|43|O|216071.76|1996-06-29|4-NOT SPECIFIED|Clerk#000000868|0|oxes wake above the asymptotes. bold requests sleep br|
-4995|40|O|189651.76|1996-01-06|4-NOT SPECIFIED|Clerk#000000748|0|s. even deposits boost along the express, even theodolites. stealthily ir|
-4996|133|F|100750.67|1992-09-14|3-MEDIUM|Clerk#000000433|0|foxes. carefully special packages haggle quickly fluffi|
-4997|47|O|122611.05|1998-03-18|5-LOW|Clerk#000000040|0|egrate final pinto beans. fluffily special notornis use blith|
-4998|32|F|129096.80|1992-01-11|4-NOT SPECIFIED|Clerk#000000054|0|alongside of the quickly final requests hang always|
-4999|85|F|98643.17|1993-06-26|2-HIGH|Clerk#000000504|0| dolphins cajole blithely above the sly |
-5024|124|O|116127.69|1996-10-25|3-MEDIUM|Clerk#000000659|0|r foxes. regular excuses are about the quickly regular theodolites. regular, |
-5025|121|O|20099.43|1997-02-03|5-LOW|Clerk#000000805|0|ackages are slyly about the quickly |
-5026|28|O|13197.78|1997-09-06|1-URGENT|Clerk#000000955|0|y final requests us|
-5027|148|O|181346.56|1997-08-30|2-HIGH|Clerk#000000751|0|e-- final, pending requests along t|
-5028|13|F|30755.69|1992-04-17|2-HIGH|Clerk#000000180|0|ickly blithely express deposits. b|
-5029|11|F|19811.69|1992-11-14|3-MEDIUM|Clerk#000000469|0|. regular accounts haggle slyly. regul|
-5030|106|O|71781.23|1998-05-25|4-NOT SPECIFIED|Clerk#000000564|0| wake slyly furiously thin requests. ironic pinto beans ha|
-5031|139|F|91438.59|1994-12-02|3-MEDIUM|Clerk#000000788|0|lar instructions haggle blithely pending foxes? sometimes final excuses h|
-5056|52|O|62258.18|1997-02-15|5-LOW|Clerk#000000828|0|lithely above the express ideas. blithely final deposits are fluffily spec|
-5057|64|O|76164.41|1997-08-03|1-URGENT|Clerk#000000955|0|r ironic requests of the carefully ironic dependencies wake slyly a|
-5058|119|O|17031.01|1998-03-23|1-URGENT|Clerk#000000367|0| the pending packages wake after the quickly speci|
-5059|43|F|67173.82|1993-11-10|2-HIGH|Clerk#000000058|0|latelets. final, regular accounts cajole furiously ironic pinto beans? do|
-5060|112|F|65218.47|1992-07-07|4-NOT SPECIFIED|Clerk#000000333|0|e according to the excuses. express theodo|
-5061|101|F|52190.52|1993-08-14|1-URGENT|Clerk#000000009|0|e packages use fluffily according to the carefully ironic deposits. bol|
-5062|61|F|109247.00|1992-10-08|3-MEDIUM|Clerk#000000012|0|ithely. blithely bold theodolites affix. blithely final deposits haggle ac|
-5063|23|O|98753.57|1997-05-17|2-HIGH|Clerk#000000745|0|lyly after the pending foxes. express theodolites breach across t|
-5088|130|F|101616.44|1993-01-06|5-LOW|Clerk#000000930|0|ole slyly since the quickly ironic br|
-5089|130|F|109246.54|1992-07-29|1-URGENT|Clerk#000000677|0|cial platelets. quiet, final ideas cajole carefully. unusu|
-5090|89|O|132838.49|1997-03-09|1-URGENT|Clerk#000000953|0|ress accounts affix silently carefully quick accounts. carefully f|
-5091|148|O|47852.06|1998-05-21|3-MEDIUM|Clerk#000000311|0|egular decoys mold carefully fluffily unus|
-5092|22|O|195834.96|1995-10-30|5-LOW|Clerk#000000194|0|are blithely along the pin|
-5093|79|F|190693.92|1993-09-03|3-MEDIUM|Clerk#000000802|0|ully ironic theodolites sleep above the furiously ruthless instructions. bli|
-5094|106|F|74892.08|1993-03-29|4-NOT SPECIFIED|Clerk#000000406|0|uickly pending deposits haggle quickly ide|
-5095|97|F|184583.99|1992-04-22|2-HIGH|Clerk#000000964|0|accounts are carefully! slyly even packages wake slyly a|
-5120|16|O|28007.73|1996-06-05|1-URGENT|Clerk#000000332|0|against the slyly express requests. furiousl|
-5121|133|F|150334.57|1992-05-11|4-NOT SPECIFIED|Clerk#000000736|0|gular requests. furiously final pearls against the permanent, thin courts s|
-5122|70|O|79863.84|1996-02-10|5-LOW|Clerk#000000780|0|blithely. slyly ironic deposits nag. excuses s|
-5123|10|O|11850.45|1998-02-10|1-URGENT|Clerk#000000776|0|ic requests. furiously ironic packages grow above the express, ironic inst|
-5124|25|O|159170.80|1997-04-04|4-NOT SPECIFIED|Clerk#000000749|0|kly even courts. bold packages solve. |
-5125|28|O|38065.28|1998-02-07|5-LOW|Clerk#000000834|0|ructions. dolphins wake slowly carefully unusual |
-5126|112|F|92123.32|1992-10-12|4-NOT SPECIFIED|Clerk#000000270|0|s. unusual deposits |
-5127|73|O|48024.99|1997-01-15|5-LOW|Clerk#000000829|0|fully express pinto beans. slyly final accounts along the ironic dugouts use s|
-5152|44|O|60568.34|1997-01-04|3-MEDIUM|Clerk#000000963|0| for the blithely reg|
-5153|113|O|193832.28|1995-08-26|1-URGENT|Clerk#000000954|0| the furiously ironic foxes. express packages shall cajole carefully across|
-5154|8|O|28070.86|1997-04-13|3-MEDIUM|Clerk#000000316|0|inal requests. slyly regular deposits nag. even deposits haggle agains|
-5155|77|F|70183.29|1994-06-12|2-HIGH|Clerk#000000108|0|y pending deposits are ag|
-5156|125|O|59439.44|1996-11-04|5-LOW|Clerk#000000117|0|ngside of the multipliers solve slyly requests. regu|
-5157|142|O|167056.34|1997-07-06|4-NOT SPECIFIED|Clerk#000000689|0|closely above the unusual deposits. furiously|
-5158|76|O|240284.95|1997-01-21|1-URGENT|Clerk#000000541|0| regular foxes. even foxes wake blithely |
-5159|106|O|147543.26|1996-09-25|1-URGENT|Clerk#000000303|0|tegrate slyly around the slyly sly sauternes. final pa|
-5184|85|O|209155.48|1998-07-20|5-LOW|Clerk#000000250|0|nding accounts detect final, even|
-5185|148|O|206179.68|1997-07-25|3-MEDIUM|Clerk#000000195|0| regular ideas about the even ex|
-5186|52|O|208892.63|1996-08-03|1-URGENT|Clerk#000000332|0|pecial platelets. slyly final ac|
-5187|55|O|46380.69|1997-07-16|3-MEDIUM|Clerk#000000682|0|ckly according to t|
-5188|140|P|66268.86|1995-03-02|4-NOT SPECIFIED|Clerk#000000029|0|counts. finally ironic requests ab|
-5189|71|F|184172.31|1993-11-26|5-LOW|Clerk#000000940|0|e after the pending accounts. asymptotes boost. re|
-5190|58|F|89684.31|1992-04-26|5-LOW|Clerk#000000888|0|equests. slyly unusual|
-5191|77|F|119910.04|1994-12-11|4-NOT SPECIFIED|Clerk#000000318|0|ing, regular deposits alongside of the deposits boost fluffily quickly ev|
-5216|59|O|16763.95|1997-08-14|3-MEDIUM|Clerk#000000418|0|des boost across the platelets. slyly busy theodolit|
-5217|35|O|135745.58|1995-10-13|2-HIGH|Clerk#000000873|0|ons might wake quickly according to th|
-5218|82|F|73882.37|1992-07-30|4-NOT SPECIFIED|Clerk#000000683|0|y ruthless packages according to the bold, ironic package|
-5219|88|O|21267.72|1997-02-27|1-URGENT|Clerk#000000510|0|aggle always. foxes above the ironic deposits |
-5220|10|F|24844.39|1992-07-30|2-HIGH|Clerk#000000051|0| final packages. ideas detect slyly around|
-5221|13|O|71968.10|1995-06-09|4-NOT SPECIFIED|Clerk#000000324|0|lar accounts above the sl|
-5222|80|F|1051.15|1994-05-27|4-NOT SPECIFIED|Clerk#000000613|0|along the bold ideas. furiously final foxes snoo|
-5223|149|F|105561.21|1994-06-30|1-URGENT|Clerk#000000745|0|e. theodolites serve blithely unusual, final foxes. carefully pending packag|
-5248|70|P|86958.28|1995-04-15|2-HIGH|Clerk#000000737|0|theodolites cajole according to the silent packages. quickly ironic packages a|
-5249|103|F|123586.03|1994-09-06|3-MEDIUM|Clerk#000000019|0|refully bold accounts |
-5250|97|O|29673.73|1995-07-16|2-HIGH|Clerk#000000307|0|. carefully final instructions sleep among the finally regular dependen|
-5251|34|O|34004.48|1995-04-12|3-MEDIUM|Clerk#000000687|0| ironic dugouts detect. reque|
-5252|91|O|173145.37|1996-02-17|1-URGENT|Clerk#000000724|0| ironic accounts among the silent asym|
-5253|148|P|108361.46|1995-04-11|2-HIGH|Clerk#000000275|0|egular requests! blithely regular deposits alongside of t|
-5254|112|F|196989.09|1992-07-26|4-NOT SPECIFIED|Clerk#000000527|0|he express, even ideas cajole blithely special requests|
-5255|64|O|75074.07|1996-07-12|5-LOW|Clerk#000000591|0|ly slow forges. express foxes haggle. regular, even asymp|
-5280|34|O|68052.70|1997-12-03|3-MEDIUM|Clerk#000000604|0|riously ironic instructions. ironic ideas according to the accounts boost fur|
-5281|124|O|179418.31|1995-11-02|2-HIGH|Clerk#000000158|0|ackages haggle slyly a|
-5282|50|O|94446.69|1998-01-30|1-URGENT|Clerk#000000030|0|rding to the unusual, bold accounts. regular instructions|
-5283|131|F|18594.66|1994-06-04|3-MEDIUM|Clerk#000000579|0|ests. even, final ideas alongside of t|
-5284|61|O|40548.99|1995-07-09|4-NOT SPECIFIED|Clerk#000000155|0| careful dependencies use sly|
-5285|70|F|99377.51|1994-01-18|2-HIGH|Clerk#000000976|0|p across the furiously ironic deposits.|
-5286|116|O|79646.89|1997-09-26|5-LOW|Clerk#000000606|0|structions are furiously quickly ironic asymptotes. quickly iro|
-5287|25|F|30045.95|1993-12-22|5-LOW|Clerk#000000406|0|regular packages. bold instructions sleep always. carefully final p|
-5312|65|F|66697.95|1995-02-24|2-HIGH|Clerk#000000690|0|ter the even, bold foxe|
-5313|13|O|159870.44|1997-06-17|4-NOT SPECIFIED|Clerk#000000896|0|le. final courts haggle furiously according to the |
-5314|34|O|26999.83|1995-06-02|2-HIGH|Clerk#000000617|0|ions across the quickly special d|
-5315|139|F|55554.97|1992-10-29|4-NOT SPECIFIED|Clerk#000000035|0| furiously. quickly unusual packages use. sly|
-5316|100|F|62316.61|1994-01-31|1-URGENT|Clerk#000000734|0| requests haggle across the regular, pending deposits. furiously regular requ|
-5317|37|F|228002.51|1994-09-09|5-LOW|Clerk#000000687|0|jole quickly at the slyly pend|
-5318|59|F|106935.19|1993-04-04|2-HIGH|Clerk#000000663|0|efully regular dolphins. even ideas nag fluffily furiously even packa|
-5319|98|O|68619.29|1996-01-21|1-URGENT|Clerk#000000237|0|lent requests. quickly pe|
-5344|109|O|88216.32|1998-06-21|3-MEDIUM|Clerk#000000569|0|s. ironic excuses cajole across the|
-5345|31|O|111924.56|1997-08-24|1-URGENT|Clerk#000000057|0|r the slyly silent packages. pending, even pinto b|
-5346|37|F|149536.20|1993-12-26|2-HIGH|Clerk#000000220|0|gly close packages against the even, regular escapades boost evenly accordi|
-5347|49|F|173024.71|1995-02-22|3-MEDIUM|Clerk#000000180|0|onic, regular deposits. packag|
-5348|53|O|119164.96|1997-11-08|5-LOW|Clerk#000000497|0|totes. accounts after the furiously|
-5349|67|O|38038.84|1996-09-01|1-URGENT|Clerk#000000960|0|le along the carefully bold dolphins. carefully special packa|
-5350|76|F|113417.03|1993-10-10|5-LOW|Clerk#000000604|0|ccounts after the carefully pending requests believe |
-5351|122|O|76799.25|1998-05-11|1-URGENT|Clerk#000000443|0|to beans sleep furiously after the carefully even|
-5376|149|F|98422.83|1994-07-04|5-LOW|Clerk#000000392|0|. quickly ironic deposits integrate along|
-5377|64|O|117728.37|1997-04-24|2-HIGH|Clerk#000000917|0|ons nag blithely furiously regula|
-5378|43|F|101899.93|1992-10-25|1-URGENT|Clerk#000000520|0|n ideas. regular accounts haggle. ironic ideas use along the bold ideas. blith|
-5379|89|O|47010.15|1995-08-08|2-HIGH|Clerk#000000503|0|he unusual accounts. carefully special instructi|
-5380|148|O|123014.83|1997-10-12|1-URGENT|Clerk#000000481|0|le slyly about the slyly final dolphins. fu|
-5381|32|F|223995.46|1993-01-29|5-LOW|Clerk#000000531|0|arefully bold packages are slyly furiously ironic foxes. fluffil|
-5382|35|F|138423.03|1992-01-13|5-LOW|Clerk#000000809|0|lent deposits are according to the reg|
-5383|31|O|11474.95|1995-05-26|5-LOW|Clerk#000000409|0|ly bold requests hang furiously furiously unusual accounts. evenly unusu|
-5408|23|F|123477.05|1992-07-21|5-LOW|Clerk#000000735|0|egular requests according to the|
-5409|13|F|145040.38|1992-01-09|5-LOW|Clerk#000000171|0|eans. regular accounts are regul|
-5410|22|O|139104.17|1998-07-28|4-NOT SPECIFIED|Clerk#000000117|0|final deposits: pending excuses boost. ironic theodolites cajole furi|
-5411|61|O|62541.27|1997-05-16|3-MEDIUM|Clerk#000000800|0|equests cajole slyly furious|
-5412|142|O|109979.71|1998-01-20|2-HIGH|Clerk#000000151|0|ets boost furiously regular accounts. regular foxes above th|
-5413|94|O|224382.57|1997-10-17|1-URGENT|Clerk#000000066|0|e even excuses. always final depen|
-5414|100|F|167017.39|1993-03-25|4-NOT SPECIFIED|Clerk#000000242|0|lent dependencies? carefully express requests sleep furiously ac|
-5415|23|F|176864.83|1992-08-05|3-MEDIUM|Clerk#000000998|0|ly even ideas nag blithely above the final instructions|
-5440|130|O|3223.17|1997-01-12|1-URGENT|Clerk#000000154|0|posits boost regularly ironic packages. regular, ironic deposits wak|
-5441|41|F|131891.05|1994-07-21|4-NOT SPECIFIED|Clerk#000000257|0|after the furiously ironic |
-5442|43|O|139332.94|1998-01-13|4-NOT SPECIFIED|Clerk#000000954|0|ully. quickly express accounts against the|
-5443|131|O|124950.79|1996-10-10|4-NOT SPECIFIED|Clerk#000000492|0|al foxes could detect. blithely stealthy asymptotes kind|
-5444|130|P|172908.01|1995-03-18|1-URGENT|Clerk#000000677|0| asymptotes. asymptotes cajole quickly quickly bo|
-5445|115|F|114990.63|1993-07-26|5-LOW|Clerk#000000623|0|s. even, special requests cajole furiously even, |
-5446|7|F|29920.80|1994-06-21|5-LOW|Clerk#000000304|0| furiously final pac|
-5447|13|O|29029.84|1996-03-16|3-MEDIUM|Clerk#000000597|0|uternes around the furiously bold accounts wake after |
-5472|70|F|221636.83|1993-04-11|5-LOW|Clerk#000000552|0|counts. deposits about the slyly dogged pinto beans cajole slyly|
-5473|65|F|63041.33|1992-03-25|4-NOT SPECIFIED|Clerk#000000306|0|te the quickly stealthy ideas. even, regular deposits above|
-5474|55|F|131079.52|1992-06-01|4-NOT SPECIFIED|Clerk#000000487|0|gle blithely enticing ideas. final, exp|
-5475|139|O|10645.48|1996-07-07|5-LOW|Clerk#000000856|0|es shall boost slyly. furiously even deposits lose. instruc|
-5476|91|O|26906.38|1997-11-06|1-URGENT|Clerk#000000189|0|furiously final ideas. furiously bold dependencies sleep care|
-5477|107|O|130125.64|1997-12-30|5-LOW|Clerk#000000689|0|ckages. ironic deposits caj|
-5478|116|O|97502.23|1996-05-17|1-URGENT|Clerk#000000272|0|ckages. quickly pending deposits thrash furiously: bl|
-5479|70|F|70553.45|1993-12-22|3-MEDIUM|Clerk#000000335|0|ng asymptotes. pinto beans sleep care|
-5504|19|F|41492.25|1993-01-06|2-HIGH|Clerk#000000221|0|y pending packages. furiousl|
-5505|95|O|147329.51|1997-10-04|5-LOW|Clerk#000000719|0| final, regular packages according to the slyly ironic accounts nag ironica|
-5506|91|F|8413.31|1993-11-08|1-URGENT|Clerk#000000292|0|nusual theodolites. sly|
-5507|2|O|140363.70|1998-05-28|5-LOW|Clerk#000000692|0|the carefully ironic instructions are quickly iro|
-5508|56|O|3808.05|1996-06-21|1-URGENT|Clerk#000000128|0|y express packages cajole furiously. slyly unusual requests |
-5509|80|F|135335.96|1994-04-08|5-LOW|Clerk#000000164|0|usual deposits use packages. furiously final requests wake slyly about th|
-5510|37|F|126948.81|1993-01-08|3-MEDIUM|Clerk#000000819|0| nag slyly. carefully eve|
-5511|79|F|151089.96|1994-11-29|1-URGENT|Clerk#000000438|0|ng instructions integrate fluffily among the fluffily silent accounts. bli|
-5536|116|O|108196.56|1998-03-16|4-NOT SPECIFIED|Clerk#000000076|0| carefully final dolphins. ironic, ironic deposits lose. bold, |
-5537|118|O|102207.20|1996-10-03|3-MEDIUM|Clerk#000000742|0|ng to the daring, final |
-5538|139|F|90981.28|1993-12-25|1-URGENT|Clerk#000000992|0|ttainments. slyly final ideas are about the furiously silent excuses.|
-5539|119|F|39397.60|1994-07-31|5-LOW|Clerk#000000675|0|structions. slyly regular patterns solve above the carefully expres|
-5540|130|O|90707.58|1996-10-12|4-NOT SPECIFIED|Clerk#000000120|0|y ironic packages cajole blithely|
-5541|143|O|37526.68|1997-09-30|3-MEDIUM|Clerk#000000217|0|encies among the silent accounts sleep slyly quickly pending deposits|
-5542|49|O|6402.41|1996-04-20|4-NOT SPECIFIED|Clerk#000000100|0|riously among the regularly regular pac|
-5543|115|F|118201.53|1993-09-25|3-MEDIUM|Clerk#000000644|0|ckly regular epitaphs. carefully bold accounts haggle furiously|
-5568|31|O|105421.09|1995-06-07|3-MEDIUM|Clerk#000000491|0| nag. fluffily pending de|
-5569|109|F|126113.32|1993-04-30|4-NOT SPECIFIED|Clerk#000000759|0|e regular dependencies. furiously unusual ideas b|
-5570|112|O|78567.55|1996-08-12|2-HIGH|Clerk#000000795|0|eans. ironic, even requests doze |
-5571|103|F|79248.35|1992-12-19|4-NOT SPECIFIED|Clerk#000000184|0|ts cajole furiously carefully regular sheaves. un|
-5572|8|F|182966.39|1994-07-17|2-HIGH|Clerk#000000163|0|e fluffily express deposits cajole slyly across th|
-5573|37|O|158479.37|1996-08-15|3-MEDIUM|Clerk#000000055|0|lites. slyly final pinto beans about the carefully regul|
-5574|28|F|129803.03|1992-03-10|4-NOT SPECIFIED|Clerk#000000002|0|n deposits. special, regular t|
-5575|103|O|51839.94|1995-07-24|5-LOW|Clerk#000000948|0|uriously express frays breach|
-5600|95|O|53649.35|1997-02-08|4-NOT SPECIFIED|Clerk#000000019|0|lly regular deposits. car|
-5601|11|F|118570.79|1992-01-06|2-HIGH|Clerk#000000827|0|gular deposits wake platelets? blithe|
-5602|130|O|67979.49|1997-07-30|3-MEDIUM|Clerk#000000395|0|onic asymptotes haggl|
-5603|71|F|145100.47|1992-06-20|4-NOT SPECIFIED|Clerk#000000535|0| asymptotes. fluffily ironic instructions are. pending pinto bean|
-5604|46|O|98987.51|1998-04-14|4-NOT SPECIFIED|Clerk#000000123|0|ously across the blithely ironic pinto beans. sile|
-5605|35|O|172899.84|1996-08-22|2-HIGH|Clerk#000000538|0|sleep carefully final packages. dependencies wake slyly. theodol|
-5606|149|O|219959.08|1996-11-12|5-LOW|Clerk#000000688|0|uriously express pinto beans. packages sh|
-5607|92|F|24660.06|1992-01-01|4-NOT SPECIFIED|Clerk#000000137|0|c requests promise quickly fluffily ironic deposits. caref|
-5632|79|O|89503.11|1996-02-05|1-URGENT|Clerk#000000508|0|ons. blithely pending pinto beans thrash. furiously busy theodoli|
-5633|79|O|207119.83|1998-05-31|3-MEDIUM|Clerk#000000841|0|cial deposits wake final, final|
-5634|68|O|99494.67|1996-07-31|3-MEDIUM|Clerk#000000915|0|out the accounts. carefully ironic ideas are slyly. sheaves could h|
-5635|70|F|192217.86|1992-08-16|3-MEDIUM|Clerk#000000734|0|nal platelets sleep daringly. idle, final accounts about |
-5636|122|F|143350.75|1995-02-16|3-MEDIUM|Clerk#000000916|0|. boldly even Tiresias sleep. blithely ironic packages among the ca|
-5637|103|O|128776.90|1996-06-17|3-MEDIUM|Clerk#000000183|0|nic dolphins are regular packages. ironic pinto beans hagg|
-5638|109|F|79197.77|1994-01-17|1-URGENT|Clerk#000000355|0|enly bold deposits eat. special realms play against the regular, speci|
-5639|145|F|9669.46|1994-06-02|3-MEDIUM|Clerk#000000005|0|ending packages use after the blithely regular accounts. regular package|
-5664|119|O|186215.81|1998-07-23|2-HIGH|Clerk#000000789|0|the quickly ironic dolp|
-5665|100|F|129821.09|1993-06-28|4-NOT SPECIFIED|Clerk#000000513|0| carefully special instructions. ironic pinto beans nag slyly blithe|
-5666|14|F|121663.68|1994-02-02|2-HIGH|Clerk#000000396|0|mptotes. quickly final instructions are |
-5667|44|O|37301.25|1995-08-10|1-URGENT|Clerk#000000358|0|s print upon the quickly ironic packa|
-5668|109|F|13679.32|1995-03-22|4-NOT SPECIFIED|Clerk#000000047|0|p slyly slyly express accoun|
-5669|74|O|113156.30|1996-05-06|1-URGENT|Clerk#000000336|0|ng packages nag fluffily furio|
-5670|7|F|101429.61|1993-04-21|5-LOW|Clerk#000000922|0|he carefully final packages. deposits are slyly among the requests. |
-5671|43|O|176647.54|1998-02-06|2-HIGH|Clerk#000000838|0|k dependencies. slyly |
-5696|142|P|198723.30|1995-05-04|1-URGENT|Clerk#000000447|0|e quickly unusual pack|
-5697|55|F|99177.69|1992-10-05|1-URGENT|Clerk#000000112|0|pendencies impress furiously. bold, final requests solve ab|
-5698|95|F|154936.43|1994-05-21|3-MEDIUM|Clerk#000000455|0|he furiously silent accounts haggle blithely against the carefully unusual|
-5699|142|F|226314.91|1992-07-30|5-LOW|Clerk#000000311|0|o beans. ironic asymptotes boost. blithe, final courts integrate|
-5700|143|O|79901.18|1997-12-25|1-URGENT|Clerk#000000618|0|ly pending dolphins sleep carefully slyly pending i|
-5701|43|O|16689.19|1997-02-07|5-LOW|Clerk#000000798|0| blithely final pinto beans. blit|
-5702|97|F|153024.28|1993-09-07|4-NOT SPECIFIED|Clerk#000000743|0|ironic accounts. final accounts wake express deposits. final pac|
-5703|121|F|1816.28|1993-05-16|3-MEDIUM|Clerk#000000647|0|ly special instructions. slyly even reque|
-5728|80|F|85397.04|1994-12-11|4-NOT SPECIFIED|Clerk#000000426|0|furiously express pin|
-5729|44|F|88080.33|1994-10-10|2-HIGH|Clerk#000000843|0|uffily sly accounts about|
-5730|11|O|10934.84|1997-12-18|1-URGENT|Clerk#000000181|0|l platelets. ironic pinto beans wake slyly. quickly b|
-5731|8|O|57823.37|1997-05-17|5-LOW|Clerk#000000841|0| silent excuses among the express accounts wake |
-5732|37|O|28330.42|1997-08-03|1-URGENT|Clerk#000000910|0|he quickly bold asymptotes: final platelets wake quickly. blithely final pinto|
-5733|101|F|38545.97|1993-03-17|2-HIGH|Clerk#000000873|0|osits. pending accounts boost quickly. furiously permanent acco|
-5734|94|O|45860.94|1997-10-12|3-MEDIUM|Clerk#000000084|0|efully even braids detect blithely alo|
-5735|40|F|39358.51|1994-12-11|3-MEDIUM|Clerk#000000600|0| bold realms cajole slyly fu|
-5760|25|F|59404.77|1994-05-25|4-NOT SPECIFIED|Clerk#000000498|0|s among the blithely regular frays haggle ironically bold theodolites. al|
-5761|16|O|130345.90|1998-07-06|3-MEDIUM|Clerk#000000208|0|s asymptotes cajole boldly. regular, |
-5762|49|O|165019.32|1997-02-14|1-URGENT|Clerk#000000901|0|ly bold packages: slyly ironic deposits sleep quietly foxes. express a|
-5763|8|O|140838.11|1998-06-26|4-NOT SPECIFIED|Clerk#000000633|0|according to the furiously regular pinto beans. even accounts wake fu|
-5764|131|F|53212.95|1993-10-03|4-NOT SPECIFIED|Clerk#000000363|0| furiously regular deposits haggle fluffily around th|
-5765|52|F|249900.42|1994-12-15|5-LOW|Clerk#000000959|0|longside of the quickly final packages. instructions so|
-5766|49|F|47940.51|1993-09-27|5-LOW|Clerk#000000753|0|. quickly final packages print slyly. fu|
-5767|118|F|135643.87|1992-04-29|2-HIGH|Clerk#000000225|0|ts wake fluffily above the r|
-5792|26|F|158991.89|1993-04-04|2-HIGH|Clerk#000000731|0|packages. doggedly bold deposits integrate furiously across the|
-5793|37|O|119887.47|1997-07-13|2-HIGH|Clerk#000000294|0|thely. fluffily even instructi|
-5794|8|F|122823.78|1993-04-05|5-LOW|Clerk#000000855|0|t accounts kindle about the gifts. as|
-5795|37|F|35514.45|1992-05-05|2-HIGH|Clerk#000000581|0| even instructions x-ray ironic req|
-5796|149|O|23280.61|1996-01-23|3-MEDIUM|Clerk#000000326|0|eodolites. slyly ironic pinto beans at the silent, special request|
-5797|122|O|15313.61|1997-10-15|4-NOT SPECIFIED|Clerk#000000381|0|ng! packages against the blithely b|
-5798|106|O|125011.92|1998-03-30|5-LOW|Clerk#000000343|0|lent accounts affix quickly! platelets run slyly slyly final packages. f|
-5799|26|O|71381.21|1995-08-03|1-URGENT|Clerk#000000238|0| unusual deposits sleep blithely along the carefully even requests. care|
-5824|56|O|169107.85|1996-12-03|2-HIGH|Clerk#000000171|0|unusual packages. even ideas along the even requests are along th|
-5825|61|F|23020.62|1995-02-21|5-LOW|Clerk#000000494|0|regular packages use bravely.|
-5826|22|O|21119.86|1998-06-13|1-URGENT|Clerk#000000087|0|even, regular dependenc|
-5827|31|O|137297.71|1998-07-23|3-MEDIUM|Clerk#000000660|0|hely furiously blithe dolphins. slyly |
-5828|127|F|62172.34|1994-03-06|5-LOW|Clerk#000000377|0|ages boost never during the final packa|
-5829|125|O|183734.56|1997-01-11|1-URGENT|Clerk#000000196|0|gular accounts. bold accounts are blithely furiously ironic r|
-5830|85|F|28223.57|1993-03-25|3-MEDIUM|Clerk#000000233|0|lites haggle. ironic, ironic instructions maintain blit|
-5831|139|O|113505.19|1996-11-17|5-LOW|Clerk#000000585|0|s final, final pinto beans. unusual depos|
-5856|37|F|71460.49|1994-11-06|2-HIGH|Clerk#000000634|0|special excuses. slyly final theodolites cajole blithely furiou|
-5857|124|O|158345.31|1997-11-06|4-NOT SPECIFIED|Clerk#000000267|0|gage blithely. quickly special ac|
-5858|64|F|181320.50|1992-07-14|4-NOT SPECIFIED|Clerk#000000580|0|lyly pending dugouts believe through the ironic deposits. silent s|
-5859|5|O|210643.96|1997-04-23|1-URGENT|Clerk#000000993|0|requests boost. asymptotes across the deposits solve slyly furiously pendin|
-5860|13|F|9495.28|1992-02-20|4-NOT SPECIFIED|Clerk#000000079|0| beans. bold, special foxes sleep about the ir|
-5861|139|O|41450.19|1997-04-10|3-MEDIUM|Clerk#000000094|0|rthogs cajole slyly. express packages sleep blithely final |
-5862|64|O|30550.90|1997-02-20|1-URGENT|Clerk#000000039|0|leep beneath the quickly busy excuses. ironic theodolit|
-5863|65|F|67941.54|1993-11-22|3-MEDIUM|Clerk#000000774|0|ets about the slyly pending ideas sleep according to the blithely |
-5888|46|O|67167.19|1996-09-28|3-MEDIUM|Clerk#000000748|0|quickly against the furiously final requests. evenly fi|
-5889|22|O|15417.57|1995-05-23|5-LOW|Clerk#000000690|0|ites wake across the slyly ironic|
-5890|49|F|41162.24|1992-11-04|2-HIGH|Clerk#000000013|0|packages. final, final reques|
-5891|46|F|41760.00|1992-12-29|3-MEDIUM|Clerk#000000302|0|ounts haggle furiously abo|
-5892|101|P|92340.77|1995-05-09|5-LOW|Clerk#000000639|0| pending instruction|
-5893|2|F|44777.63|1992-07-08|4-NOT SPECIFIED|Clerk#000000560|0|final sentiments. instructions boost above the never speci|
-5894|71|F|70377.31|1994-08-13|2-HIGH|Clerk#000000776|0|regular deposits wake|
-5895|64|O|201419.83|1997-01-01|4-NOT SPECIFIED|Clerk#000000747|0| ironic, unusual requests cajole blithely special, special deposits. s|
-5920|119|F|142767.26|1994-11-20|2-HIGH|Clerk#000000081|0|ns: even ideas cajole slyly among the packages. never ironic patterns|
-5921|58|F|152940.00|1994-04-07|5-LOW|Clerk#000000125|0|kly special requests breach.|
-5922|143|O|142494.99|1996-11-14|5-LOW|Clerk#000000625|0| ironic instructions haggle furiously blithely regular accounts: even platele|
-5923|101|O|157968.27|1997-05-27|2-HIGH|Clerk#000000304|0|o beans haggle slyly above the regular, even dependencies|
-5924|31|O|106823.97|1995-10-10|3-MEDIUM|Clerk#000000433|0|arefully after the pains. blithely ironic pinto |
-5925|146|O|242588.87|1995-11-13|5-LOW|Clerk#000000602|0|ourts. boldly regular foxes might sleep. slyly express tithes against |
-5926|76|F|105770.53|1994-05-20|5-LOW|Clerk#000000071|0| carefully after the furiously even re|
-5927|116|O|84983.90|1997-08-28|4-NOT SPECIFIED|Clerk#000000972|0|endencies according to the slyly ironic foxes detect furiously about the furio|
-5952|148|O|128624.99|1997-04-14|3-MEDIUM|Clerk#000000950|0| regular, final pla|
-5953|7|F|95312.81|1992-03-28|1-URGENT|Clerk#000000049|0|ages are furiously. slowly bold requests|
-5954|28|F|167262.34|1992-12-03|1-URGENT|Clerk#000000968|0|requests along the blith|
-5955|94|P|67944.38|1995-03-27|5-LOW|Clerk#000000340|0|deas integrate. fluffily regular pa|
-5956|22|O|118036.54|1998-05-18|1-URGENT|Clerk#000000587|0|le even, express platelets.|
-5957|89|F|230949.45|1993-12-27|2-HIGH|Clerk#000000020|0| dependencies are slyly. bold accounts according to the carefully regular r|
-5958|115|O|145060.41|1995-09-16|3-MEDIUM|Clerk#000000787|0|e final requests detect alongside of the qu|
-5959|23|F|195515.26|1992-05-15|3-MEDIUM|Clerk#000000913|0|into beans use ironic, unusual foxes. carefully regular excuses boost caref|
-5984|70|F|83413.30|1994-06-18|5-LOW|Clerk#000000023|0|ickly final pains haggle along the furiously ironic pinto bea|
-5985|143|F|3942.73|1995-01-12|3-MEDIUM|Clerk#000000417|0|as nag fluffily slyly permanent accounts. regular depo|
-5986|115|F|92187.80|1992-04-22|2-HIGH|Clerk#000000674|0|iously unusual notornis are |
-5987|64|O|98956.82|1996-08-03|1-URGENT|Clerk#000000464|0| ideas. quietly final accounts haggle blithely pending escapade|
-5988|31|F|41655.51|1993-11-22|4-NOT SPECIFIED|Clerk#000000867|0|fully express accounts. final pi|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/part.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/part.tbl
deleted file mode 100644
index f58926e..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/part.tbl
+++ /dev/null
@@ -1,200 +0,0 @@
-1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi|
-2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|1|LG CASE|902.00|lar accounts amo|
-3|spring green yellow purple cornsilk|Manufacturer#4|Brand#42|STANDARD POLISHED BRASS|21|WRAP CASE|903.00|egular deposits hag|
-4|cornflower chocolate smoke green pink|Manufacturer#3|Brand#34|SMALL PLATED BRASS|14|MED DRUM|904.00|p furiously r|
-5|forest brown coral puff cream|Manufacturer#3|Brand#32|STANDARD POLISHED TIN|15|SM PKG|905.00| wake carefully |
-6|bisque cornflower lawn forest magenta|Manufacturer#2|Brand#24|PROMO PLATED STEEL|4|MED BAG|906.00|sual a|
-7|moccasin green thistle khaki floral|Manufacturer#1|Brand#11|SMALL PLATED COPPER|45|SM BAG|907.00|lyly. ex|
-8|misty lace thistle snow royal|Manufacturer#4|Brand#44|PROMO BURNISHED TIN|41|LG DRUM|908.00|eposi|
-9|thistle dim navajo dark gainsboro|Manufacturer#4|Brand#43|SMALL BURNISHED STEEL|12|WRAP CASE|909.00|ironic foxe|
-10|linen pink saddle puff powder|Manufacturer#5|Brand#54|LARGE BURNISHED STEEL|44|LG CAN|910.01|ithely final deposit|
-11|spring maroon seashell almond orchid|Manufacturer#2|Brand#25|STANDARD BURNISHED NICKEL|43|WRAP BOX|911.01|ng gr|
-12|cornflower wheat orange maroon ghost|Manufacturer#3|Brand#33|MEDIUM ANODIZED STEEL|25|JUMBO CASE|912.01| quickly|
-13|ghost olive orange rosy thistle|Manufacturer#5|Brand#55|MEDIUM BURNISHED NICKEL|1|JUMBO PACK|913.01|osits.|
-14|khaki seashell rose cornsilk navajo|Manufacturer#1|Brand#13|SMALL POLISHED STEEL|28|JUMBO BOX|914.01|kages c|
-15|blanched honeydew sky turquoise medium|Manufacturer#1|Brand#15|LARGE ANODIZED BRASS|45|LG CASE|915.01|usual ac|
-16|deep sky turquoise drab peach|Manufacturer#3|Brand#32|PROMO PLATED TIN|2|MED PACK|916.01|unts a|
-17|indian navy coral pink deep|Manufacturer#4|Brand#43|ECONOMY BRUSHED STEEL|16|LG BOX|917.01| regular accounts|
-18|turquoise indian lemon lavender misty|Manufacturer#1|Brand#11|SMALL BURNISHED STEEL|42|JUMBO PACK|918.01|s cajole slyly a|
-19|chocolate navy tan deep brown|Manufacturer#2|Brand#23|SMALL ANODIZED NICKEL|33|WRAP BOX|919.01| pending acc|
-20|ivory navy honeydew sandy midnight|Manufacturer#1|Brand#12|LARGE POLISHED NICKEL|48|MED BAG|920.02|are across the asympt|
-21|lemon floral azure frosted lime|Manufacturer#3|Brand#33|SMALL BURNISHED TIN|31|MED BAG|921.02|ss packages. pendin|
-22|medium forest blue ghost black|Manufacturer#4|Brand#43|PROMO POLISHED BRASS|19|LG DRUM|922.02| even p|
-23|coral lavender seashell rosy burlywood|Manufacturer#3|Brand#35|MEDIUM BURNISHED TIN|42|JUMBO JAR|923.02|nic, fina|
-24|seashell coral metallic midnight floral|Manufacturer#5|Brand#52|MEDIUM PLATED STEEL|20|MED CASE|924.02| final the|
-25|Algebricksmarine steel firebrick light turquoise|Manufacturer#5|Brand#55|STANDARD BRUSHED COPPER|3|JUMBO BAG|925.02|requests wake|
-26|beige frosted moccasin chocolate snow|Manufacturer#3|Brand#32|SMALL BRUSHED STEEL|32|SM CASE|926.02| instructions i|
-27|saddle puff beige linen yellow|Manufacturer#1|Brand#14|LARGE ANODIZED TIN|20|MED PKG|927.02|s wake. ir|
-28|navajo yellow drab white misty|Manufacturer#4|Brand#44|SMALL PLATED COPPER|19|JUMBO PKG|928.02|x-ray pending, iron|
-29|lemon sky grey salmon orchid|Manufacturer#3|Brand#33|PROMO PLATED COPPER|7|LG DRUM|929.02| carefully fluffi|
-30|cream misty steel spring medium|Manufacturer#4|Brand#42|PROMO ANODIZED TIN|17|LG BOX|930.03|carefully bus|
-31|slate seashell steel medium moccasin|Manufacturer#5|Brand#53|STANDARD BRUSHED TIN|10|LG BAG|931.03|uriously s|
-32|sandy wheat coral spring burnished|Manufacturer#4|Brand#42|ECONOMY PLATED BRASS|31|LG CASE|932.03|urts. carefully fin|
-33|spring bisque salmon slate pink|Manufacturer#2|Brand#22|ECONOMY PLATED NICKEL|16|LG PKG|933.03|ly eve|
-34|khaki steel rose ghost salmon|Manufacturer#1|Brand#13|LARGE BRUSHED STEEL|8|JUMBO BOX|934.03|riously ironic|
-35|green blush tomato burlywood seashell|Manufacturer#4|Brand#43|MEDIUM ANODIZED BRASS|14|JUMBO PACK|935.03|e carefully furi|
-36|chiffon tan forest moccasin dark|Manufacturer#2|Brand#25|SMALL BURNISHED COPPER|3|JUMBO CAN|936.03|olites o|
-37|royal coral orange burnished navajo|Manufacturer#4|Brand#45|LARGE POLISHED TIN|48|JUMBO BOX|937.03|silent |
-38|seashell papaya white mint brown|Manufacturer#4|Brand#43|ECONOMY ANODIZED BRASS|11|SM JAR|938.03|structions inte|
-39|rose medium floral salmon powder|Manufacturer#5|Brand#53|SMALL POLISHED TIN|43|JUMBO JAR|939.03|se slowly above the fl|
-40|lemon midnight metallic sienna steel|Manufacturer#2|Brand#25|ECONOMY BURNISHED COPPER|27|SM CASE|940.04|! blithely specia|
-41|burlywood goldenrod pink peru sienna|Manufacturer#2|Brand#23|ECONOMY ANODIZED TIN|7|WRAP JAR|941.04|uriously. furiously cl|
-42|midnight turquoise lawn beige thistle|Manufacturer#5|Brand#52|MEDIUM BURNISHED TIN|45|LG BOX|942.04|the slow|
-43|medium lace midnight royal chartreuse|Manufacturer#4|Brand#44|PROMO POLISHED STEEL|5|WRAP CASE|943.04|e slyly along the ir|
-44|saddle cream wheat lemon burnished|Manufacturer#4|Brand#45|MEDIUM PLATED TIN|48|SM PACK|944.04|pinto beans. carefully|
-45|lawn peru ghost khaki maroon|Manufacturer#4|Brand#43|SMALL BRUSHED NICKEL|9|WRAP BAG|945.04|nts bo|
-46|honeydew turquoise Algebricksmarine spring tan|Manufacturer#1|Brand#11|STANDARD POLISHED TIN|45|WRAP CASE|946.04|the blithely unusual |
-47|honeydew red azure magenta brown|Manufacturer#4|Brand#45|LARGE BURNISHED BRASS|14|JUMBO PACK|947.04| even plate|
-48|slate thistle cornsilk pale forest|Manufacturer#5|Brand#53|STANDARD BRUSHED STEEL|27|JUMBO CASE|948.04|ng to the depo|
-49|light firebrick cyan puff blue|Manufacturer#2|Brand#24|SMALL BURNISHED TIN|31|MED DRUM|949.04|ar pack|
-50|linen blanched tomato slate medium|Manufacturer#3|Brand#33|LARGE ANODIZED TIN|25|WRAP PKG|950.05|kages m|
-51|lime frosted indian dodger linen|Manufacturer#4|Brand#45|ECONOMY BURNISHED NICKEL|34|JUMBO PACK|951.05|n foxes|
-52|lemon midnight lace sky deep|Manufacturer#3|Brand#35|STANDARD BURNISHED TIN|25|WRAP CASE|952.05| final deposits. fu|
-53|bisque rose cornsilk seashell purple|Manufacturer#2|Brand#23|ECONOMY BURNISHED NICKEL|32|MED BAG|953.05|mptot|
-54|blanched mint yellow papaya cyan|Manufacturer#2|Brand#21|LARGE BURNISHED COPPER|19|WRAP CASE|954.05|e blithely|
-55|sky cream deep tomato rosy|Manufacturer#2|Brand#23|ECONOMY BRUSHED COPPER|9|MED BAG|955.05|ly final pac|
-56|antique beige brown deep dodger|Manufacturer#1|Brand#12|MEDIUM PLATED STEEL|20|WRAP DRUM|956.05|ts. blithel|
-57|purple blue light sienna deep|Manufacturer#3|Brand#32|MEDIUM BURNISHED BRASS|49|MED PKG|957.05|lly abov|
-58|linen hot cornsilk drab bisque|Manufacturer#5|Brand#53|STANDARD POLISHED TIN|44|LG PACK|958.05| fluffily blithely reg|
-59|misty brown medium mint salmon|Manufacturer#5|Brand#53|MEDIUM POLISHED TIN|2|LG BAG|959.05|regular exc|
-60|snow spring sandy olive tomato|Manufacturer#1|Brand#11|LARGE POLISHED COPPER|27|JUMBO CASE|960.06| integ|
-61|light tan linen tomato peach|Manufacturer#5|Brand#54|SMALL BURNISHED NICKEL|18|WRAP DRUM|961.06|es. blithely en|
-62|tan cornsilk spring grey chocolate|Manufacturer#3|Brand#35|STANDARD BRUSHED BRASS|39|JUMBO BOX|962.06|ckly across the carefu|
-63|burnished puff coral light papaya|Manufacturer#3|Brand#32|STANDARD BURNISHED NICKEL|10|JUMBO CAN|963.06| quickly |
-64|Algebricksmarine coral lemon ivory gainsboro|Manufacturer#2|Brand#21|MEDIUM ANODIZED BRASS|1|JUMBO CAN|964.06|efully regular pi|
-65|slate drab medium puff gainsboro|Manufacturer#5|Brand#53|MEDIUM BRUSHED COPPER|3|MED CAN|965.06|posits after the quic|
-66|cornflower pale almond lemon linen|Manufacturer#3|Brand#35|PROMO ANODIZED NICKEL|46|SM CASE|966.06|haggle blithely iro|
-67|slate salmon rose spring seashell|Manufacturer#2|Brand#21|SMALL BRUSHED TIN|31|WRAP DRUM|967.06| regular, p|
-68|bisque ivory mint purple almond|Manufacturer#1|Brand#11|PROMO ANODIZED STEEL|10|WRAP BOX|968.06|eposits shall h|
-69|lace burnished rosy antique metallic|Manufacturer#5|Brand#52|MEDIUM POLISHED BRASS|2|SM BOX|969.06|ely final depo|
-70|violet seashell firebrick dark navajo|Manufacturer#1|Brand#11|STANDARD BRUSHED STEEL|42|LG PACK|970.07|inal gifts. sl|
-71|violet firebrick cream peru white|Manufacturer#3|Brand#33|STANDARD PLATED BRASS|26|WRAP DRUM|971.07| packages alongside|
-72|hot spring yellow azure dodger|Manufacturer#2|Brand#23|STANDARD ANODIZED TIN|25|JUMBO PACK|972.07|efully final the|
-73|cream moccasin royal dim chiffon|Manufacturer#2|Brand#21|SMALL BRUSHED COPPER|35|WRAP DRUM|973.07|ts haggl|
-74|frosted grey Algebricksmarine thistle papaya|Manufacturer#5|Brand#55|ECONOMY ANODIZED BRASS|25|JUMBO CASE|974.07|ent foxes|
-75|Algebricksmarine maroon wheat salmon metallic|Manufacturer#3|Brand#35|SMALL BURNISHED NICKEL|39|SM JAR|975.07|s sleep furiou|
-76|rosy light lime puff sandy|Manufacturer#3|Brand#34|MEDIUM BRUSHED COPPER|9|SM PKG|976.07|n accounts sleep qu|
-77|mint bisque chiffon snow firebrick|Manufacturer#5|Brand#52|STANDARD BRUSHED COPPER|13|MED PKG|977.07|uests.|
-78|blush forest slate seashell puff|Manufacturer#1|Brand#14|ECONOMY POLISHED STEEL|24|LG JAR|978.07|icing deposits wake|
-79|gainsboro pink grey tan almond|Manufacturer#4|Brand#45|PROMO ANODIZED BRASS|22|JUMBO BAG|979.07| foxes are slyly regu|
-80|tomato chartreuse coral turquoise linen|Manufacturer#4|Brand#44|PROMO PLATED BRASS|28|MED CAN|980.08|unusual dependencies i|
-81|misty sandy cornsilk dodger blush|Manufacturer#5|Brand#53|ECONOMY BRUSHED TIN|21|MED BAG|981.08|ove the furiou|
-82|khaki tomato purple almond tan|Manufacturer#1|Brand#15|ECONOMY POLISHED TIN|12|WRAP BOX|982.08|ial requests haggle |
-83|blush green dim lawn peru|Manufacturer#1|Brand#12|PROMO BURNISHED NICKEL|47|SM CAN|983.08|ly regul|
-84|salmon floral cream rose dark|Manufacturer#4|Brand#45|SMALL ANODIZED NICKEL|26|JUMBO PACK|984.08|ideas nag|
-85|dim deep Algebricksmarine smoke pale|Manufacturer#5|Brand#55|PROMO ANODIZED NICKEL|16|LG BAG|985.08| silent|
-86|green blanched firebrick dim cream|Manufacturer#4|Brand#44|STANDARD PLATED TIN|37|LG CASE|986.08| daring sheaves |
-87|purple lace seashell antique orange|Manufacturer#4|Brand#41|LARGE PLATED STEEL|41|WRAP PACK|987.08|yly final|
-88|lime orange bisque chartreuse lemon|Manufacturer#4|Brand#44|PROMO PLATED COPPER|16|SM CASE|988.08|e regular packages. |
-89|ghost lace lemon sienna saddle|Manufacturer#5|Brand#53|STANDARD BURNISHED STEEL|7|MED JAR|989.08|y final pinto |
-90|hot rosy violet plum pale|Manufacturer#5|Brand#51|ECONOMY POLISHED STEEL|49|JUMBO CAN|990.09|caref|
-91|misty bisque lavender spring turquoise|Manufacturer#2|Brand#21|STANDARD BRUSHED TIN|32|JUMBO PKG|991.09|counts dete|
-92|blush magenta ghost tomato rose|Manufacturer#2|Brand#22|STANDARD ANODIZED TIN|35|JUMBO PKG|992.09|he ironic accounts. sp|
-93|pale yellow cornsilk dodger moccasin|Manufacturer#2|Brand#24|LARGE ANODIZED TIN|2|WRAP DRUM|993.09| platel|
-94|blanched pink frosted mint snow|Manufacturer#3|Brand#35|STANDARD POLISHED BRASS|32|SM BOX|994.09|s accounts cajo|
-95|dodger beige wheat orchid navy|Manufacturer#3|Brand#33|LARGE BRUSHED TIN|36|WRAP DRUM|995.09| final pinto beans |
-96|chocolate light firebrick rose indian|Manufacturer#5|Brand#53|STANDARD BRUSHED STEEL|32|SM CASE|996.09|ng to the bli|
-97|coral dodger beige black chartreuse|Manufacturer#3|Brand#33|MEDIUM POLISHED BRASS|49|WRAP CAN|997.09|ss excuses sleep am|
-98|frosted peru chiffon yellow Algebricksmarine|Manufacturer#5|Brand#54|STANDARD ANODIZED BRASS|22|MED JAR|998.09|e the q|
-99|mint grey purple sienna metallic|Manufacturer#2|Brand#21|SMALL BURNISHED STEEL|11|JUMBO PKG|999.09|press|
-100|cyan orchid indian cornflower saddle|Manufacturer#3|Brand#33|ECONOMY ANODIZED TIN|4|LG BAG|1000.10|of the steal|
-101|powder deep lavender violet gainsboro|Manufacturer#3|Brand#32|LARGE ANODIZED STEEL|26|JUMBO JAR|1001.10|ly even,|
-102|papaya maroon blush powder sky|Manufacturer#3|Brand#31|MEDIUM BURNISHED BRASS|17|SM DRUM|1002.10|ular packa|
-103|navy sky spring orchid forest|Manufacturer#2|Brand#25|MEDIUM PLATED BRASS|45|WRAP DRUM|1003.10|e blithely blith|
-104|plum cyan cornflower midnight royal|Manufacturer#1|Brand#13|MEDIUM ANODIZED STEEL|36|JUMBO BAG|1004.10|ites sleep quickly|
-105|dodger slate pale mint navajo|Manufacturer#1|Brand#15|SMALL POLISHED COPPER|27|LG DRUM|1005.10|odolites was |
-106|cornsilk bisque seashell lemon frosted|Manufacturer#3|Brand#31|MEDIUM PLATED BRASS|28|WRAP DRUM|1006.10|unts maintain |
-107|violet honeydew bisque sienna orchid|Manufacturer#5|Brand#53|SMALL BURNISHED TIN|12|MED BOX|1007.10|slyly special depos|
-108|bisque peach magenta tomato yellow|Manufacturer#1|Brand#12|PROMO PLATED NICKEL|41|MED PKG|1008.10|after the carefully |
-109|lemon black indian cornflower pale|Manufacturer#3|Brand#33|ECONOMY POLISHED TIN|11|LG PACK|1009.10|instruction|
-110|firebrick navy rose beige black|Manufacturer#3|Brand#33|STANDARD BURNISHED COPPER|46|LG DRUM|1010.11|t quickly a|
-111|orange cornflower mint snow peach|Manufacturer#5|Brand#54|LARGE BRUSHED COPPER|28|JUMBO JAR|1011.11|kly bold epitaphs |
-112|hot Algebricksmarine tomato lace indian|Manufacturer#4|Brand#43|PROMO BRUSHED STEEL|42|JUMBO CAN|1012.11|the express, |
-113|almond seashell azure blanched light|Manufacturer#3|Brand#31|PROMO POLISHED TIN|23|LG CAN|1013.11|finally even |
-114|pink black blanched lace chartreuse|Manufacturer#5|Brand#51|MEDIUM POLISHED NICKEL|41|MED PACK|1014.11|ully final foxes. pint|
-115|spring chiffon cream orchid dodger|Manufacturer#4|Brand#45|STANDARD POLISHED STEEL|24|MED CAN|1015.11|counts nag! caref|
-116|goldenrod black slate forest red|Manufacturer#5|Brand#53|PROMO POLISHED NICKEL|33|SM PACK|1016.11|usly final courts |
-117|tomato honeydew pale red yellow|Manufacturer#1|Brand#14|SMALL BRUSHED TIN|25|LG BAG|1017.11|ages acc|
-118|ghost plum brown coral cornsilk|Manufacturer#2|Brand#25|PROMO ANODIZED TIN|31|MED PACK|1018.11|ly ironic pinto|
-119|olive metallic slate peach green|Manufacturer#4|Brand#43|LARGE POLISHED STEEL|30|WRAP CASE|1019.11|out the quickly r|
-120|pink powder mint moccasin navajo|Manufacturer#1|Brand#14|SMALL ANODIZED NICKEL|45|WRAP JAR|1020.12|lly a|
-121|bisque royal goldenrod medium thistle|Manufacturer#1|Brand#14|ECONOMY BRUSHED COPPER|13|SM PKG|1021.12|deposi|
-122|gainsboro royal forest dark lace|Manufacturer#2|Brand#21|MEDIUM ANODIZED TIN|8|LG DRUM|1022.12|sts c|
-123|deep dim peach light beige|Manufacturer#1|Brand#12|SMALL BURNISHED TIN|31|JUMBO PKG|1023.12|ray regula|
-124|wheat blush forest metallic navajo|Manufacturer#3|Brand#32|PROMO ANODIZED STEEL|1|LG BOX|1024.12|g the expr|
-125|mint ivory saddle peach midnight|Manufacturer#1|Brand#12|STANDARD BRUSHED BRASS|17|WRAP BAG|1025.12|kages against|
-126|burnished black blue metallic orchid|Manufacturer#4|Brand#45|MEDIUM BRUSHED NICKEL|4|LG BAG|1026.12|es sleep al|
-127|royal coral orchid spring sky|Manufacturer#5|Brand#52|SMALL BURNISHED NICKEL|14|LG JAR|1027.12|lithely expr|
-128|dark burlywood burnished snow sky|Manufacturer#2|Brand#22|PROMO PLATED TIN|5|SM BAG|1028.12|e of the furiously ex|
-129|grey spring chiffon thistle lime|Manufacturer#1|Brand#15|LARGE POLISHED TIN|20|SM JAR|1029.12| careful|
-130|gainsboro powder cyan pale rosy|Manufacturer#2|Brand#23|SMALL PLATED NICKEL|26|LG BOX|1030.13|ake slyly|
-131|tomato moccasin cyan brown goldenrod|Manufacturer#5|Brand#52|STANDARD ANODIZED BRASS|43|MED DRUM|1031.13|nts wake dar|
-132|seashell papaya tomato lime hot|Manufacturer#4|Brand#45|STANDARD BURNISHED BRASS|2|WRAP DRUM|1032.13|ckly expre|
-133|firebrick black dodger pink salmon|Manufacturer#1|Brand#13|SMALL BRUSHED NICKEL|19|LG PKG|1033.13| final pinto beans|
-134|steel beige mint maroon indian|Manufacturer#4|Brand#42|SMALL POLISHED STEEL|35|SM PKG|1034.13|es. bold pa|
-135|thistle chocolate ghost gainsboro peru|Manufacturer#2|Brand#21|MEDIUM BURNISHED STEEL|24|JUMBO CASE|1035.13|l frets |
-136|cornsilk maroon blanched thistle rosy|Manufacturer#2|Brand#22|SMALL PLATED STEEL|2|WRAP BAG|1036.13|kages print carefully|
-137|cornsilk drab ghost sandy royal|Manufacturer#3|Brand#31|ECONOMY PLATED STEEL|25|MED PACK|1037.13|the t|
-138|dark Algebricksmarine tomato medium puff|Manufacturer#1|Brand#13|ECONOMY BURNISHED COPPER|42|JUMBO DRUM|1038.13|ts solve acro|
-139|floral steel burlywood navy cream|Manufacturer#3|Brand#32|MEDIUM BRUSHED STEEL|7|SM BOX|1039.13|ter t|
-140|Algebricksmarine lavender maroon slate hot|Manufacturer#5|Brand#53|STANDARD PLATED STEEL|45|SM BOX|1040.14|oss the carefu|
-141|honeydew magenta tomato spring medium|Manufacturer#3|Brand#35|STANDARD ANODIZED STEEL|23|SM PKG|1041.14|ans nag furiously pen|
-142|chartreuse linen grey slate saddle|Manufacturer#5|Brand#55|STANDARD ANODIZED BRASS|36|MED JAR|1042.14|he accounts. pac|
-143|bisque dodger blanched steel maroon|Manufacturer#3|Brand#34|ECONOMY PLATED TIN|44|MED BAG|1043.14|nts across the|
-144|hot midnight orchid dim steel|Manufacturer#1|Brand#14|SMALL ANODIZED TIN|26|SM BOX|1044.14|owly |
-145|navajo lavender chocolate deep hot|Manufacturer#5|Brand#53|PROMO BRUSHED COPPER|24|SM BAG|1045.14|es wake furiously blit|
-146|azure smoke mint cream burlywood|Manufacturer#3|Brand#34|STANDARD BRUSHED COPPER|11|WRAP PACK|1046.14|unts cajole|
-147|honeydew orange dodger linen lace|Manufacturer#1|Brand#11|MEDIUM PLATED COPPER|29|JUMBO PKG|1047.14|wake never bold |
-148|yellow white ghost lavender salmon|Manufacturer#3|Brand#31|STANDARD PLATED STEEL|20|SM BOX|1048.14|platelets wake fu|
-149|tan thistle frosted indian lawn|Manufacturer#2|Brand#24|MEDIUM BURNISHED NICKEL|6|MED PKG|1049.14|leep requests. dog|
-150|pale rose navajo firebrick Algebricksmarine|Manufacturer#3|Brand#35|LARGE BRUSHED TIN|21|SM BAG|1050.15|ironic foxes|
-151|chartreuse linen violet ghost thistle|Manufacturer#3|Brand#34|LARGE PLATED BRASS|45|MED CAN|1051.15|ccounts nag i|
-152|white sky antique tomato chartreuse|Manufacturer#5|Brand#53|MEDIUM POLISHED STEEL|48|MED CASE|1052.15|thely regular t|
-153|linen frosted slate coral peru|Manufacturer#1|Brand#11|STANDARD PLATED TIN|20|MED BAG|1053.15|thlessly. silen|
-154|peru moccasin peach pale spring|Manufacturer#1|Brand#11|ECONOMY ANODIZED TIN|1|JUMBO BAG|1054.15|posits |
-155|puff yellow cyan tomato purple|Manufacturer#2|Brand#21|SMALL BRUSHED NICKEL|28|WRAP CASE|1055.15|lly ironic, r|
-156|almond ghost powder blush forest|Manufacturer#4|Brand#43|SMALL POLISHED NICKEL|2|LG PKG|1056.15| pinto beans. eve|
-157|navajo linen coral brown forest|Manufacturer#1|Brand#11|ECONOMY ANODIZED STEEL|26|JUMBO PACK|1057.15|ial courts. ru|
-158|magenta light misty navy honeydew|Manufacturer#4|Brand#45|MEDIUM BURNISHED COPPER|47|LG JAR|1058.15| ideas detect slyl|
-159|white orange antique beige Algebricksmarine|Manufacturer#4|Brand#43|SMALL ANODIZED BRASS|46|SM BAG|1059.15| ironic requests-- pe|
-160|frosted cornflower khaki salmon metallic|Manufacturer#5|Brand#55|STANDARD POLISHED COPPER|47|JUMBO CAN|1060.16|nts are carefully|
-161|metallic khaki navy forest cyan|Manufacturer#2|Brand#22|STANDARD PLATED TIN|17|SM PACK|1061.16|r the bl|
-162|burlywood cornflower Algebricksmarine misty snow|Manufacturer#3|Brand#33|MEDIUM ANODIZED COPPER|35|JUMBO PACK|1062.16|e slyly around th|
-163|blush metallic maroon lawn forest|Manufacturer#2|Brand#21|ECONOMY PLATED TIN|34|WRAP DRUM|1063.16|nly s|
-164|orange cyan magenta navajo indian|Manufacturer#2|Brand#23|LARGE PLATED BRASS|35|JUMBO BAG|1064.16|mong th|
-165|white dim cornflower sky seashell|Manufacturer#1|Brand#15|STANDARD PLATED STEEL|24|SM CAN|1065.16| carefully fin|
-166|linen bisque tomato gainsboro goldenrod|Manufacturer#5|Brand#52|LARGE POLISHED COPPER|4|MED BAG|1066.16|ss the|
-167|almond floral grey dim sky|Manufacturer#3|Brand#32|LARGE ANODIZED STEEL|46|WRAP BOX|1067.16|ic ac|
-168|lace gainsboro burlywood smoke tomato|Manufacturer#1|Brand#13|SMALL BRUSHED COPPER|20|JUMBO DRUM|1068.16|ss package|
-169|bisque misty sky cornflower peach|Manufacturer#5|Brand#55|STANDARD POLISHED BRASS|10|JUMBO CASE|1069.16|lets alongside of|
-170|peru grey blanched goldenrod yellow|Manufacturer#3|Brand#33|LARGE POLISHED COPPER|28|LG DRUM|1070.17|yly s|
-171|beige violet black magenta chartreuse|Manufacturer#1|Brand#11|STANDARD BURNISHED COPPER|40|LG JAR|1071.17| the r|
-172|medium goldenrod linen sky coral|Manufacturer#5|Brand#53|PROMO PLATED NICKEL|28|MED CASE|1072.17|quick as|
-173|chartreuse seashell powder navy grey|Manufacturer#1|Brand#12|ECONOMY BURNISHED TIN|17|LG CASE|1073.17|sly bold excuses haggl|
-174|hot cornflower slate saddle pale|Manufacturer#1|Brand#15|ECONOMY BRUSHED COPPER|25|LG CASE|1074.17| accounts nag ab|
-175|magenta blue chartreuse tan green|Manufacturer#1|Brand#11|PROMO ANODIZED TIN|45|JUMBO JAR|1075.17|ole against the|
-176|pink drab ivory papaya grey|Manufacturer#2|Brand#24|SMALL ANODIZED STEEL|40|MED CAN|1076.17|blithely. ironic|
-177|indian turquoise purple green spring|Manufacturer#2|Brand#21|MEDIUM BRUSHED STEEL|42|LG BAG|1077.17|ermanently eve|
-178|lace blanched magenta yellow almond|Manufacturer#1|Brand#13|STANDARD POLISHED TIN|10|LG JAR|1078.17|regular instructions.|
-179|deep puff brown blue burlywood|Manufacturer#4|Brand#43|ECONOMY BRUSHED STEEL|20|LG JAR|1079.17|ely regul|
-180|seashell maroon lace burnished lavender|Manufacturer#3|Brand#33|STANDARD BURNISHED NICKEL|7|WRAP BAG|1080.18|oss the |
-181|antique plum smoke pink dodger|Manufacturer#2|Brand#24|MEDIUM PLATED STEEL|19|WRAP CAN|1081.18|al deposits |
-182|beige cyan burlywood chiffon light|Manufacturer#3|Brand#31|MEDIUM ANODIZED COPPER|11|JUMBO CAN|1082.18|bits are |
-183|ivory white burnished papaya cornflower|Manufacturer#5|Brand#52|PROMO POLISHED STEEL|35|LG PKG|1083.18|ly regular excus|
-184|ghost honeydew cyan lawn powder|Manufacturer#5|Brand#53|SMALL POLISHED TIN|42|LG BOX|1084.18|ding courts. idly iro|
-185|firebrick black ivory spring medium|Manufacturer#4|Brand#44|ECONOMY POLISHED TIN|4|WRAP BAG|1085.18|even foxe|
-186|grey purple chocolate turquoise plum|Manufacturer#2|Brand#23|ECONOMY BRUSHED TIN|15|JUMBO PKG|1086.18|ly reg|
-187|white red lace deep pale|Manufacturer#4|Brand#45|PROMO ANODIZED BRASS|45|MED CAN|1087.18|leep slyly s|
-188|moccasin steel rosy drab white|Manufacturer#5|Brand#54|ECONOMY ANODIZED BRASS|9|MED CAN|1088.18| above the silent p|
-189|dodger moccasin lemon purple thistle|Manufacturer#2|Brand#22|MEDIUM BRUSHED BRASS|13|WRAP DRUM|1089.18|en requests. sauternes|
-190|chartreuse goldenrod midnight cornflower blush|Manufacturer#5|Brand#53|LARGE BURNISHED NICKEL|23|WRAP BAG|1090.19| furiously even d|
-191|mint midnight puff forest peach|Manufacturer#3|Brand#31|MEDIUM POLISHED BRASS|36|WRAP BOX|1091.19| asymptote|
-192|thistle puff pink cream orange|Manufacturer#3|Brand#34|STANDARD BRUSHED COPPER|17|MED BAG|1092.19|uickly regular, expr|
-193|turquoise lime royal metallic azure|Manufacturer#4|Brand#45|ECONOMY BURNISHED BRASS|31|SM PKG|1093.19|final ideas wake furi|
-194|brown black cream navy plum|Manufacturer#5|Brand#51|ECONOMY POLISHED STEEL|7|SM CAN|1094.19|y special accoun|
-195|bisque sienna hot goldenrod khaki|Manufacturer#4|Brand#41|STANDARD BRUSHED NICKEL|40|MED CASE|1095.19|oxes sleep care|
-196|pale peru linen hot maroon|Manufacturer#3|Brand#33|SMALL BURNISHED NICKEL|3|JUMBO JAR|1096.19|uickly special |
-197|lawn lemon khaki rosy blue|Manufacturer#5|Brand#52|SMALL ANODIZED COPPER|18|SM JAR|1097.19|lithely after the eve|
-198|orange cornflower indian Algebricksmarine white|Manufacturer#4|Brand#41|PROMO BRUSHED NICKEL|43|SM PACK|1098.19|ackages? carefully re|
-199|ivory slate lavender tan royal|Manufacturer#3|Brand#31|ECONOMY PLATED STEEL|23|JUMBO DRUM|1099.19|ickly regul|
-200|peach cornsilk navy rosy red|Manufacturer#5|Brand#54|MEDIUM POLISHED BRASS|22|LG PKG|1100.20|furiously even depo|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/partsupp.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/partsupp.tbl
deleted file mode 100644
index d8e5856..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/partsupp.tbl
+++ /dev/null
@@ -1,800 +0,0 @@
-1|2|3325|771.64|, even theodolites. regular, final theodolites eat after the carefully pending foxes. furiously regular deposits sleep slyly. carefully bold realms above the ironic dependencies haggle careful|
-1|4|8076|993.49|ven ideas. quickly even packages print. pending multipliers must have to are fluff|
-1|6|3956|337.09|after the fluffily ironic deposits? blithely special dependencies integrate furiously even excuses. blithely silent theodolites could have to haggle pending, express requests; fu|
-1|8|4069|357.84|al, regular dependencies serve carefully after the quickly final pinto beans. furiously even deposits sleep quickly final, silent pinto beans. fluffily reg|
-2|3|8895|378.49|nic accounts. final accounts sleep furiously about the ironic, bold packages. regular, regular accounts|
-2|5|4969|915.27|ptotes. quickly pending dependencies integrate furiously. fluffily ironic ideas impress blithely above the express accounts. furiously even epitaphs need to wak|
-2|7|8539|438.37|blithely bold ideas. furiously stealthy packages sleep fluffily. slyly special deposits snooze furiously carefully regular accounts. regular deposits according to the accounts nag carefully slyl|
-2|9|3025|306.39|olites. deposits wake carefully. even, express requests cajole. carefully regular ex|
-3|4|4651|920.92|ilent foxes affix furiously quickly unusual requests. even packages across the carefully even theodolites nag above the sp|
-3|6|4093|498.13|ending dependencies haggle fluffily. regular deposits boost quickly carefully regular requests. deposits affix furiously around the pinto beans. ironic, unusual platelets across the p|
-3|8|3917|645.40|of the blithely regular theodolites. final theodolites haggle blithely carefully unusual ideas. blithely even f|
-3|10|9942|191.92| unusual, ironic foxes according to the ideas detect furiously alongside of the even, express requests. blithely regular the|
-4|5|1339|113.97| carefully unusual ideas. packages use slyly. blithely final pinto beans cajole along the furiously express requests. regular orbits haggle carefully. care|
-4|7|6377|591.18|ly final courts haggle carefully regular accounts. carefully regular accounts could integrate slyly. slyly express packages about the accounts wake slyly|
-4|9|2694|51.37|g, regular deposits: quick instructions run across the carefully ironic theodolites-- final dependencies haggle into the dependencies. f|
-4|1|2480|444.37|requests sleep quickly regular accounts. theodolites detect. carefully final depths w|
-5|6|3735|255.88|arefully even requests. ironic requests cajole carefully even dolphin|
-5|8|9653|50.52|y stealthy deposits. furiously final pinto beans wake furiou|
-5|10|1329|219.83|iously regular deposits wake deposits. pending pinto beans promise ironic dependencies. even, regular pinto beans integrate|
-5|2|6925|537.98|sits. quickly fluffy packages wake quickly beyond the blithely regular requests. pending requests cajole among the final pinto beans. carefully busy theodolites affix quickly stealthily |
-6|7|8851|130.72|usly final packages. slyly ironic accounts poach across the even, sly requests. carefully pending request|
-6|9|1627|424.25| quick packages. ironic deposits print. furiously silent platelets across the carefully final requests are slyly along the furiously even instructi|
-6|1|3336|642.13|final instructions. courts wake packages. blithely unusual realms along the multipliers nag |
-6|3|6451|175.32| accounts alongside of the slyly even accounts wake carefully final instructions-- ruthless platelets wake carefully ideas. even deposits are quickly final,|
-7|8|7454|763.98|y express tithes haggle furiously even foxes. furiously ironic deposits sleep toward the furiously unusual|
-7|10|2770|149.66|hould have to nag after the blithely final asymptotes. fluffily spe|
-7|2|3377|68.77|usly against the daring asymptotes. slyly regular platelets sleep quickly blithely regular deposits. boldly regular deposits wake blithely ironic accounts|
-7|4|9460|299.58|. furiously final ideas hinder slyly among the ironic, final packages. blithely ironic dependencies cajole pending requests: blithely even packa|
-8|9|6834|249.63|lly ironic accounts solve express, unusual theodolites. special packages use quickly. quickly fin|
-8|1|396|957.34|r accounts. furiously pending dolphins use even, regular platelets. final|
-8|3|9845|220.62|s against the fluffily special packages snooze slyly slyly regular p|
-8|5|8126|916.91|final accounts around the blithely special asymptotes wake carefully beyond the bold dugouts. regular ideas haggle furiously after|
-9|10|7054|84.20|ts boost. evenly regular packages haggle after the quickly careful accounts. |
-9|2|7542|811.84|ate after the final pinto beans. express requests cajole express packages. carefully bold ideas haggle furiously. blithely express accounts eat carefully among the evenly busy accounts. carefully un|
-9|4|9583|381.31|d foxes. final, even braids sleep slyly slyly regular ideas. unusual ideas above|
-9|6|3063|291.84| the blithely ironic instructions. blithely express theodolites nag furiously. carefully bold requests shall have to use slyly pending requests. carefully regular instr|
-10|1|2952|996.12| bold foxes wake quickly even, final asymptotes. blithely even depe|
-10|3|3335|673.27|s theodolites haggle according to the fluffily unusual instructions. silent realms nag carefully ironic theodolites. furiously unusual instructions would detect fu|
-10|5|5691|164.00|r, silent instructions sleep slyly regular pinto beans. furiously unusual gifts use. silently ironic theodolites cajole final deposits! express dugouts are furiously. packages sleep |
-10|7|841|374.02|refully above the ironic packages. quickly regular packages haggle foxes. blithely ironic deposits a|
-11|2|4540|709.87|thely across the blithely unusual requests. slyly regular instructions wake slyly ironic theodolites. requests haggle blithely above the blithely brave p|
-11|5|4729|894.90|ters wake. sometimes bold packages cajole sometimes blithely final instructions. carefully ironic foxes after the furiously unusual foxes cajole carefully acr|
-11|8|3708|818.74|inal accounts nag quickly slyly special frays; bold, final theodolites play slyly after the furiously pending packages. f|
-11|1|3213|471.98|nusual, regular requests use carefully. slyly final packages haggle quickly. slyly express packages impress blithely across the blithely regular ideas. regular depe|
-12|3|3610|659.73|jole bold theodolites. final packages haggle! carefully regular deposits play furiously among the special ideas. quickly ironic packages detect quickly carefully final|
-12|6|7606|332.81|luffily regular courts engage carefully special realms. regular accounts across the blithely special pinto beans use carefully at the silent request|
-12|9|824|337.06|es are unusual deposits. fluffily even deposits across the blithely final theodolites doubt across the unusual accounts. regular, |
-12|2|5454|901.70|s across the carefully regular courts haggle fluffily among the even theodolites. blithely final platelets x-ray even ideas. fluffily express pinto beans sleep slyly. carefully even a|
-13|4|612|169.44|s. furiously even asymptotes use slyly blithely express foxes. pending courts integrate blithely among the ironic requests! blithely pending deposits integrate slyly furiously final packa|
-13|7|7268|862.70|s sleep slyly packages. final theodolites to the express packages haggle quic|
-13|10|864|38.64|s after the slyly pending instructions haggle even, express requests. permanently regular pinto beans are. slyly pending req|
-13|3|9736|327.18|tect after the express instructions. furiously silent ideas sleep blithely special ideas. attainments sleep furiously. carefully bold requests ab|
-14|5|5278|650.07|e quickly among the furiously ironic accounts. special, final sheaves against the|
-14|8|5334|889.50|ss dependencies are furiously silent excuses. blithely ironic pinto beans affix quickly according to the slyly ironic asymptotes. final packag|
-14|1|3676|893.39|sits are according to the fluffily silent asymptotes. final ideas are slyly above the regular instructions. furiousl|
-14|4|4947|310.13| final deposits boost slyly regular packages; carefully pending theodolites |
-15|6|7047|835.70|blithely quick requests sleep carefully fluffily regular pinto beans. ironic pinto beans around the slyly regular foxe|
-15|9|3336|784.55|slyly. fluffily bold accounts cajole furiously. furiously regular dependencies wak|
-15|2|3316|265.89|e express instructions. ironic requests haggle fluffily along the carefully even packages. furiously final acco|
-15|5|5255|458.67|refully bold instructions among the silent grouches must boost against the express deposits:|
-16|7|5282|709.16|lithely ironic theodolites should have to are furiously-- |
-16|10|9412|887.53|ly special accounts wake. fluffily bold ideas believe blith|
-16|3|854|781.91| unusual excuses. requests after the carefully regular pinto |
-16|6|1491|918.51|unts cajole furiously across the fluffily pending instructions. slyly special accounts could have to boost b|
-17|8|8555|995.35|are furiously final accounts. carefully unusual accounts snooze across the requests. carefully special dolphins|
-17|1|7737|648.75|e blithely express accounts. foxes kindle slyly unusual dinos. quickly special f|
-17|4|3123|555.04|ly bold accounts. regular packages use silently. quickly unusual sentiments around the quickly ironic theodolites haggle furiously pending requests. care|
-17|7|3203|64.40|bold packages nag fluffily after the regular accounts. furiously ironic asymptotes sleep quickly enticing pinto beans. carefully pending accounts use about the |
-18|9|1125|664.17|. ironic, regular accounts across the furiously express |
-18|2|8132|52.44| final packages wake quickly across the blithely ironic instructions. regular pains integrate slyly across the deposits. carefully regular pinto beans among the close|
-18|5|3133|568.61|riously bold accounts. packages boost daringly. blithely regular requests cajole. regular foxes wake carefully final accounts. blithely unusual excuses det|
-18|8|6475|386.29|. furiously regular accounts cajole slyly across the pending|
-19|10|1416|144.80|o beans. even packages nag boldly according to the bold, special deposits. ironic packages after the pinto beans nag above the quickly ironic requests. bl|
-19|3|5467|405.70|nstructions use furiously. fluffily regular excuses wake. slyly special grouches are carefully regular Tiresias. regular requests use about the quickly furio|
-19|6|8800|635.66|sual requests sleep carefully. deposits cajole carefully over the regular, regular requests. quickly unusual asymptotes use some|
-19|9|1340|346.92| requests. final, pending realms use carefully; slyly dogged foxes impress fluffily above the blithely regular deposits. ironic, regular courts wake carefully. bold requests impress|
-20|1|2927|675.54|s, ironic deposits haggle across the quickly bold asymptotes. express, ironic pinto beans wake carefully enticingly special foxes. requests are at the c|
-20|4|2723|305.84|nal, bold frets cajole slyly regular, unusual platelets. slyly permanent deposits wake carefully carefully silent accounts. even, even requests wake quickly. furiously pending packages are|
-20|7|5905|546.66|ing deposits use furiously. ironically final pinto bea|
-20|10|4271|115.89|xcuses wake at the deposits. regular pinto beans nag slyly fluffi|
-21|2|6571|944.44|ing instructions impress bold foxes. ironic pinto beans use. thinly even asymptotes cajole ironic packages. quickly ironic pinto beans detect slyly regular deposits. ruthlessly even deposits are. sl|
-21|6|1704|139.05|posits cajole; quickly even requests sleep furiously. ironic theodolites sleep pending, express instructions. stealthily even platelets cajole carefully after the final, ironic p|
-21|10|7153|664.50|blithely enticing instructions use alongside of the carefully thin deposits. blithely bold requests are fluffily|
-21|4|367|584.86|ong the even theodolites. pending, pending accounts sleep-- courts boost quickly at the accounts. quickly fin|
-22|3|4410|786.18|even accounts. final excuses try to sleep regular, even packages. carefully express dolphins cajole; furiously special pinto bea|
-22|7|9779|635.84|l instructions cajole across the blithely special deposits. blithely pending accounts use thinly slyly final requests. instructions haggle. pinto beans sleep along the slyly pen|
-22|1|7834|359.16|sits wake fluffily carefully stealthy accounts. furiously ironic requests x-ray fluffily alongside of the pending asymptotes. slyly silent packages use along the instructions. fu|
-22|5|1434|597.21|ix across the blithely express packages. carefully regular pinto beans boost across the special, pending d|
-23|4|2739|460.12|platelets against the furiously bold Tiresias dazzle quickly into the special, bold courts. silent, regular instructions wake blithely ironic multipliers. ideas|
-23|8|5739|103.13| theodolites need to nag blithely final notornis. slyly idle packages cajole after the furiously stealthy packages. slyly regular accounts use furiously. carefully final accounts affix |
-23|2|9898|233.94|l, express packages wake permanently. quickly even deposits sleep quickly slyly silent id|
-23|6|7035|51.75|xcuses; decoys wake after the pending packages. final instructions are furi|
-24|5|5180|905.41|heodolites above the ironic requests poach fluffily carefully unusual pinto beans. even packages acc|
-24|9|2227|511.20|, silent packages boost around the instructions. special requests sleep slyly against the slyly regular deposits. final, final accounts haggle fluffily among the final requests. regular |
-24|3|7182|582.03| the final, ironic asymptotes. regular requests nag instead of the carefully unusual asymptotes. furiously pending attainments among the slyly final packages boost after th|
-24|7|5318|62.15| careful requests cajole blithely realms. special asymptotes sleep. pinto beans sleep carefully furiously ironic packages. furiously |
-25|6|9029|832.74|fully fluffily regular frets. sometimes even requests after the requests wake slyly at the quickly ruthless requests. a|
-25|10|9062|928.96|he foxes. final, final accounts sleep. boldly ironic excuses thrash quick|
-25|4|9946|694.35|ld, ironic requests. furiously special packages cajole furiously enticing instructions.|
-25|8|7340|746.59|dly final packages haggle blithely according to the pending packages. slyly regula|
-26|7|5020|683.96|es. fluffily express deposits kindle slyly accounts. slyly ironic requests wake blithely bold ideas|
-26|1|6577|892.20|riously pending pinto beans. furiously express instructions detect slyly according to the b|
-26|5|3499|382.11|imes even pinto beans among the busily ironic accounts doubt blithely quickly final courts. furiously fluffy packages despite the carefully even plate|
-26|9|9702|821.89| behind the blithely regular courts impress after the silent sheaves. bravely final ideas haggle |
-27|8|2111|444.01|the even, ironic deposits. theodolites along the ironic, final dolphins cajole slyly quickly bold asymptotes. furiously regular theodolites integrate furiously furiously bold requests. carefully|
-27|2|9080|157.03|ole express, final requests. carefully regular packages lose about the regular pinto beans. blithely re|
-27|6|3407|151.34|ironic theodolites are by the furiously bold ideas. ironic requests shall have to sublate final packages. furiously quick foxes alongside of the express, special deposits was boldly according |
-27|10|4283|348.61|ound the final foxes detect furiously across the even warhorses. quickly t|
-28|9|6643|204.86|y ironic deposits above the slyly final deposits sleep furiously above the final deposits. quickly even i|
-28|3|2452|744.57|ully regular theodolites haggle about the blithely pending packages. carefully ironic sentiments use quickly around the blithely silent requests. slyly ironic frays bo|
-28|7|302|690.30|uickly unusual requests alongside of the final courts integrate slyly |
-28|1|9988|666.53|beans haggle carefully around the slyly ironic acco|
-29|10|3506|799.27|leep fluffily according to the quietly regular requests: accounts integrate carefully bold foxes. carefully silent|
-29|4|8106|981.33|the ironic, bold asymptotes! blithely regular packages hang furiously above the dependencies. blithely permanent dependencies are furiously furiously ironic acco|
-29|8|9193|734.44|ly unusual packages. foxes cajole. theodolites nag|
-29|2|6252|186.21|thely carefully even packages. even, final packages cajole after the quickly bold accounts. fluffily quick accounts in place of the theodolites doze slyly f|
-30|1|4767|989.05|ts. slyly final pinto beans cajole ironic accounts. blithely final accounts use among the request|
-30|5|535|743.26|sual instructions wake carefully blithely even hockey playe|
-30|9|7756|568.86| special foxes across the dependencies cajole quickly against the slyly express packages! furiously unusual pinto beans boost blithely ironic Tir|
-30|3|7945|583.84| sleep. bold, regular deposits hang doggedly furiously bold requests. slyly bold excuses detect busily above the even gifts. blithely express courts are carefully. blithely final packages until th|
-31|2|9685|620.84|he blithely regular ideas. blithely unusual requests haggle fluffily. platelets|
-31|7|1951|120.99|refully regular pinto beans. ironic requests integrate furiously since the quickly ruthless platelets. quickly ironic attainments ha|
-31|2|1402|761.64|r platelets nag blithely regular deposits. ironic, bold requests |
-31|7|137|849.11|blithely ironic accounts. slyly ironic asymptotes sleep ironic, even accounts. regular accounts thrash quickly|
-32|3|2203|406.03|es? slyly enticing dugouts haggle carefully. regular packages alongside of the asymptotes are carefull|
-32|8|467|109.34|ainst the unusual braids nod fluffily packages. regular packages nod among the slyly express|
-32|3|7975|747.14|final foxes boost furiously pending packages. quickly regular depths promise blithely accoun|
-32|8|7938|856.09|s integrate according to the even dependencies. carefully regular reque|
-33|4|4028|891.46|, pending requests affix slyly. slyly ironic deposits wake accounts. express accounts sleep slowly. ironic, express accounts run carefully fluffily final dependencies. furiously unusual ideas|
-33|9|4410|929.05| packages sleep carefully. slyly final instructions boost. slyly even requests among the carefully pending platelets wake along the final accounts. quickly expre|
-33|4|1287|310.76|dolites above the slyly express deposits try to haggle blithely special gifts. blithely ironic reque|
-33|9|6006|327.19|ly. ironic dependencies haggle carefully silent instructions. furiously ironic dolphins are fluffily furiously even theo|
-34|5|9934|848.75|ven instructions besides the gifts are furiously among the slyly regular packages! instructions use carefully. even requests sleep quickl|
-34|10|4749|265.31|ckly regular theodolites eat above the bravely regular courts. ironic requests wake slyly.|
-34|5|5459|824.69|ong the slyly silent requests. express, even requests haggle slyly|
-34|10|5884|609.69|ully final tithes. slyly ironic deposits hang furiously about the regular, regular deposits|
-35|6|2500|451.58|nic packages boost carefully carefully even theodolites. blithely fina|
-35|1|8875|537.72|ully regular deposits: special accounts use. slyly final deposits wake slyly unusual, special ideas. asymptotes |
-35|6|596|669.19|slyly against the daring, pending accounts. fluffily special pinto beans integrate slyly after the carefully unusual packages. slyly bold accounts besides|
-35|1|2025|411.17|s cajole fluffily final deposits. furiously express packages after the blithely special realms boost evenly even requests. slow requests use above the unusual accoun|
-36|7|3907|630.91|al deposits detect fluffily fluffily unusual sauternes. carefully regular requests against the car|
-36|2|174|434.47|permanently express instructions. unusual accounts nag toward the accou|
-36|7|2625|569.91|ctions. pending requests are fluffily across the furiously regular notornis. unusu|
-36|2|8209|289.15|arefully regular requests cajole. special, express foxes sleep slowly. quickly unusual in|
-37|8|7171|824.96|usly into the slyly final requests. ironic accounts are furiously furiously ironic i|
-37|3|5542|126.59|ven deposits. ironic foxes cajole. slyly final deposits are furiously after the furiously even packages. slyly ironic platelets toward the slyl|
-37|8|7113|15.72|re bravely along the furiously express requests. blithely special asymptotes are quickly. fluffily regular packages alo|
-37|3|1449|745.64|y after the ironic accounts. blithely final instructions affix blithely. bold packages sleep carefully regular instructions. regular packages affix carefully. stealthy fo|
-38|9|1226|570.11| slyly even pinto beans. blithely special requests nag slyly about the ironic packages. |
-38|4|4237|662.75|lar warhorses cajole evenly against the attainments. requests cajole furiously furiously express requests. carefully regular platelets use fluffily after the silent, unusual ideas: bl|
-38|9|1135|160.70|express accounts haggle. carefully even pinto beans according to the slyly final foxes nag slyly about the enticingly express dol|
-38|4|3516|847.09|nal accounts. furiously pending hockey players solve slyly after the furiously final dependencies. deposits are blithely. carefully regular packages unwind busily at the deposits. fluffily |
-39|10|3633|463.10|kages are slyly above the slyly pending pinto beans. bold, ironic pinto beans sleep against the blithely regular requests. fluffily even pinto beans use. regular theodolites haggle against the quic|
-39|5|3682|300.43|ng requests are according to the packages. regular packages boost quickly. express Tiresias sleep silently across the even, regular ideas! blithely iro|
-39|10|5475|532.26| beans cajole carefully carefully express requests. instructions sleep furiously bold deposits. furiously regular depos|
-39|5|6259|737.86|y. special, even asymptotes cajole carefully ironic accounts. regular, final pinto beans cajole quickly. regular requests use warhorses. special, special accounts hinder boldly across the|
-40|1|7690|776.13|lets use fluffily carefully final deposits. blithely ironic instructions sublate against the furiously final ideas; slyly bold courts x-ray silent foxes. regular foxes wake blithely. slyl|
-40|6|1704|565.82|riously furiously silent asymptotes. final deposits cajole blithely ironic requests. furiously special pains into the blithely final instru|
-40|1|4521|374.71|ptotes haggle. slyly even requests nag fluffily silent packages. blith|
-40|6|6617|196.64|he slyly unusual epitaphs? ironic deposits at the furiously unusual instructions thrash blithely requests. requests are carefully blithely pending waters.|
-41|2|9040|488.55|ss the dinos wake along the blithely regular theodolites. foxes cajole quickly ironic, final foxes. blithely ironic packages haggle against |
-41|8|5946|391.81| slyly slyly regular requests. final deposits sleep fluffily. blithely bold instructions detect carefully. blithely pending requests are furiously ironically final ideas. regul|
-41|4|1550|916.55| the blithely final ideas. furiously regular asymptotes could cajole furious|
-41|10|560|37.59|special pinto beans against the unusual accounts cajole slyly final foxes. close, ironic|
-42|3|2893|716.81|requests nag. furiously brave packages boost at the furiously even waters. slyly pending ideas nag carefully caref|
-42|9|2927|709.06|g dugouts. carefully careful ideas are fluffily. carefully final pinto beans snooze. ironic deposits wake evenly along |
-42|5|3500|200.00|against the ironic, ironic forges. slyly final deposits wake blithely. ironic courts sleep furiously ab|
-42|1|3662|29.46|es sleep slyly among the slyly final requests. bold theodolites use silently against the final foxes. carefully pending requests use furiously. dogged, unusual asymptotes use |
-43|4|3211|805.78|gular accounts. bold theodolites nag slyly. quickly express excuses use blithely. blithely even ideas boost fluffily! blithely unusual ideas detect bli|
-43|10|6770|493.19|ing to the quickly even theodolites. quickly bold excuses haggle. sometimes unusua|
-43|6|9506|493.65|riously! slyly ironic sauternes affix. ironic theodolites sleep furiously about the express packages. slyly ironic deposits are blithely against the regular package|
-43|2|3232|307.12|counts: express, final platelets use slyly bold ideas. ironic theodolites about the blithely s|
-44|5|486|164.22| final notornis throughout the unusual pinto beans are about the special accounts. bold packages sleep fluffily above the|
-44|1|5310|114.37|quests. quickly unusual requests against the carefully final somas detect slyly bold a|
-44|7|3534|383.01|r the pending pinto beans! requests wake furiously after the special deposits. silent deposits mold quickly along the express, special |
-44|3|4798|833.15| run. ironic, special dolphins according to the even, ironic deposits haggle carefully alongside of the carefully regular excuses. regular frays haggle carefully ironic dependenc|
-45|6|1685|919.63|he doggedly final accounts; carefully regular packages cajole idly regular idea|
-45|2|5202|877.29|ngage blithely after the final requests. bold accounts sleep blithely blithely express dependencies. pinto beans through the carefully regular hockey players wake|
-45|8|5669|532.70|es play carefully doggedly unusual requests. bold grouches against the furiously ironic dugouts sleep furiously qu|
-45|4|1872|155.32| ironic, even pinto beans. bold theodolites haggle after the furiously ironic accounts. slyly bold courts|
-46|7|4171|244.65|lly quiet instructions. furiously express requests among the final ideas cajole carefully bold waters. furiously regular pac|
-46|3|8518|106.80|e unusual instructions shall have to detect slyly blithely ironic foxes. bold requests impress silent foxes. ironic, quiet realms haggle quickly pending, express pinto be|
-46|9|7225|14.78|ously about the fluffily pending accounts. fluffily even dugouts are quickly slyly express platelets; quickly bold pearls sleep slyly even instructions. furiously ironic packages poach quic|
-46|5|1381|985.88|ending platelets are carefully regular accounts. fluffily even accounts against the dependencies nag carefully final, |
-47|8|6989|292.52|even ideas. blithely final requests boost blithely. final, ironic instruct|
-47|4|4458|539.47|; finally enticing theodolites cajole enticing, silent warhorses! slyly bold pains c|
-47|10|2896|74.54|grate final asymptotes. pending requests kindle carefully final frets. ironic deposits above the slyly e|
-47|6|5873|296.63|after the regular dependencies. final, bold pains sleep quickly pend|
-48|9|5052|611.16|posits are blithely blithely final foxes. blithely even deposits haggle fluffily express requests. furiously final theodolites use sl|
-48|5|9451|191.36|ckages cajole never even, special foxes. regular dependencies wake after the blithely ironic instructions. thinly ironic reque|
-48|1|5564|668.19|al pinto beans. furiously final frays use slyly according to the ironic theodolites. regular ideas cajole furiously after the slyly even deposits. |
-48|7|1719|606.16|forges lose. packages cajole regular, bold accounts. never ironic accounts may promise about the permanently bold deposits. always express requests cajole fluffily regular c|
-49|10|9056|35.11| bold deposits? final, bold pinto beans are furiously slyly regular packages. sly|
-49|6|6646|908.15|ts sleep across the fluffily final deposits. carefully express accounts around the regular, express excuses x-ray inside the ironic theodolites. expre|
-49|2|5336|713.25|ld accounts. furiously blithe waters use furiously blithely idle dependencies. pending deposits along the permanently re|
-49|8|597|812.62|n foxes snooze furiously. courts integrate never. carefully unusual requests are carefully. quickly ironic deposits ha|
-50|1|1832|565.54|liers above the dolphins dazzle across the regular foxes. furiously regular packages haggle furiously blithely ironic grouches. ironic, even accounts haggle pending, furious instruction|
-50|7|43|690.87|aggle daringly along the close, express deposits. final requests snooze carefully carefully bold deposits. carefully unusual ideas doze furiously after the furious|
-50|3|6160|301.06|arefully ironic requests use. furiously pending waters play carefully carefully regular platelets. sly requests cajole furiously slyly regular pinto beans. bold packages boost fluffily. furiously i|
-50|9|2104|107.17|t blithely unusual theodolites. quickly final accounts affix fluffily regular requests. c|
-51|2|837|310.74|ly dogged, regular dependencies. express, even packages are |
-51|9|7318|85.03|al foxes. carefully ironic accounts detect carefully-- slyly even accounts use. furiously final platelets shall haggle sometimes after the blithely regu|
-51|6|138|728.95|requests according to the carefully unusual deposits promise slyly ironic packages. slyly ironic dependencies are accordin|
-51|3|8062|901.04|le ruthlessly furiously slow requests. fluffily slow depende|
-52|3|6533|54.92|efully. slyly special deposits haggle along the quick deposits. slyly pending requests use quickly packages. final, final dolphins doubt according to the quickly unusual excuses|
-52|10|1937|210.44|s. never even asymptotes nag carefully! regularly unusual foxes along the unusual requests haggle accounts. fluffily express pinto |
-52|7|4084|628.53| deposits wake slyly pending asymptotes. ironic asymptotes haggle. blithely ironic requests are qui|
-52|4|5524|424.93|cial, ironic packages. even dolphins boost. slyly final deposits integrate. final sheaves along the silent excuses use at the slyly close foxes; bold accounts are finally even packages. ironi|
-53|4|6443|192.78|carefully ironic accounts. blithely bold deposits detect furiously against the flu|
-53|1|5319|563.44|ly. fluffily final pearls boost carefully. special sauternes nod furiously even instructions. carefully regular dependencies across the slyly regular deposits|
-53|8|8200|388.08|fully requests. furiously final accounts cajole express, regular pearls. special deposits wake fluffily express accounts. quic|
-53|5|6929|224.83|xes. carefully ruthless asymptotes impress slyly. fluffily final deposits sleep against the ideas. slyly final packages wake. pending, express packages sleep quickly.|
-54|5|2515|686.51|ly along the packages. blithely close pinto beans are blithely alongside of the unusual packages. carefully even platelets boost alongside of the even foxes. ironic de|
-54|2|7079|798.98|he carefully unusual packages wake according to the ironic dolphins. permanently regular sheaves nag quickly. regular, ironic|
-54|9|2386|23.78|kly ironic foxes. final instructions hinder doggedly. carefull|
-54|6|536|259.24| furiously along the fluffily regular requests. carefully unusual accounts use fluffily final platelets. pending deposits integrate furiou|
-55|6|7874|611.04|ly special packages. furiously even warhorses integrate. silen|
-55|3|8460|236.27|round the special, bold asymptotes cajole alongside of the instructions. qui|
-55|10|8278|134.62|gedly silent pinto beans! furiously regular sentiments was furiously across the silent pinto beans. pending warthogs along the slyly |
-55|7|1289|130.33|ut the blithely final requests. requests nag blithely. |
-56|7|241|855.39|nto beans. finally regular sauternes are. carefully bold deposits according to the blithely express requests wake carefully ironic excuses? furiously final deposit|
-56|4|9104|54.79|tructions above the blithely pending foxes cajole blithely furiously even sentiments. special, exp|
-56|1|1330|52.29|xpress instructions haggle furiously regular deposits. quickly unusual packages sleep furiously final pinto|
-56|8|5799|926.25|ades grow around the dependencies. carefully special ideas cajole furiously across the blithely express requests. unusual tithes are caref|
-57|8|2972|123.11| asymptotes use carefully furiously final deposits. quickly regular deposits are furiously slyly ironic requests. blithely even excuses haggle: blithely special ideas|
-57|5|4721|411.08|instructions. quickly unusual deposits about the furiously special ideas believe among the furiously bold theodolites. unusual, even ideas nag: slow, special theodolites hagg|
-57|2|3788|211.66|ly according to the ironic requests-- slyly final accounts print carefully depths? pending, unusual accounts solve |
-57|9|4583|137.68|ts. blithely bold theodolites can boost carefully carefully even instr|
-58|9|4328|542.52|ven deposits wake requests. quickly bold platelets sleep furiously after the ironic requests. even accounts haggle quickly bold |
-58|6|4307|448.31|quickly carefully ironic foxes. bold platelets nag furiously regular packages. slyly specia|
-58|3|4136|512.24|packages cajole slyly quickly pending depths. special, bold realms cajole slyly. slyly ir|
-58|10|9689|25.09|long the unusual, express asymptotes. ironic ideas boost bold, special deposits? ironic foxes among the fin|
-59|10|8374|357.22|c decoys. carefully even pinto beans wake slyly alongside of the express accounts. regular grouches haggle.|
-59|7|4226|80.98|lar packages. regular depths use slyly after the fluffily regular packages; theodolites around the furiously ironic asy|
-59|4|99|598.55|he special pinto beans. fluffily even accounts cajole. fluffily regular foxes haggle among the|
-59|1|8184|45.50|ependencies. ironic dependencies wake carefully according to the blithely bold packages. quickly unusual ideas about th|
-60|1|6642|800.72| blithely. slyly final realms alongside of the excuses use quickly blithely bold foxes. final theodolites are slyly after the slyly regular excuses. never thin foxes about |
-60|8|5017|314.81| even pinto beans wake carefully. quickly regular deposits hinder along the furiously regular pack|
-60|5|148|504.10|s use fluffily. furiously regular deposits boost furiously against the even instructions. blithely final platelets wake. carefully pending asymptotes sleep blithely. regular, s|
-60|2|5792|92.64|s the carefully pending deposits. slyly regular pinto beans against the furiously regular grouches lose carefully around the enticingly final ideas. furiously express packages cajole bold pa|
-61|2|1540|858.64| could have to use upon the packages. fluffily special packages integrate slyly final theodolites. pending warhorses wake quickly after the blithely final fo|
-61|10|9170|771.26|ly. pinto beans sleep blithely about the patterns. slyly final accounts wake according to the furiously bold requests. slyly regular packages wake according to the ironic packages. requests acros|
-61|8|4762|633.74|final theodolites haggle. fluffily express ideas about the silent theodolites cajole ideas; fluffily special instructions are accordin|
-61|6|7312|153.74|gly final instructions. pending theodolites will wake furiously. slyly bold instructions run. furiously special foxes cajole f|
-62|3|1780|692.42|s around the even ideas cajole furiously somas. silent asym|
-62|1|5896|348.82| final accounts. furious deposits wake slyly. idly regular packages haggle blithely pending grouches. ironic accounts boost blithely. carefully express pa|
-62|9|9127|620.08|totes. unusual requests after the unusual accounts sleep fluffily bold notornis. slowly careful requests use according to the final ideas. pinto beans sleep. foxes are furiously furiously pe|
-62|7|9542|255.78|lly express requests haggle carefully. idle, pending pinto beans are furiously regular excuses. quickly sly attainments are furiously; even accounts are slyly quickl|
-63|4|1804|498.84|leep bravely. final accounts nag. forges sleep against the slyly ironic pa|
-63|2|1998|509.16|yly express theodolites. slyly bold ideas sleep furiously accordi|
-63|10|6839|274.15| among the carefully ironic accounts. carefully even accounts against the regular, final deposits detec|
-63|8|6325|463.69|arly express accounts. express, unusual escapades haggle. special packages must wake. express, regular requests sleep furiously ironic packages|
-64|5|5567|228.61|y even instructions. unusual requests serve slyly. special foxes sleep quickly. fluffily ir|
-64|3|4542|398.92|. quickly final ideas cajole carefully among the blithely silent requests. sometimes ironic accounts nag furiously against the pending instructions. f|
-64|1|9110|602.65| ironic accounts are carefully carefully final accounts. slyly ironic packa|
-64|9|2064|25.77| quickly regular ideas. carefully final requests snooze carefully regular, regular instructions. stealthily final pi|
-65|6|2918|846.26|inal, even foxes cajole. furiously final dolphins hang quickly ironic foxes. furiously special packages alongside of the bold foxes solve above the carefully final instructio|
-65|4|1779|393.63|ully after the quickly regular ideas. ironic, final multipliers above the carefully bold deposits breach slyly furiously express deposits. unusual accounts haggle carefully idea|
-65|2|2054|503.10|e express excuses. ironic, even accounts across the reg|
-65|10|2188|288.73|lent requests nag quickly. blithely silent platelets haggle ironic accounts. slyly bold instructions boost carefully final accounts. carefully even dependencies must nag blithely; qui|
-66|7|3077|809.13|nod carefully besides the furiously final theodolites. slyly final requests haggle. furiously silent excuses detect quickly. ironic deposits detect above the furiously final |
-66|5|1076|785.75|its across the blithely regular theodolites wake furiously among the furiously regular accounts. pains are slyly care|
-66|3|2568|447.08|ously even accounts boost slyly daring requests. even, regular realms kindle blithely. unusual, ironic ins|
-66|1|296|797.27|s nag enticingly outside the furiously final foxes. final accounts haggle fluffily accord|
-67|8|9923|306.37|ly according to the quickly ironic requests. express instructions after the slyly even instructions x-ray blith|
-67|6|7908|546.75|furiously express dolphins integrate carefully regular notor|
-67|4|3368|625.62|le slyly regular requests: regular platelets wake quickly across the quickly regular accounts. reg|
-67|2|5826|397.34|en, ironic deposits affix quickly unusual requests. busily ironic accounts are finally never even sauternes. ironic depos|
-68|9|3444|31.37|es impress furiously pending packages. always silent instructions above the fluffily bold packages haggle slyly blit|
-68|7|6762|5.16|lithely. carefully even grouches along the bold deposits might sleep slyly requests. blithel|
-68|5|8300|80.86|nooze according to the furiously even ideas. blithely regular accounts wake blithely. furiously regular Tiresias cajole regular deposits. regular theodolites eat alongside of the|
-68|3|5399|683.59|. finally final pinto beans play carefully unusual requests. never pending accounts are. regular, final theodolites wake furiously excuses. special request|
-69|10|6197|694.24|eep across the packages. regular, final foxes boost fluffily regular pinto beans. packages sleep along the final requests. bold, unusual packages cajo|
-69|8|8235|846.49|nt fluffily. carefully ironic instructions wake. blithely express foxes cajole slyly. unusual requests sleep quickly. final packages affix slyly according to the spec|
-69|6|9294|386.96|ar packages. blithely regular dependencies are dolphins. slyly ironic excuses nag quickly pending, regular ideas. furiously special sheaves haggle. close, regular pinto beans about the slyly bold|
-69|4|7017|344.28|heodolites. unusual, regular requests boost slyly pending deposits. slyly daring instruct|
-70|1|4536|348.27|ructions. blithely final packages cajole carefully after the express, even requests. furiously final theodolites cajole |
-70|9|8063|452.80|y regular deposits nag about the carefully regular instructions; furiously express accounts along the final, express instruct|
-70|7|2990|940.81|s deposits. unusual foxes are carefully according to the carefully even deposits. carefully ironic foxes cajole fluffily against the carefully pending deposits. slyly special depo|
-70|5|9074|182.58|ions after the fluffily regular foxes wake above the furiously regular requests: slyly regular deposits wake slyly daringly even Tiresias. express, express deposits are. always unusual pa|
-71|2|508|842.21|es cajole carefully around the furiously pending instructions. |
-71|1|8329|239.57|ins sleep carefully slyly express accounts! quickly even accounts boost carefully about the carefully regular excuses. dogged, even dolphins against the sometimes ironic packages believe bl|
-71|10|6768|744.67|ructions. daring requests solve carefully about the furiously pending pinto|
-71|9|5179|329.13|usly at the packages. blithely regular deposits haggle regular packages. quickly special theodolites at the blithely ironic instructions wake|
-72|3|9855|497.26|tithes. quickly pending foxes haggle enticingly according to the accounts. accounts detect slyly: final packages wake. fina|
-72|2|9346|41.04| pending instructions before the even, silent dep|
-72|1|2654|762.61|nusual packages: blithely bold Tiresias sleep furiously. slyly brave accounts according to the final, |
-72|10|4526|154.47|use across the never ironic packages. express, regular accounts above the pending, fluffy deposits are carefully across the slyly even pinto be|
-73|4|9873|947.99|tes use pending packages. final foxes wake final, unusual packages. blithely blithe ideas haggle sometimes slyly express accounts. express instructions nag furiously quickly|
-73|3|7729|920.66|ecial accounts sleep according to the slyly sly accounts. slyly express instructions nag. accounts cajole furiously quickly even foxes. furiously regular requests wake. carefully even frets haggle |
-73|2|5327|108.96| beans are furiously between the regular ideas! unusual pinto beans use. furiously silent requests against the carefully even somas wake care|
-73|1|3928|309.57|longside of the blithely final ideas. carefully ironic courts sleep along the enticingly pending requests. fluffily regular accounts use fluffily bold ideas. slyly ironic packa|
-74|5|3128|345.92|ic theodolites. express deposits haggle blithely pending packages. quickly express foxes could are slyly. deposits sleep deposits. final dependencies sleep ab|
-74|4|2479|930.97|o beans sleep dependencies. regular accounts use blithely asymptotes. u|
-74|3|9473|496.36| haggle carefully alongside of the regular requests. slyly regular accounts belie|
-74|2|6234|849.66| slyly regular foxes. silent accounts integrate. even deposits are quick|
-75|6|7086|624.39|sits are furiously fluffily even courts. furiously pending requests are blithely. pending, regular accounts play carefully slyly unusual platelets. blithely final requests against the ru|
-75|5|6308|759.36|refully ironic dependencies. pinto beans use according to the packages. regular platelets wake around the blithely p|
-75|4|9080|433.59|sits. permanent packages breach. carefully final waters wake. bold, pending foxes haggle furiously evenly express instructions. even deposits about the final|
-75|3|5439|884.01|ding excuses snooze special accounts. tithes alongside of the regular dep|
-76|7|6754|494.83|gular accounts solve. ironic deposits sleep slyly even packages. slyly pending accounts detect slyly express accounts. ironic forges can play furiously carefully express fox|
-76|6|2009|108.97|n packages. blithely even accounts sleep carefully furiously ironic accounts. carefully express requests|
-76|5|6371|552.38|ts use against the quickly ironic ideas. quickly even deposits are carefully a|
-76|4|7986|252.03| packages across the furiously ironic platelets cajole across the regular, ironic accounts. carefully enticing accounts among the blithely regular instructions detect regular pinto be|
-77|8|552|254.92|e after the carefully pending packages. carefully even dependencies cajole pending |
-77|7|8170|875.83|xcuses. blithely even foxes use fluffily. blithely even requests use. slyl|
-77|6|8541|936.13|e slyly express instructions haggle about the sometimes regula|
-77|5|1713|402.14|the even ideas kindle after the requests. regular theodolites cajole carefully about the blithely final ideas. carefully even dependencies at the flu|
-78|9|9915|729.94|around the special excuses. furiously even deposits serve boldly according to the platelets. carefully express accounts at the blithely unusual pinto beans sleep furiously against the u|
-78|8|7246|577.23|regular dependencies cajole doggedly ironic accounts. bold theodolites doze about the accounts. quickly final requests boost slyly final asymptotes. carefully final dolphins ha|
-78|7|1801|434.34|nts kindle furiously according to the even packages. blithely ironic platelets are slyly silent foxes. final, final packages would sleep. pinto beans a|
-78|6|9599|382.82| carefully special theodolites cajole among the quickly even asymptotes. foxes wake blithely across the carefully |
-79|10|4248|765.34|nusual, express asymptotes wake furiously. ironic pinto beans detect above the carefully express theodolites: even, dogged instructions nag. spe|
-79|9|465|28.33|uriously special frays cajole across the finally ironic pinto beans. ironic accounts sleep blithely. fluffily silent accounts are slyly at the slyly unusual ideas. even deposits nag slyly |
-79|8|3309|880.23|tect final, thin accounts? furiously ironic accounts boost regular deposits. carefully ironic attainments sleep. furiously special ins|
-79|7|8627|891.18|r dolphins grow blithely against the slyly ironic packages. deposits about the regular, ironic decoys are slyly around the carefully regular packages. slyly pending excuses sle|
-80|1|8893|127.65|ld accounts detect carefully. carefully bold courts along the regular deposits could have to affix ca|
-80|10|2243|775.79|endencies. bold, regular pinto beans wake furiously above|
-80|9|5385|945.72|cial asymptotes believe after the blithely unusual deposits. furiously silent pinto beans cajole quickly inside the slyly even deposits. regular, f|
-80|8|4034|797.05|ptotes cajole carefully. express ideas cajole carefully even somas. final pinto beans print fluffily across the |
-81|2|1605|550.29|es haggle blithely fluffily final requests. furiously regular foxes use. furiously unusual requests outside the furiously regular requests|
-81|2|5923|220.23|the final, quick accounts are blithely above the s|
-81|2|2942|409.73|accounts boost. fluffily unusual requests cajole fluffily slyly ironic requests. foxes cajole quick|
-81|2|58|492.19| instructions boost furiously across the foxes-- final depo|
-82|3|7793|697.31|he accounts cajole quickly after the even patterns. ironic platelets sublate regular, even asymptotes. quick courts affix according to|
-82|3|7698|585.86|pinto beans. slyly express excuses haggle. blithely even pinto beans about the quick inst|
-82|3|8268|604.25|e after the carefully even theodolites. regular, pending accounts boost. quickly final asymptotes haggle slyly. requests use final, bold pinto beans. bold, ruthle|
-82|3|5532|900.07| slyly? fluffily special dependencies haggle among the slyly special requests. regular, bold packages after the blithely ironic packages are slyly ironic packages. slyly final deposits w|
-83|4|3010|745.51|l foxes along the bold, regular packages integrate carefully express courts! final excuses sleep carefully ironic|
-83|4|8200|399.64|y final platelets are carefully carefully special platelets. carefully ironic requests wake blithely alongside of the slyly even accounts. bold, regular requests sleep |
-83|4|5974|657.22| even packages boost furiously. slyly regular gifts above the accounts are quickly express packages. slyly pending deposits besides the express, even asymptotes haggle after the ironic ins|
-83|4|3890|24.73|deposits. carefully even dependencies across the dependencies haggl|
-84|5|5711|233.61|arefully final platelets cajole blithely; quickly final accounts use furiously. furiously reg|
-84|5|208|469.80|carefully express dolphins nag about the slyly bold requests. slyly even packages wake among the furiously special attainments.|
-84|5|2909|969.44|silent requests cajole slowly bold ideas. special, special deposits according to the always silent packages are against the furiously silent packages. even, blithe accounts sleep slyly across |
-84|5|903|707.77|gly regular dependencies boost. slyly even accounts sleep. furiously final hockey players wake carefully with the reg|
-85|6|2628|608.77|xes wake furiously after the carefully even platelets. blithe theodolites are furi|
-85|6|118|917.83| against the even deposits. furiously bold ideas along the furious requ|
-85|6|2074|491.20|encies-- slyly regular requests about the quiet accounts detect quickly at the |
-85|6|8289|73.81|s cajole slyly along the slyly special accounts. regular, special deposits wake. furiously special foxes boost. blithely even packa|
-86|7|806|65.98|ackages. blithely pending accounts are slyly furiously pending theodolites. furiously eve|
-86|7|2773|250.04|ding accounts. slyly special requests will have to affix carefully along the furiously unusual packages. regular theodol|
-86|7|5546|816.53|s. slyly final requests wake. furious deposits must wake blithely among the blithely ironic instructions. special hockey players try to are bli|
-86|7|1418|332.65|press theodolites sleep carefully about the blithely unusual requests. quickly final deposits breach slyly |
-87|8|5679|688.33|t the carefully regular asymptotes. blithely stealthy pinto beans within the furiously expres|
-87|8|1272|435.42|ronic foxes sleep along the special foxes. final ideas wake quickly about the carefully special theodolites. blithely ironic packages are blithely. regular, regular pint|
-87|8|9041|617.20|furiously final deposits. furiously special dependencies solve across the regular, special ideas. carefully silent requests haggle furiously after the special, specia|
-87|8|1892|868.60|arhorses are. unusual requests use blithely furiously final ideas. final requests sleep theodoli|
-88|9|6116|334.58|ect furiously around the regular deposits. special, final platelets boost furiously. blithely unusu|
-88|9|395|71.50| the regular accounts-- furiously even accounts use quickly after the regular, regular deposits. furiously e|
-88|9|9979|81.82|f the regular, regular requests believe fluffily along the final, quiet decoys. furiously even accounts cajole. carefully express requests wake quickly among the ideas. quickly silent |
-88|9|276|821.43|gular pinto beans. slyly pending excuses breach blithely express accounts. thin deposits sleep slyly around the even accounts; fluffily busy patterns kindle. slyly final deposits along the |
-89|10|3430|744.87| integrate slyly dolphins. bold, final frets use beside the carefully even accounts. slyly close dependencies sleep quickly carefully final pinto beans. foxes promi|
-89|10|8599|776.53|ress packages use furiously. furiously regular packages thrash blithely about the slyly pe|
-89|10|7876|417.61|nstructions: furiously even requests are quietly unusual accounts. regular requests are after the blithely regular deposits. sl|
-89|10|924|920.02|ickly unusual asymptotes after the slyly unusual accounts are carefully doggedly ironic accounts. even, final accounts use furiousl|
-90|1|8037|409.38|eas. unusual, pending packages boost quietly final accounts. slyly final packages serve. slyly even instructions sleep carefully. quickly even foxes wake quickly. |
-90|1|9683|498.43| accounts! fluffily regular deposits x-ray about the unusual, final packages. furiously final deposits alongside of the caref|
-90|1|7849|666.13|carefully ironic accounts are around the slyly bold asymptotes. carefully regular packages use furiously. ironic platelets affix carefully final accounts-- fluffily final pinto beans across the fina|
-90|1|7629|50.84|onic requests wake fluffily unusual packages. furiously even frays after the daringly pending requests wake furiously alongside of the bold requests. fluffily ironic ideas nag. ironic,|
-91|2|7986|528.64|luffily final instructions. furiously unusual foxes haggle |
-91|3|3257|906.20|ackages cajole slyly. blithely bold deposits cajole. blithely |
-91|4|483|823.21|n: slyly ironic foxes nag blithely according to the furiously bold foxes. regular, regular accounts a|
-91|5|1265|703.41| quickly silent deposits use attainments. final requests along the carefully ironic accounts wake blithely about the carefully ironic excuses. furiously bold excuses wake final, final ex|
-92|3|9337|224.01| requests are slyly along the deposits. fluffy pains alongside of the deposits |
-92|4|2246|985.03|jole enticingly regular asymptotes. carefully unusual pinto beans nag carefully ironic ideas. quickly un|
-92|5|3199|91.63|ake carefully: carefully ironic requests sleep careful|
-92|6|1044|854.89|l instructions are fluffily silently regular accounts. quickly final dolphins w|
-93|4|3008|615.98|sits promise blithely fluffily special decoys. slyly regular packages along the slyly final deposits wake accord|
-93|5|5275|376.47|ounts boost fluffily along the thinly regular realms. busily regular a|
-93|6|3869|868.81|ly among the furiously silent accounts. closely regular pinto beans nag slyly! slyly e|
-93|7|7188|805.90|y furiously bold pinto beans. express asymptotes was quickly. carefully final accounts affix slyly! platelets according to the ca|
-94|5|5433|365.56| even excuses wake carefully. quickly unusual requests wake accounts. regularly pending packages are regular |
-94|6|7784|358.08|ironic packages wake slyly carefully regular accounts. quickly regular warhorses against the blithely ironic packages haggle doggedly sly|
-94|7|7232|478.94|y regular requests. carefully final asymptotes haggle carefully against the slyly unusual requests: blithely brave grouches are fu|
-94|8|3261|824.08|quests. enticingly final accounts sleep fluffily. quickly express asymptotes around th|
-95|6|5186|291.03|ites across the blithely pending theodolites do affix across the unusual, bold Tiresias. bold packages|
-95|7|6552|456.36|tes; final, final accounts boost blithely ironic pinto beans. blithely ironic deposits cajole above the quickly pending requests? i|
-95|8|367|987.22| express requests detect furiously. requests cajole carefully|
-95|9|7379|973.74| above the furiously unusual deposits haggle ironic ideas. express, even packages haggle slyly slyly special asymp|
-96|7|5739|202.06|re. slyly regular theodolites breach slyly even dinos. fluffily regular asymptotes haggle slyly. fluffily bold courts affix furiously. regular requests |
-96|8|4942|571.30|e carefully. bold packages sleep against the furiously express requests. express foxes above the dependencies use quickly according to the slyly expres|
-96|9|9985|672.29|ecial instructions-- blithely silent theodolites play. even, silent accounts sleep. blithely silent requests haggle final, f|
-96|10|7250|587.08|efully ironic foxes. regular, final pinto beans boost above the express a|
-97|8|6371|129.77|fluffily unusual accounts. slyly regular theodolites integrate furiou|
-97|9|2390|458.34| carefully unusual pinto beans; even deposits detect furiously|
-97|10|2618|239.34|al theodolites are daringly requests. warhorses sleep blithely requests. special accounts cajole slyly deposits. a|
-97|1|4580|761.41| beans. carefully final deposits alongside of the carefully final requests haggle idly blithely ironic accounts. foxes cajole slyly against the ironic, special packages. furiously brave excuses boo|
-98|9|9486|908.21|usly final deposits mold furiously above the even deposits. carefully ironic packages across the quickly regular dolphins are slyly according to the slyly even|
-98|10|8550|657.16| sleep carefully. bravely bold somas may sleep pendin|
-98|1|3443|139.00|gular pinto beans maintain quickly fluffily regular deposits. express requests sleep. even requests after the regu|
-98|2|3759|811.55|iously. final, express packages are across the ironic dependencies. slyly thin ideas according to the even Tiresias detect furiou|
-99|10|8487|438.38|lphins affix ironic packages. blithely ironic requests nag fluffily after the slyly ironic foxes. bold dependencies boost furiously. special, |
-99|1|7567|496.93|es? permanently even excuses haggle quickly across the dependencies.|
-99|2|7970|365.83|ending accounts cajole furiously. requests promise care|
-99|3|2789|843.88|ending accounts. furiously sly packages above the carefully unusual dolphins sleep after the thinly even deposits. requests wake abo|
-100|1|7885|490.61| accounts nag slyly against the bold excuses. pearls according to the fluffily ironic accounts haggle fluffily along the quickly final platelets|
-100|2|2070|196.73| dolphins. bold deposits along the even theodolites sleep furiously about the final pinto beans. furiously unusual courts cajole about the carefully bold asymptotes. accounts integrate slyly entic|
-100|3|4994|929.57| deposits. accounts are slyly regular ideas. slyly special pinto beans upo|
-100|4|9688|22.00|uctions according to the carefully ironic deposits haggle carefully express ideas? packages across the quickly final requests c|
-101|2|5589|305.40|blithely above the fluffily pending ideas. quickly quick accounts nod ruthlessly above the carefully pending packages. slyly s|
-101|4|8263|218.71|fluffily final requests. carefully even packages wake quickly about the quickly ironic foxes. fluffily even requests hang quickly about the pending, final requests. sp|
-101|6|6324|786.53|olites sleep quickly. slyly ironic theodolites affix. furiously bold accounts integrate among the pinto beans. final ideas hang slyly along the quickly regular packages. instructions cajole.|
-101|8|55|612.09|beans against the carefully express ideas wake quickly along the quickly unusual requests. blithely regular accounts cajole fluffily. enticingly pending theodolites haggle furiously fluffily pendi|
-102|3|1384|876.75|s wake quickly. carefully express deposits wake. silent, regular requests sleep slyly after the furiously ironic deposits. slyly unusual accounts cajole|
-102|5|9137|332.71|telets are final, special deposits. silently ironic deposits wake. pending, eve|
-102|7|9156|618.00| the unusual, ironic pinto beans. theodolites above the foxes sleep slyly car|
-102|9|6942|231.02|tions haggle against the furiously ironic deposits. quickly final asymptotes haggle carefully. regular sentiments might cajole silent courts. blithely bold frays |
-103|4|5913|905.88|e across the theodolites. carefully pending escapades haggle after the ironic theodolites. furiously pending ac|
-103|6|7742|414.42|bout the bold, regular deposits; blithely even accounts are regular, even platelets-- carefully express accounts nag slyly pen|
-103|8|5164|361.48|furiously thin deposits haggle blithely. blithely regular deposits above the carefully regular accounts are slyly carefully regular packages. silent, unusual|
-103|10|429|605.20| theodolites cajole quickly above the asymptotes-- slyly special packages can haggle carefully blithely final instructions. unusual, regular ideas|
-104|5|2368|946.39|packages. final packages wake enticingly. furiously regular asymptotes are always about the carefully regular deposits. slyly regular platelets cajole carefully. final pinto beans must pro|
-104|7|6110|15.57|ending requests. carefully regular deposits use blithely. bold, ironic deposits wake slyly carefully specia|
-104|9|6269|213.89| ideas against the final accounts wake slyly regular notornis. final deposits haggle a|
-104|1|3369|729.38|ong the foxes. foxes sleep quickly? carefully regular accounts sleep. special foxes boost quickl|
-105|6|4602|27.75|lar pearls cajole never carefully even depths. blithely regular ideas are quickly. unusual asymptotes nod carefully carefully regula|
-105|8|269|158.62| unusual courts eat pending excuses. ironic, ironic requests use. bravely |
-105|10|8855|810.86|. slyly special depths sleep. bold packages engage furiously bold packages. fluff|
-105|2|8519|904.17|ding to the furiously careful ideas. dogged theodolites wake fluffily among the slyly bold ideas. blithely brave warthogs above the slyly even theodolit|
-106|7|8649|732.15| slyly ironic instructions are. bold, final accounts cajole slyly ironic pinto beans. fluffily ironic accounts around the quickly special requests use blith|
-106|9|3144|779.68| final deposits along the slyly express theodolites cajole blithely after the ironic pinto beans. furiousl|
-106|1|1411|310.40|al accounts impress. even instructions engage furiously final foxes. silently final deposits wake qui|
-106|3|2297|281.98|inal packages. pending foxes sleep bold hockey players. courts across the blithely regular packages sleep fl|
-107|8|7249|168.03|he fluffily even packages. slyly regular dependencies nag fluffily above the final, unusual foxes. final, pending foxes affix. furiously final deposits cajole quickly blithely|
-107|10|4029|91.31|integrate. requests maintain quickly. carefully regular ideas about the instructions sle|
-107|2|4667|372.94|uctions sleep doggedly final requests. express, final theodolites cajole fluffily furiously silent deposits. blithely regular requests cajole quickly regular instruction|
-107|4|7912|474.77|fluffily across the final, bold accounts. quickly regular deposits grow carefully deposits. regular requests haggle blithely. slyly special platelets boost furiously care|
-108|9|4149|558.85| of the quickly pending theodolites. fluffily unusual frays wake accounts. carefully even foxes wake slyly. carefully special pinto beans |
-108|1|4898|241.47|lthily according to the fluffy deposits. furiously silent ideas according to the furiously special theodolites wake furiously a|
-108|3|5534|626.89|instructions. blithely regular instructions according to the permanent foxes cajole blithely slyly fluffy foxes. slyly regular asymptotes cajole foxes. slyly unusual deposits |
-108|5|3142|922.27|slyly express accounts are fluffily along the blithely unusual packages. pinto beans mold furiously. furiously bold instructions are blithely deposits. quickly special accounts detect t|
-109|10|524|275.19|st the permanently final requests. carefully pending pinto beans haggle quickly slyly ironic dolphins. blithely bold deposits wake blithely. even requests cajole foxes. iro|
-109|2|4470|992.21|ake furiously packages. blithely even foxes haggle furious|
-109|4|8176|936.60|d the express accounts. even theodolites wake quickly up the furiously bold foxes. furiously regular packages use regular, bold|
-109|6|7524|374.49|sual requests. final pinto beans cajole furiously. dependencies integrate slyly even excuses. blithely special requests wake around the slyly final pinto beans. furiously pending requests wake furi|
-110|1|2782|566.46|ly sly deposits. regular deposits are; theodolites haggle furiously bold foxes. final pinto beans wake blithely furiously ironic depths. unusual, regular platelets cajole. final, ironic|
-110|3|8914|183.47|yly even foxes. carefully regular requests doubt. pending, regular requests across the blithely final theodolites hag|
-110|5|1160|932.08|ake blithely. furiously ironic accounts sleep fluffily|
-110|7|4927|196.63|theodolites. instructions haggle even packages. waters impress furiously quickly express courts. furiously ironic depths nod quickly? ironic, ironic requests sle|
-111|2|1890|321.97|st foxes. daring depths use above the furiously special ideas. ironic foxes among the carefully final theodolites are alongside of the regular depths. e|
-111|5|9587|978.65|express instructions against the furiously final grouches haggle across the blithely ironic theodolites. slyly special dependencies in place of the carefully pending |
-111|8|8069|745.33|thely bold requests. unusual packages sleep. quickly pending ideas nag furiously to the carefully final p|
-111|1|2175|496.08|s around the daringly final pinto beans use furiously against the pi|
-112|3|8509|111.42|unts. carefully ironic instructions are final, bold foxes. bold excuses run according to the unusual packages. theodolites cajole carefully according to the fluffily pending deposits? sly|
-112|6|7652|783.52| carefully among the furiously final packages. regular instructions nag. slyly pending ideas hang fluffily blithely ironic instructions. ironic deposits haggle except the quickl|
-112|9|4835|913.75|ach slyly special dependencies. furiously ironic pinto beans sleep slyly pen|
-112|2|1211|815.88|l requests integrate furiously. quickly quiet packages are carefully regular accounts. regular packages eat quickly express, ironic sheaves. quickly dogged accounts o|
-113|4|9981|396.26|ithely express pains lose bravely fluffily pending foxes. blithely ironic sauternes cajole q|
-113|7|3804|860.68|ully about the carefully even accounts: thinly even foxes are carefully. |
-113|10|522|981.41| warthogs use quickly alongside of the furiously unusual requests. final deposits are blithely acro|
-113|3|4692|141.48| blithely unusual gifts snooze against the quickly ironic packages. regular packages across the carefully regular packages bo|
-114|5|7146|447.24|ideas will nag regular accounts! carefully final requests cajole furiously quickly final tithes. furiously express instructions a|
-114|8|3062|555.12|ts. furiously regular requests run carefully thin decoys. ironic platelets sleep alongside of the slyly silent deposits. reg|
-114|1|4519|382.87|nts. ironically express dolphins dazzle blithely. special instructions wake carefully along the ideas. quickly special dolphins sleep. furiously pendi|
-114|4|2113|570.79|o beans sleep among the ironic excuses. furiously even sheaves are. never regular instructions nod.|
-115|6|1817|82.84|uffily final accounts integrate furiously along the carefully busy excuses. slyly even asymptotes doubt quickly. fluffily thin theodoli|
-115|9|983|867.45|kly. requests nag after the blithely bold packages. express requests cajole theodolites. blithely express requests sleep after the furiously regular accounts. fluffily r|
-115|2|7781|861.93|lyly ironic pinto beans affix alongside of the furiously even ideas: quickly bold warhorses sle|
-115|5|3002|81.52|efully after the quickly regular deposits. daringly pending ideas sleep even ideas. silent, re|
-116|7|6580|705.50|iously. slyly regular requests detect slyly. carefully bold packages sleep furiously carefu|
-116|10|4975|413.86|tions. regular excuses detect. ideas haggle slyly about the slyly ironic courts. ironic foxes solve. ideas affix fluffily after the special, even dependencies. final platelets according|
-116|3|8679|866.56|aphs cajole blithely regular accounts. even packages doubt; bold instructions boost quickly. fluffi|
-116|6|5632|37.30|ccounts about the special packages nag across the carefu|
-117|8|5906|706.51|into beans sleep carefully blithely bold packages. even, bold instructions use across the carefully e|
-117|1|1986|322.08|eposits. special pinto beans use fluffily across the furiously regular pinto beans. furiously regular epitaphs nag fluffily packages. special accounts a|
-117|4|2577|761.86|riously. doggedly unusual ideas boost blithely blithely regula|
-117|7|4762|552.88| run furiously ironic accounts. slyly ironic deposits haggle slyly fluffy requests. flu|
-118|9|694|744.73|refully slow requests. requests against the special pac|
-118|2|6326|325.61| packages. express, final frays affix quickly above the final asymptotes. carefully regular requests doubt quickly f|
-118|5|7806|283.27| accounts affix carefully. regular, regular packages among the brave, pendin|
-118|8|4951|976.55|s orbits. even asymptotes above the instructions wake fluffily according to the sly, final excuses. express deposits across the blithely ironic depend|
-119|10|2307|473.64| blithely unusual dolphins boost busy, express ideas. regular requests use carefully furiously ironic deposits. carefully regular packages would sle|
-119|3|1452|676.92|ular instructions was slyly. furiously bold gifts boost f|
-119|6|4955|488.93|ias are along the express requests. fluffily pending ideas nag idly against the fluffily bold instructions? foxes cajole quickly. slyly special deposits haggle slyly e|
-119|9|583|782.47|yly pending requests-- carefully special instructions haggle carefully even instructions. blithely regular theodolites detect blithely final ideas. blithely ironic deposits among the sl|
-120|1|4976|201.21|inal, regular pinto beans haggle carefully! ironic ideas unwind among the slyly regular theodolites. regular platelets kindle blith|
-120|4|7744|365.79|l, special escapades! ideas sleep slyly instructions. carefully bold requests are. even accounts cajole. final accounts use slyly |
-120|7|5329|249.61|s cajole blithely. carefully bold requests believe blithely? brave accounts above the pending, dog|
-120|10|3102|566.34|ctions; realms beside the blithely final theodolites unwind blithely packages. regular dolphins sleep carefully-- carefully express accounts wake quickly. pending depths use never courts.|
-121|2|9741|147.45|ly according to the carefully regular asymptotes. silent excuses cajole carefully against the never silent instructions. furio|
-121|6|4246|850.42|usly final instructions. theodolites are according to the permanently ironic accounts. carefully pending accounts haggle about the pending instructio|
-121|10|7670|449.39|carefully daring packages. express packages use carefully about the quickly unusual packages. special ideas along |
-121|4|8709|655.22| detect carefully along the carefully even pinto beans. gifts haggle: ideas sleep ar|
-122|3|1019|451.29| blithely regular accounts. blithely final pains sleep besides the blithely final warhorses. furiously unusual requests haggle furiously|
-122|7|2490|637.28|efully special excuses grow slyly unusual packages. carefully quiet as|
-122|1|4957|650.84|quests. quickly bold requests nag across the furiously ironic accounts. ironically express instructions detect slyly carefully ironic requests. even, un|
-122|5|2083|739.25|counts. unusual requests alongside of the regular requests are carefully stealthy instructions? regular sauternes cajole. final theodolites breach carefully at the blithely final idea|
-123|4|9881|107.03|fully bold deposits detect slyly pending instructions. slyly special ideas detect blithely. slyly fluffy instructions hinder|
-123|8|5638|818.19|thely even pinto beans. furiously regular asymptotes affix furiously. regular, ironic tithes integrate quickly. blithely regular requests breach finally. decoys alon|
-123|2|2692|217.01|he ironic accounts nag fluffily after the bold, pending theodolites. blithely final ideas sleep carefully according to the blithely ironic foxes. regular requests are. furiousl|
-123|6|5311|149.65|eposits cajole according to the carefully pending packages. furiously final epitaphs solve alongside of the even requests|
-124|5|7102|901.98|ily accounts. furiously busy theodolites above the deposits thrash above the blithely final foxes. express instructions nod slyly furiously busy packages. special asymp|
-124|9|3969|908.64|l epitaphs. packages cajole among the furiously regular requests. closely|
-124|3|9295|882.54|s along the accounts poach quickly ironic deposits. even, final excuses thrash carefully about the express, special pains. carefully careful accounts breach slyly|
-124|7|9416|822.78|ously. theodolites affix around the slyly bold packages. even, ironic packages are carefully pains. furiously unusual requests sleep blith|
-125|6|2263|358.45|e. ironic, regular requests cajole fluffily along the even ideas. final ideas wake blithely. blithely bold |
-125|10|8276|668.65|nd the carefully express requests. slyly regular requests haggle. blithely unusual platelets solve fluffily fluffily regular|
-125|4|2600|455.70|ounts. thinly special accounts cajole carefully. even, special accounts after|
-125|8|5546|806.66| to the unusual courts are deposits! final, final pinto beans solve slyly. ironic accounts boost fluffily. furiously pending d|
-126|7|2647|221.89|lyly final pinto beans across the regular, even courts use slyly slyly pending braids! unusual requests along the furious|
-126|1|2373|194.38|fter the ideas. blithely daring sheaves print furiously among the blithely final packages. iron|
-126|5|1532|451.61|refully alongside of the quickly bold excuses. enticing, bold |
-126|9|5458|929.43|leep to the furiously special accounts. furiously final courts |
-127|8|7658|712.33|al pinto beans! slyly ironic excuses boost after the packages. express foxes integrate carefully. pending, regular theodolites |
-127|2|1467|237.98|regular accounts! quickly ironic packages haggle according to the accounts. carefully ironic |
-127|6|8281|3.14|ts above the furiously pending asymptotes cajole after the deposits. slyly ironi|
-127|10|8894|73.42|fter the sometimes special courts sleep about the slyly unusual reque|
-128|9|6982|425.29|ironic asymptotes. fluffily ironic packages use. ironic, regular ideas are in place of the quickly silent deposits. final, bold gifts across the ironic, regular pac|
-128|3|7602|224.49|xcuses. blithely unusual theodolites use slyly carefully even warthogs. slyly even dugouts haggle slyly final, express pinto beans. furiously bold packages thrash requests? slyly unusual packages |
-128|7|3766|947.16|arefully regular packages boost regularly. accounts are according to the blithely even dependencies. slyly silent accounts doubt slyl|
-128|1|7023|875.78| furiously quickly regular pinto beans. always special requests are. quickly regular deposits are furiously. slyly unusual theodolites haggle evenly; furiously special deposits wa|
-129|10|5721|129.69|ully express requests above the ironic, final requests cajole slyly along the quickly special packages. sl|
-129|4|7242|200.26|es across the furious escapades wake quickly slyly e|
-129|8|5299|330.59|final sentiments affix atop the silent foxes. busy pinto beans cajole. slyly final pinto beans haggle against the carefully expres|
-129|2|1968|27.22|ealthy, ironic deposits. slyly ironic pinto beans are blithely pinto beans. blithely ironic |
-130|1|4928|223.38|ths. slyly even theodolites detect according to the slyly final courts. carefully unusual deposits ar|
-130|5|6909|275.58|lly unusual accounts try to boost along the special packages. furiously bold requests x-ray blithely ironic waters. slyly unusual orbi|
-130|9|4850|442.81|ully regular deposits snooze. slyly silent foxes detect furiously furiously bold requests. slyly regular accounts breach. blithely bli|
-130|3|7387|883.99|aggle furiously. even ideas hinder deposits. even, final ideas are. unusual theodolites after the special, express foxes haggle carefully pending accou|
-131|2|3263|211.70|sits sleep quickly regular multipliers. slyly even platelets cajole after the furiously ironic deposits. slyly ironic requests should have to cajole: bl|
-131|7|125|861.84|l accounts grow quickly-- slyly ironic requests haggle? quickly express pinto bean|
-131|2|5138|572.43|grouches run with the carefully even packages. ironic, even deposits run slyly along the packages. special dependencies among the regular |
-131|7|8945|613.09| are carefully along the quickly final theodolites. packages after the quickly pending package|
-132|3|3092|687.29|y special decoys against the ideas affix against the sly|
-132|8|1904|925.73|the regular foxes wake ironic deposits. ironic, special requests use blithely instructions! final requests hang. blithely regular deposits haggle. ir|
-132|3|7441|357.06|ests. furiously unusual requests wake furiously. quickly unusual depos|
-132|8|5303|353.06|ep blithely after the sly accounts. slyly express dolphins cajole amon|
-133|4|5727|49.17|boost blithely across the ironic, regular instructions. packages use slyly unusual requests. bold accounts above the fu|
-133|9|404|478.18|ly ironic requests run instead of the blithely ironic accounts? regular ideas use fluffily: even, express packages sleep abov|
-133|4|4568|57.48|dolites. ironic accounts are blithely pinto beans. regular pinto beans haggle beneath|
-133|9|2813|277.26|s. pending, final accounts haggle blithely furiously pending deposits! carefully unusual attainments integrate. blithely bo|
-134|5|8879|848.14|lites. slyly final foxes after the bold requests cajole carefu|
-134|10|9013|102.99|pendencies. furiously express warthogs cajole furiously ironic, regular asymptotes. bold deposits boost among the furiously even theodolites. regular instructions integrate carefully |
-134|5|852|927.45| sleep unusual, express packages. unusual sentiments are furio|
-134|10|6270|388.28| to the furiously pending deposits nag along the slyly express asymptotes. slyly silent accounts shal|
-135|6|6940|465.82|ding foxes cajole. even dugouts haggle busily. fluffily pending packages about the express excuses boost slyly final packages. blithely express ideas cajole about the carefu|
-135|1|2443|9.83|atterns. pending, special deposits are furiously. express, regular deposits integrate quickly. unusual gifts cajole blithely stealthily pending deposit|
-135|6|7453|698.42|ven accounts. slyly final instructions nag slyly around the regular, unusual packages. slyly sp|
-135|1|2771|306.43|old deposits. furiously express instructions boost. pending dolphins use requests. slyly regular packages cajole quickly final ideas. pending, regular ideas nag carefully even, express pla|
-136|7|2237|548.19|ond the silent accounts haggle above the blithely regular packages|
-136|2|6068|806.19|structions. ironic theodolites haggle according to the final, daring pearls. carefully ironic somas are silently requests. express pa|
-136|7|8979|387.57|ans. express pinto beans wake carefully among the slyly ironic foxes: carefully final pinto beans haggle blithely. pending, final deposits promise furiously|
-136|2|9617|525.81| across the carefully pending warthogs. close, regular packages are quickly after the never ironic foxes. accounts sleep quickly along the furiously regular re|
-137|8|9057|302.26|slyly about the regular instructions. even, ironic theodolites use carefully around the even decoys. unusual, pending dolphin|
-137|3|4078|441.11|packages. blithely unusual sentiments should are. furiously regular accounts nag quickly carefully special asymptotes! idly ironic requests dazzle bold requests. carefully expres|
-137|8|467|371.85|ly special accounts detect carefully. furiously ironic deposits nag express packages. slyly quiet |
-137|3|7850|187.31|atelets sublate fluffily. enticingly unusual packages boost according to the blithely ironic foxes. pending requests mold sly|
-138|9|133|576.96|regular, final deposits maintain slyly even requests. regularly furious deposits use above the stealthy requests. ironic deposits are. carefully final frays are carefully. carefu|
-138|4|2535|885.35|lar deposits. courts sleep carefully. furiously express ideas boost furiously after the final, regular foxes. furiously bold deposits are. express accounts haggle blithely. |
-138|9|7907|119.83|epitaphs? quickly express foxes use pending accounts. special packages cajole blithely among the quickly unusual accounts? boldly ironic packages across the slyly ironic senti|
-138|4|967|309.03|pendencies integrate against the unusual pains. carefully unusual theodolites wake quickly across the deposits. blithely regular deposits alongside of the carefully regular deposits|
-139|10|2886|285.75|fully ironic requests according to the quickly final idea|
-139|5|9255|684.61|ickly furiously regular excuses. boldly express deposits sleep. ideas nag above the silent dependencies. slyly regular packages wake furiously. requests are carefully. quickly final fox|
-139|10|1042|972.23|gular, regular theodolites. regular asymptotes haggle carefully according to the permanently even deposits. slyly special account|
-139|5|3285|690.00|xpress pains. quickly regular ideas after the special, bold excuses wake furiously final ideas. slyly bold accounts nag packages. ironically regular|
-140|1|2379|501.05|of the silent, bold courts. slyly regular dependencies haggle. fluffily special deposits cajole carefully. quickly ironic depos|
-140|6|3533|781.45|ayers. carefully ironic pinto beans nod carefully furiously regular pinto beans. slyly ironic requests after the carefully regular packages are about the blithel|
-140|1|304|45.84|ing requests. carefully unusual foxes are final requests. slyly regular accounts wake permanently. quickly ironic theodolites hagg|
-140|6|7346|429.52| special pinto beans wake carefully unusual warthogs! furi|
-141|2|6776|293.63|fluffily unusual courts sleep. close pinto beans haggle quickly after the carefully ir|
-141|8|1660|139.18|egular accounts. enticingly bold theodolites eat slyly across the never ironic platelets. theodolites wake bli|
-141|4|7628|838.08|sly about the pinto beans. blithely ironic ideas sleep. foxes are quietly among the pinto beans. carefu|
-141|10|90|810.68|e doggedly regular ideas. foxes haggle slyly. slyly regular theodolites across the carefu|
-142|3|9219|897.49|thlessly special requests sleep blithely about the bold deposits. express, ironic instructions wake. final packages are blithely. deposits are carefully furiously even deposits. furiously regular a|
-142|9|13|334.33|are blithely blithely brave requests. slyly regular theodolites are furiously. blithely ironic dependencies haggle blithely. furiously unu|
-142|5|3076|860.55|gular requests about the pending packages wake furiously dogged accounts. th|
-142|1|3858|854.08|efully special deposits. blithely bold pinto beans haggle. slyly final ideas boost blithely. finally special requests mold along the blithely express packages. entic|
-143|4|7326|960.64|the slyly pending requests cajole quickly blithely regular platelets. even requests boost carefully. ironic, final instructions above the regular courts boost a|
-143|10|3923|741.01|le quickly furiously silent ideas. carefully regular requests ar|
-143|6|7152|772.24|fully furious accounts. final asymptotes cajole regular requests. carefully regular courts are quickly. slyly ironic ideas above the carefully regular requests wake|
-143|2|1952|199.37|l accounts are quickly after the unusual packages. regular accounts wake among the quickly even accounts. even, ironic|
-144|5|6295|457.37| pinto beans promise across the blithely bold packages. express, regular accounts play around the slyly silent deposits. specia|
-144|1|494|849.96|uriously ironic pearls wake idly furiously even pearls. foxes impress slyly busily express requests. carefully slow somas wake quick|
-144|7|1799|713.88|yly final requests. packages are. carefully daring accou|
-144|3|5427|361.83| foxes integrate carefully. deposits cajole fluffily. pending deposits kindle slyly carefully regular packages. even, thin accounts according to th|
-145|6|11|641.67| slyly regular packages are slyly carefully special dolphins. unusual braids use furiously about the final courts. slyly special|
-145|2|3838|568.91|ss, final asymptotes are. furiously express accounts run. furiously express dependencies eat carefully blithely ironic theodolites. closely ironic foxes among the silent asymptotes cajole|
-145|8|1344|422.60| dependencies. even patterns detect slyly after the ironic deposits. ironically even ideas wake slyly. even packages against the blithely express accounts haggle furiously carefully regular|
-145|4|4332|894.57|are carefully above the quickly silent deposits. evenly bold reque|
-146|7|2726|231.15|uriously after the fluffy accounts. furiously bold deposits cajole. requests might engage. quick accounts wake carefu|
-146|3|4628|123.91|ly across the dependencies. daringly ironic deposits are furiously; requests are. quickly regular accounts hang. carefu|
-146|9|5893|858.59|sual instructions believe. fluffily unusual warhorses nag. unusual dependencies sleep. slow sheaves haggle furiously. carefully ironic dependencies cajole slyly against the accounts. |
-146|5|9687|882.37|packages? ideas affix slyly even accounts: express requests wake slyly carefully special depths. ironic in|
-147|8|7442|939.14|sts against the furiously unusual instructions integrate ironic accounts. slyly final pinto beans sleep blithely carefully final asymptotes. slyly ironic warhorses befor|
-147|4|7647|102.19|refully regular orbits about the furiously express asymptotes haggle carefully according to the blithely regular ideas. blithely express excuses around the furiously |
-147|10|1596|466.37|ole. slyly final packages do haggle quickly. unusual accounts across the pending pinto beans was furiously according to the furiously brave deposits. pending deposits along the regular request|
-147|6|4235|235.91|ar pinto beans. regular instructions sleep carefully after the furiously blithe accounts. slowly pending ideas could nag careful, even accounts. attainments use slyly quickly|
-148|9|8007|177.40|final requests-- slyly regular theodolites haggle carefully across the blithely final dependencies. slyly even requests about the carefully even accounts sleep |
-148|5|1904|774.56|y even pinto beans. fluffily ironic packages sleep slyly. permanently brave requests boost furiously packages. boldly ironic deposits across the carefully bold pinto b|
-148|1|5393|264.09|ses. slyly pending packages haggle fluffily fluffily even instructions. fluffily regular packages are carefully about the furiously even asymptot|
-148|7|2957|250.98|. requests boost above the bold, special foxes. blithely regular platelets serve blithely slyly final ideas. carefully special idea|
-149|10|959|679.10|y to sleep carefully ironic requests. even, regular dependencies haggle. slyly unusual foxes haggle along the instructions. quickly even accounts nag furiously special accoun|
-149|6|7283|201.03|usly bold instructions. regular, final deposits alongside of the furiously ironic platelets are slyly even instructions. carefully bold accounts are. ironic, regular requests nag furious|
-149|2|7392|266.53|es detect along the regular instructions. bold ideas boost slyly. quickly unusual accounts doubt. carefully even foxes thrash slyly silent, ironic dolphins: Tiresias must wake |
-149|8|4104|312.37|ly express excuses. bold pinto beans boost blithely across the bold, final pinto beans. final deposits haggle carefully from the|
-150|1|8091|524.71|sleep furiously furiously bold warthogs. furiously express gifts according to the regularly silent sentiments boost within the f|
-150|7|2721|814.79|dependencies. special accounts wake carefully furiously regular accounts. regular accounts haggle along the express instructions. express pinto beans along the express, bold deposits run |
-150|3|3172|33.71| about the silent ideas. fluffily final requests impress. slyly final requests wake carefully about the slyly express foxes. slyly regular warthogs sleep fur|
-150|9|1640|327.34|slyly even deposits alongside of the furiously even accounts detect boldly quickly regular accounts. final accounts kindle carefu|
-151|2|391|281.90|dolites. boldly ironic packages cajole fluffily regular instructions. regular, ironic accounts are blithely. ironic accounts are alongside of th|
-151|9|253|840.06| haggle. somas are carefully. slyly regular requests sleep blithely atop the thinly express deposits. stealthily express packages cajole daringly express requests. carefully special requests after t|
-151|6|1484|71.68|riously final requests sleep according to the regular deposits? slyly ironic ideas wake furiously. quickly even theodolites use fluffily. regular, unusual courts according to the regular |
-151|3|9417|244.06| foxes along the hockey players are slyly about the blithely even packages. unusu|
-152|3|1396|164.60|d the instructions. carefully pending accounts haggle fluffily ruthless instruc|
-152|10|2653|432.12|carefully pending requests. quickly ironic requests haggle carefully special theodolites. blithely special requests aga|
-152|7|3599|77.38| quick excuses according to the pending, ironic requests snooze carefully slyly even foxes: slyly regular instru|
-152|4|1283|142.73|olites above the furiously even requests dazzle blithely against the busy, regular pains. furiously blit|
-153|4|4695|539.86|atelets. dolphins haggle blithely carefully ironic deposits? express, final accounts wake about the requests. even deposits should use quickly. regular,|
-153|1|8464|680.14|cording to the final instructions. carefully fluffy asymptotes haggle carefully |
-153|8|2916|685.52|ully express deposits boost daringly packages. furiously ironic accounts sleep slyly ironic instructions. special deposits integrate blithely. |
-153|5|6397|285.92|furiously special platelets haggle quickly even, bold pinto beans. blithely close pinto beans boost around the furiously regular packages. quickly express requests cajole.|
-154|5|3961|474.19|quickly pending requests nag express dependencies. furiously unusual requests about the regular, pending packages wake according to the ironic packages! theodolites wake about the unusual, regula|
-154|2|3231|829.29|ins along the packages use carefully requests. furiously unusual packages kindle fluffily quick|
-154|9|7315|960.19|uickly regular dolphins ought to believe among the q|
-154|6|1682|160.31|refully except the sly, even requests. careful ideas haggle after the slyly regular foxes: slyly special packages at the slyly regular deposits wake carefully theod|
-155|6|2893|222.02|. bold packages are toward the silent pinto beans. quickly fin|
-155|3|7077|413.24|lar instructions against the furiously unusual instructions breach furiously for the bold, even platelets. ironic accounts must have to are quickly across the |
-155|10|3029|413.02|the carefully ironic asymptotes. even, unusual accounts sleep furiously about the blithely regular ideas. quickly re|
-155|7|977|751.45|quickly silent deposits doubt above the unusual instructions. special r|
-156|7|4755|453.69|e of the excuses. slyly even theodolites boost about the slyly final foxes? requests after the carefully regular platelets sleep above the furiously pending d|
-156|4|7228|994.19|odolites wake quickly slyly final dinos. requests cajole slyly along the instructions. furiously regular deposits cajole slyly blithely ironic instructions. instructions wake. blithely even pinto be|
-156|1|3043|252.66|lithely express, silent decoys. bold, special requests along the carefully even accounts|
-156|8|3191|9.87|ar instructions-- quickly special deposits wake fluffily about the blithely e|
-157|8|5414|369.44|ong the carefully bold ideas boost across the regular, ironic requests. ironic fo|
-157|5|763|568.46|cial packages boost along the ideas. packages sleep slyly express packages. ironic, bold requests|
-157|2|3718|901.53|, ironic foxes. blithely even foxes wake about the carefully special req|
-157|9|3400|288.41|encies integrate carefully even accounts. regular, regular sentiments are against the slyly regular deposits-- even, even ideas use inside the carefull|
-158|9|2845|408.72|y. slyly final pinto beans believe fluffily pending, regular deposits. final, unusual ideas according to t|
-158|6|8715|452.31|instructions along the ironic, final requests are fluffily regular deposits. regular deposits cajole carefully about the silent instructions|
-158|3|4465|837.16| wake carefully in place of the furiously express deposits. slyly regular instructions engage. fluffily f|
-158|10|4251|431.90|etly special accounts boost carefully final multipliers. carefu|
-159|10|9200|356.66|ccording to the furiously final accounts. carefully fluffy foxes wake idly against the quickly final requests. evenly even pinto beans must have to are against the carefully regular de|
-159|7|3585|629.29|g platelets wake furiously slyly bold deposits? slyly regular accounts across the stealthily ironic accounts cajole along the special, ironic pearls. fluffily regular pinto|
-159|4|6085|171.40|ross the blithely special deposits are quickly carefully ironic Tiresias. quickly regular deposits was furiously. unusual accounts affix blithely about the regular deposits. asymptotes ab|
-159|1|3717|790.87|y blithe dependencies. final accounts haggle furiously. even, special asymptotes|
-160|1|2434|525.73|lithely. furiously silent theodolites after the ca|
-160|8|8324|999.93|ly final instructions. closely final deposits nag furiously alongside of the furiously dogged theodolites. blithely unusual theodolites are furi|
-160|5|6034|733.59| furiously against the final instructions. silent accounts sleep blithely after the boldly final requests. ex|
-160|2|6872|872.20|ions are carefully. carefully express foxes nag slyly before the carefully final excuses. accounts after the furiously ironic packages are furio|
-161|2|9365|790.03|scapades. packages use. slyly final accounts haggle across the quickly final th|
-161|10|8421|394.05|cial ideas. ironic instructions eat blithely slyly special packages. furiously final packages alongside of the furiously final instructions boost carefully against the quickly |
-161|8|9679|688.47|ns. blithely express requests sleep slyly foxes. blithely unusual ideas |
-161|6|679|893.72| the fluffily final requests. ironic, pending epitaphs affix slyly. qui|
-162|3|315|923.04| ideas. carefully final dugouts will have to wake quickly regular asymptotes. express grouches unwind carefully after the regula|
-162|1|2604|104.20|usly regular excuses. silent, even sheaves are according to the regular requests. packages grow blithely slyly regular accounts. ca|
-162|9|7014|236.07|cording to the stealthily fluffy theodolites. carefully unusual excuses around the regular deposits cajole slyly amo|
-162|7|4381|824.36|as across the furiously ironic notornis print blithely alongside of the final, pending deposits. fluffily express deposits slee|
-163|4|9241|955.81|cial dolphins. furiously bold foxes could have to use. never sly accounts cajole fluffily about the unusual, special pinto beans. pending, even requests around the quickly special deposits use f|
-163|2|3427|499.51|ithely bold packages integrate slyly quiet pinto beans. carefully even deposits boost slyly about the furiously fluffy packages. evenly regular dependencies wa|
-163|10|5323|920.75|sly even theodolites against the carefully bold packages wake final pinto beans. furiously pending deposits dazzle furiously. blithely exp|
-163|8|9676|573.48|ending accounts haggle blithely ironic, even packages. carefully pending packages wake carefully across the ruthlessly pending accounts! pinto beans wake. slyly final deposits boost slyly. fluffily|
-164|5|1295|341.95| bold instructions cajole slyly ironic deposits. quickly ironic foxes are carefully final, bold theodolites. ironic deposi|
-164|3|2134|84.02|ns believe. carefully express theodolites impress. carefully fina|
-164|1|3245|814.67|brave accounts cajole according to the final platelets. furiously final dolphins across the furi|
-164|9|3028|64.89|fully furiously regular requests. furiously bold orbits serve about the regular packages? carefully final deposits p|
-165|6|4424|943.82|ular requests. regular accounts cajole against the blithely ironic deposits. blithely even packages cajole. furiously final deposits cajole. thinly pending deposits hagg|
-165|4|5534|717.83| quickly regular deposits above the fluffily thin deposits haggle furiously against the quickly final depend|
-165|2|3780|730.28| furiously quickly regular foxes. pending requests engage evenly blithel|
-165|10|6114|210.84|foxes. foxes haggle. dolphins use carefully according to the fluffily regular packages. blithely special accounts according to the slyly final frets breach blithely after the care|
-166|7|6527|309.00|lly. dependencies haggle carefully at the slyly special packages. regular, final packages|
-166|5|6508|714.49|y express deposits cajole furiously above the carefully even theod|
-166|3|9364|581.52|pinto beans. pinto beans cajole furiously carefully special requests-- quickly |
-166|1|6713|631.58| sleep carefully. quickly even deposits run carefully fluffily ironic orbits. ironic deposits wake furiously. close sheaves along the special packages sleep carefully special instr|
-167|8|4933|666.70|ular deposits among the even dolphins are quickly express accounts. final, ironic theodolites cajole closely. th|
-167|6|5789|524.27| are furiously final, even dugouts. ironic, regular packages nag fu|
-167|4|4756|336.75|es are carefully along the carefully express tithes. furiously even deposits cajole slyly slyly regular deposits. bold excuses about the carefully ironic requests sleep blithely instructions|
-167|2|6748|704.97|t the silent ideas are blithely carefully even packages; blithely|
-168|9|347|394.83|hely blithely final theodolites. blithely final deposits among the quickly even ideas haggle about the blithely bold d|
-168|7|1281|771.90|, pending packages. ironic pinto beans use carefully. fluffily bold deposits|
-168|5|9089|508.37|ests are always. regular ideas sleep fluffily; special, express instructions cajole slowly. pending platelets boost furiously against the bold, even instructions. bold instructi|
-168|3|7519|963.43|requests above the quickly regular deposits use carefully aft|
-169|10|6914|619.53|uickly along the dependencies. furiously pending notornis cajole at the carefully special attainments. carefully ironic packages impress slyly care|
-169|8|6589|947.03|gside of the quickly regular asymptotes. quickly even theodolites against the theodolites promise express requests. ironic accounts wake careful|
-169|6|6731|713.35| the quickly special excuses wake blithely alongside of the carefully silent accounts. regular dolphin|
-169|4|7691|476.19|slyly alongside of the warthogs. fluffily even instructions poach under the slyly pending packages. blithely silent deposits use across the fur|
-170|1|7516|581.65| pinto beans. unusual ideas was fluffily. excuses cajole carefully final dependencies. platelets nag quickly according to the furiously ironic requests. carefully regular dependenci|
-170|9|838|667.16|orges do sleep furiously. fluffily furious requests among the final requests sleep after the slyly bold ideas? regular pinto beans might ha|
-170|7|6498|251.19| fluffily regular accounts integrate. blithely even packages cajole fluffily. furiously ironic excuses haggle by the finally final requ|
-170|5|6593|202.07|ep blithely final packages. quickly bold pains cajole carefully across the somet|
-171|2|8217|859.60|ress deposits. carefully special requests are furiously final requests. accounts cajole carefully blith|
-171|1|2311|864.96|s are along the blithely final deposits. regular asymptotes nag slyly against the requests. accounts cajole carefully carefully |
-171|10|8561|22.69|y close ideas are quickly silently regular packages. even, silent requests wake against the slyly special dependencies; regular accounts sleep doggedly furiously final pinto beans. slyly unusual pac|
-171|9|7589|935.29|s above the theodolites wake slyly along the carefully unusual dependencies. carefully express theodolites a|
-172|3|9799|184.96|ts. slyly even asymptotes nag blithely regular accounts. final platelets cajole furiously slyly bold packages. ironic accounts sleep slyly. pendi|
-172|2|8333|920.74|ronic foxes. quickly unusual accounts cajole blithely. blithely bold deposits cajole. blithely close pinto beans cajole requests. quickly express excuses around the quickly even deposits nag agai|
-172|1|3589|437.86|posits should have to boost furiously near the unusual ideas. final packages cajole blithely. carefully final deposits boost carefully. carefully special attainments boost quickly af|
-172|10|1661|687.13|y among the slyly even requests. ideas according to the slyly pending dinos print quickly slyly ironic foxes. pending, even excuses dazzle car|
-173|4|2536|353.84|ons-- final, silent dependencies sleep across the special, special excuses. furiously even accounts must have to mold after the ironic accounts. reque|
-173|3|8307|70.22|alongside of the furiously even packages. furiously final requests snooze blithely alongside of the carefull|
-173|2|6050|683.78|e after the slyly regular ideas. unusual pinto beans cajole even asymptotes-- silent, stealthy requests after the even accounts haggle blithely regular instructions. slyly ev|
-173|1|6162|877.84|es. slyly bold requests after the blithely regular dependencies cajole slyly even ideas. unusual deposits integrate about the final somas. |
-174|5|2103|681.95|sual, express requests wake furiously ruthless, final accounts. carefully ironic somas dazzle furiously. unusual asymptotes sleep-- patterns about the furiousl|
-174|4|6795|143.48|regular theodolites. special accounts integrate across the carefully ironic Tiresias. blithely even platelets detect. foxes about t|
-174|3|111|135.46| express packages-- quickly unusual courts lose carefully requests. bold accounts solve about the theodolites; pinto beans use. ironic foxes|
-174|2|8404|126.20|nding accounts mold furiously. slyly ironic foxes boost express sheaves. daringly final packages along the stealthy dependencies are blithely ironic requests. furiously pending pin|
-175|6|5515|487.68|ages sleep against the Tiresias. slyly pending packages print slyly above the evenly ironic dolphins. furiously ironic packages use f|
-175|5|7522|784.93| affix. quickly final theodolites haggle furiously after the slowly even pinto beans. furiously final packages use slyly. slyly regular reque|
-175|4|8501|706.61|int above the instructions. furiously regular requests integrate blithely according to the instructions. slyly pending foxes are asymptotes. slyly ruthless accounts wake. r|
-175|3|9456|978.56| regular packages. carefully ironic packages use. blithely ironic accounts among the pending, |
-176|7|7180|179.09|riously final requests. accounts doubt blithely regular somas. slyly even platelets are. theodolites across |
-176|6|3589|157.38|inal excuses. express deposits haggle carefully even deposits. carefully unusual requests haggle along the fluffily bold deposits. even, final requests affix. furi|
-176|5|5407|947.51|ending accounts eat carefully instructions. carefully pending packages detect slyly express accounts. foxes wake fluffily across th|
-176|4|1783|861.63|g the carefully special platelets. dogged, ironic asymptotes wake requests. regular excus|
-177|8|1239|44.75|requests use furiously regular, final requests. regular requests on the pending, ironic deposits use slyly among the excuses. carefully regular sheaves are.|
-177|7|4349|63.36|osits sleep among the fluffily unusual instructions. ironic dolphins cajole. furiously bold deposits sleep carefully. even, unusual accounts|
-177|6|9872|252.42|sual platelets. bold foxes affix furiously. pending, pending accounts lose furiously. pending platelets along the unusual, even foxes wake regular, even theo|
-177|5|4727|859.82|es are. slyly ironic packages haggle around the slyly bold deposits. bold foxes haggle blithely. f|
-178|9|4231|558.56|deposits. patterns use against the furiously unusual accounts. accounts wake carefully above the careful|
-178|8|1919|362.26| ironic dependencies. blithely regular packages detect fluffily special theodolites. regular instructions poach-- ironic deposits along the final requests |
-178|7|6836|864.93|y. ideas integrate regular pinto beans. special foxes wake above the slyly ironic asymptotes. quickly ironic ideas sleep. silent dependencies against the slyly bold packa|
-178|6|6922|475.18| regular patterns. fluffily express accounts about the furiously bold deposits cajole slyly about the furiously silent foxe|
-179|10|6956|444.38|g the furiously careful excuses haggle quickly thinly special Tiresias. furiously express foxes after the quickly regular deposits sleep ironic packages|
-179|9|1954|372.75|even dependencies print carefully. deposits boost blithely about the ironic, ironic accounts. express, regular deposits are. bli|
-179|8|2710|277.15|d the frets. pending packages doze quickly across the furiously regular deposits. pending, even deposits impress ironic ideas. quickly regular r|
-179|7|4776|8.39|sly special pinto beans. pinto beans cajole. carefully unusual ideas around the silent accounts are blithely carefully ev|
-180|1|2467|440.25| instructions affix. regular packages cajole quickly. carefully express asymptotes use furiously around the pendin|
-180|10|1108|934.59|hinly after the regular, unusual asymptotes! carefully regular theodolites sublate. regular, ironic deposits against the regular pinto beans nag ca|
-180|9|724|426.16|e, regular accounts. furiously final ideas are furiously above the bold, silent asymptotes. sly instructions are carefully quickly final sentiments. furiously ironic foxes cajole bold, exp|
-180|8|5899|864.83|hin the carefully furious pinto beans. furiously ironic pinto beans use slyly above the even instructio|
-181|2|2416|844.44|ully. theodolites throughout the blithely unusual pinto bea|
-181|2|3242|886.53| express ideas nag carefully brave accounts. slyly express deposits would affix. final, special requests against the slyl|
-181|2|215|938.29| accounts boost furiously furiously blithe theodolites. slyly bold requests unwind special, unusual requests. furious ideas boost quickly pending |
-181|2|1122|657.25|lyly fluffily pending foxes. fluffily ironic pains haggle. thinly regular requests against the deposits affix after the never ev|
-182|3|9699|535.27|ound the furiously regular foxes. pending requests dazzle along |
-182|3|960|519.36|arefully pending dependencies are always slyly unusual pin|
-182|3|6243|741.46|accounts are slyly. furiously ironic requests haggle. express, special instructions against the ironic theodolites use s|
-182|3|6146|365.00|s. blithely express theodolites sleep blithely alongside of the requests?|
-183|4|30|875.44|slyly. furiously regular instructions cajole slyly about the pending, final theodolites. blithely final deposits cajole fluffily alo|
-183|4|4482|424.86|es. depths affix fluffily. bold instructions haggle. ruthless instructions must have to boost|
-183|4|8707|884.26|posits wake. blithely pending requests nag furiously alongside of the p|
-183|4|333|678.16|ost final, final theodolites. slyly bold foxes dazzle carefully furiously regular accounts. regular, sly instructions about the furiously regular excuses nag blithely abou|
-184|5|7069|449.45|nal ideas. blithely final ideas haggle against the pinto beans. qu|
-184|5|9193|576.88|uickly quick dependencies could detect furiously. final packages p|
-184|5|6400|551.90|ss dependencies. quickly even pinto beans are. express accounts a|
-184|5|831|186.84|kages cajole carefully furiously ironic instructions. deposits use bl|
-185|6|1475|538.58|unts hinder slyly. quickly express ideas sleep carefully |
-185|6|6244|213.04|ly unusual decoys are furiously quickly regular packages. bold, ironic foxes cajole fluffily around|
-185|6|7245|426.74|sleep blithely alongside of the regular excuses. even, regular|
-185|6|8014|510.23|lithely even ideas. regular platelets wake carefully ironic, special instructions! final pearls above the fluffily quiet ideas use furiously about the |
-186|7|1095|252.84|. carefully regular pinto beans according to the blithely close asymptotes haggle carefully special requests. packages cajole up the furi|
-186|7|1945|18.75|nic foxes boost carefully careful packages: express, fluffy dolphins nag quickly ironic packages. slyly bold requests nag amon|
-186|7|8838|729.42|ing asymptotes. enticingly regular theodolites mai|
-186|7|7898|812.37|ctions sleep silently carefully bold platelets. furiously ironic dependencies boost. regular de|
-187|8|8656|238.66|tes use along the even foxes? final foxes haggle pinto beans. slyly ironic theodolites are according to the deposits. furiously pending reques|
-187|8|4945|316.64|eposits boost quickly bold requests. furiously regular ideas boost boldly. special, express dependencies are fluffily slyly reg|
-187|8|3183|362.75|t the bold platelets. fluffily express platelets cajole fluffily along the always bold requests. blith|
-187|8|7440|989.71|e slyly against the slyly regular pinto beans. requests haggle carefully around the asymptotes. regular, regular asymptotes use furiously some|
-188|9|4835|771.95|pains are fluffily about the fluffily pending asymptot|
-188|9|2620|331.70|elets nag slyly regular pinto beans. slyly even dugouts above the blithely unusual theodolites su|
-188|9|730|713.62|nag against the final accounts. blithely pending attainments lose. silent requests wake quickly. careful|
-188|9|5430|920.20|uriously. special, regular instructions sleep along the accounts. quickly even foxes across the regular theodolites hang u|
-189|10|1305|392.50|packages. regular, unusual accounts lose furiously fluffily regular platelets. requests sleep carefully dependenc|
-189|10|8777|573.22|beans cajole slyly ironic requests. requests are quickly unusual, even packages. ironic frays haggle. blithely pending requests nod slyly. express, silent requests against the slyly unusual |
-189|10|6369|946.07|ts hinder slyly regular, unusual foxes. final sentiments use above the slyly r|
-189|10|2505|593.23| the deposits. special deposits sleep-- furiously regular sauternes solve furiously across the furiously regular pack|
-190|1|535|621.53|unts must have to haggle; slyly ironic accounts affix slyly alongside of the carefully even accounts. furious deposits haggle quietly among the packages. blithely |
-190|1|5845|608.91| haggle along the carefully unusual pinto beans. quickly final accounts sleep a|
-190|1|4579|396.60|inal, final foxes. regular, even deposits wake blithely! silent, regular packages integrate according to the slyly regular deposits. ironic, ironic notornis ha|
-190|1|2861|458.00|s cajole slyly across the daring, final pinto beans. carefully quiet requests affix along the a|
-191|2|8310|521.06|the slowly regular deposits. special accounts along the quickly unusual|
-191|3|1693|464.46|y. slyly unusual waters across the special pinto beans nag blithely according to the busy deposits. carefully regular accounts are against the regular accounts; perman|
-191|4|597|126.96|ly final accounts should have to boost above the doggedly express pinto beans. blithely regular packages cajole furiously bold requests. fluf|
-191|5|9673|119.41|press deposits kindle theodolites! slyly final dependencies against the blithely final packages sleep slyly regular requests. theodolites cajole furiously quickly bold a|
-192|3|606|198.69|inal platelets integrate regular accounts. accounts wake ironic, silent accounts. slyly unusual accounts kindle carefully-|
-192|4|2656|916.16|uickly. slyly bold ideas affix special, close theodolites. ironic, pending requests use carefully. blithely regular |
-192|5|1811|359.59|ly carefully special asymptotes. furiously pending instructions haggle blithely bravely pending requests. carefully f|
-192|6|8305|861.23|s against the carefully regular foxes haggle fluffily across the pending accounts. blithely final packages sleep after the furiously ironic theodolites. quickly bold r|
-193|4|6184|335.98| quickly bold deposits cajole furiously ruthless courts. carefully|
-193|5|4762|606.19|ns sleep against the furiously regular asymptotes. carefully even asymptotes across the daringly final packages sleep fluf|
-193|6|385|571.71|ons. slyly ironic deposits wake furiously ironic, unus|
-193|7|9791|478.52|quests. carefully even requests use regular excuses. pending accounts are. furiously even pinto beans haggle furi|
-194|5|4289|662.17|ic Tiresias serve along the ironic, express accounts. quickly final requests are slyly among the carefully special requests. accounts boost.|
-194|6|377|430.21|efully instead of the special ideas. fluffily unusual asymptotes cajole blithely after the regular ideas. final accounts along the silent ex|
-194|7|5294|913.46|indle fluffily despite the carefully silent instructions. furiously regular hockey players cajole slyly unusual accounts. furiously regular realms cajole furiously according to the e|
-194|8|7890|79.40|ctions sleep. carefully unusual theodolites should wake furiously across the deposits-- furiously bold excuses boost furiously carefully slow accounts. boldly final accounts grow. regular excuse|
-195|6|9985|20.39|efully among the fluffily even accounts! requests are slyly ag|
-195|7|2947|271.39|yly regular requests cajole carefully. carefully fina|
-195|8|319|102.58|ts. ironic foxes wake carefully slyly special pinto beans. blithely silent excuses hinder blithely quietly regular accounts. quickly careful foxes maintain slyly above the slyly express fo|
-195|9|2803|992.27|xes according to the regular foxes wake furiously final theodolites. furiously regular packages sleep slyly express theodolites. slyly thin instructions sleep r|
-196|7|3843|859.90|l platelets use blithely alongside of the enticingly final deposits. fluffily final requests boost furiously ag|
-196|8|2515|966.01|final theodolites. fluffily even deposits are against the|
-196|9|4778|37.61|fully final requests cajole fluffily across the furiously ironic accounts. qui|
-196|10|1068|928.25| cajole about the blithely regular ideas. final ideas hin|
-197|8|9678|753.88|ously. slyly stealthy requests use alongside of the express, unusual packages. final deposits wake. carefully unusual theodolites cajole slyly about the regular foxes. slyly iron|
-197|9|2631|279.05|e blithely. quickly final deposits wake fluffily excuses. even, unusual deposits x-ray among the final accounts. even ideas above the blithely ironic requests sleep furiously slyly final inst|
-197|10|7598|845.51|lets according to the regular deposits wake furiously about the carefully daring theodolites. blithely express dolphins poach after th|
-197|1|8950|897.33|ideas. requests wake above the blithely unusual deposits. slyly regular |
-198|9|6878|587.41|y even accounts poach carefully about the asymptotes. deposits haggle slyly. finally unusual requests run silently regular, bold packages: instructions after the |
-198|10|6493|673.99|y express excuses use blithely among the pending accounts. stealthy ide|
-198|1|8410|166.93|kages. blithely final theodolites dazzle fluffily. accounts boost furiously. furiously unu|
-198|2|6190|697.10|beans nag fluffily about the asymptotes. slyly bold escapades haggle quickly. fluffily special requests haggle above the ironic,|
-199|10|9343|79.70|ending accounts nag across the instructions. carefully express packages over the blithely even pac|
-199|1|8199|46.52|oost slyly. ironic platelets sleep blithely about the slyly silent foxes. furiously even pl|
-199|2|2742|890.63| the special deposits? carefully final deposits about the carefully regular sauternes |
-199|3|7167|884.56|onic platelets use carefully along the slowly stealthy ideas. slyly dogged instructions are quickly above the slyly u|
-200|1|3120|776.41|ntly final packages kindle furiously blithely ironic accounts. carefully final packages according to the carefully |
-200|2|5392|242.52|y unusual ideas. ruthlessly express asymptotes cajole. regular theodolites are. carefully silent deposits poach carefully across the fluffily even theodolites. carefully express realms hag|
-200|3|9408|307.79|oxes! fluffily regular requests use against the unusual, slow ideas. ironic accounts doze b|
-200|4|331|466.07| slyly even requests. fluffily final packages boost carefully express instructions. slyly regular forges are blithely unusual, regular |
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/region.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/region.tbl
deleted file mode 100644
index c5ebb63..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/region.tbl
+++ /dev/null
@@ -1,5 +0,0 @@
-0|AFRICA|lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to |
-1|AMERICA|hs use ironic, even requests. s|
-2|ASIA|ges. thinly even pinto beans ca|
-3|EUROPE|ly final courts cajole furiously final excuse|
-4|MIDDLE EAST|uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/supplier.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/supplier.tbl
deleted file mode 100644
index d9c0e9f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/supplier.tbl
+++ /dev/null
@@ -1,10 +0,0 @@
-1|Supplier#000000001| N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ|17|27-918-335-1736|5755.94|each slyly above the careful|
-2|Supplier#000000002|89eJ5ksX3ImxJQBvxObC,|5|15-679-861-2259|4032.68| slyly bold instructions. idle dependen|
-3|Supplier#000000003|q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV3|1|11-383-516-1199|4192.40|blithely silent requests after the express dependencies are sl|
-4|Supplier#000000004|Bk7ah4CK8SYQTepEmvMkkgMwg|15|25-843-787-7479|4641.08|riously even requests above the exp|
-5|Supplier#000000005|Gcdm2rJRzl5qlTVzc|11|21-151-690-3663|-283.84|. slyly regular pinto bea|
-6|Supplier#000000006|tQxuVm7s7CnK|14|24-696-997-4969|1365.79|final accounts. regular dolphins use against the furiously ironic decoys. |
-7|Supplier#000000007|s,4TicNGB4uO6PaSqNBUq|23|33-990-965-2201|6820.35|s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit|
-8|Supplier#000000008|9Sq4bBH2FQEmaFOocY45sRTxo6yuoG|17|27-498-742-3860|7627.85|al pinto beans. asymptotes haggl|
-9|Supplier#000000009|1KhUgZegwM3ua7dsYmekYBsK|10|20-403-398-8662|5302.37|s. unusual, even requests along the furiously regular pac|
-10|Supplier#000000010|Saygah3gYWMp72i PY|24|34-852-489-8585|3891.91|ing waters. regular requests ar|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml
deleted file mode 100644
index 47dfac5..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-    <name>fs.default.name</name>
-    <value>hdfs://127.0.0.1:31888</value>
-</property>
-<property>
-    <name>hadoop.tmp.dir</name>
-    <value>/tmp/hadoop</value>
-</property>
-
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml.bak b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml.bak
deleted file mode 100644
index 2e248d4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml.bak
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-    <name>fs.default.name</name>
-    <value>hdfs://localhost:31888</value>
-</property>
-<property>
-    <name>hadoop.tmp.dir</name>
-    <value>/tmp/hadoop</value>
-</property>
-
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml
deleted file mode 100644
index 842e7ab..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-   <name>dfs.replication</name>
-   <value>2</value>
-</property>
-
-<property>
-	<name>dfs.block.size</name>
-	<value>65536</value>
-</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml.bak b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml.bak
deleted file mode 100644
index e3c082b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml.bak
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-   <name>dfs.replication</name>
-   <value>2</value>
-</property>
-
-<property>
-	<name>dfs.block.size</name>
-	<value>32768</value>
-</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml
deleted file mode 100644
index 1b9a4d6..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-  <property>
-    <name>mapred.job.tracker</name>
-    <value>localhost:29007</value>
-  </property>
-  <property>
-     <name>mapred.tasktracker.map.tasks.maximum</name>
-     <value>20</value>
-  </property>
-   <property>
-      <name>mapred.tasktracker.reduce.tasks.maximum</name>
-      <value>20</value>
-   </property>
-   <property>
-      <name>mapred.min.split.size</name>
-      <value>65536</value>
-   </property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml.bak b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml.bak
deleted file mode 100644
index 7a51b86..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml.bak
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-  <property>
-    <name>mapred.job.tracker</name>
-    <value>localhost:29007</value>
-  </property>
-  <property>
-     <name>mapred.tasktracker.map.tasks.maximum</name>
-     <value>20</value>
-  </property>
-   <property>
-      <name>mapred.tasktracker.reduce.tasks.maximum</name>
-      <value>20</value>
-   </property>
-   <property>
-      <name>mapred.min.split.size</name>
-      <value>32768</value>
-   </property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/hive-default.xml b/hivesterix/src/test/resources/runtimefunctionts/hive/conf/hive-default.xml
deleted file mode 100644
index eef4071..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/hive-default.xml
+++ /dev/null
@@ -1,853 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<configuration>
-
-	<!-- Hive Configuration can either be stored in this file or in the hadoop 
-		configuration files -->
-	<!-- that are implied by Hadoop setup variables. -->
-	<!-- Aside from Hadoop setup variables - this file is provided as a convenience 
-		so that Hive -->
-	<!-- users do not have to edit hadoop configuration files (that may be managed 
-		as a centralized -->
-	<!-- resource). -->
-
-	<!-- Hive Execution Parameters -->
-	<property>
-		<name>mapred.reduce.tasks</name>
-		<value>-1</value>
-		<description>The default number of reduce tasks per job. Typically set
-			to a prime close to the number of available hosts. Ignored when
-			mapred.job.tracker is "local". Hadoop set this to 1 by default,
-			whereas hive uses -1 as its default value.
-			By setting this property to
-			-1, Hive will automatically figure out what
-			should be the number of
-			reducers.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hyracks.connectorpolicy</name>
-		<value>SEND_SIDE_MAT_PIPELINING</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.host</name>
-		<value>127.0.0.1</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.port</name>
-		<value>13099</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.app</name>
-		<value>hivesterix</value>
-	</property>
-
-
-	<property>
-		<name>hive.hyracks.parrallelism</name>
-		<value>2</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external</name>
-		<value>false</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.sort.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.framesize</name>
-		<value>768</value>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.bytes.per.reducer</name>
-		<value>1000000000</value>
-		<description>size per reducer.The default is 1G, i.e if the input size
-			is 10G, it will use 10 reducers.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.max</name>
-		<value>999</value>
-		<description>max number of reducers will be used. If the one
-			specified
-			in the configuration parameter mapred.reduce.tasks is
-			negative, hive
-			will use this one as the max number of reducers when
-			automatically
-			determine number of reducers.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.scratchdir</name>
-		<value>/tmp/hive-${user.name}</value>
-		<description>Scratch space for Hive jobs</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode</name>
-		<value>false</value>
-		<description>whether hive is running in test mode. If yes, it turns on
-			sampling and prefixes the output tablename
-		</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.prefix</name>
-		<value>test_</value>
-		<description>if hive is running in test mode, prefixes the output
-			table by this string
-		</description>
-	</property>
-
-	<!-- If the input table is not bucketed, the denominator of the tablesample 
-		is determinied by the parameter below -->
-	<!-- For example, the following query: -->
-	<!-- INSERT OVERWRITE TABLE dest -->
-	<!-- SELECT col1 from src -->
-	<!-- would be converted to -->
-	<!-- INSERT OVERWRITE TABLE test_dest -->
-	<!-- SELECT col1 from src TABLESAMPLE (BUCKET 1 out of 32 on rand(1)) -->
-	<property>
-		<name>hive.test.mode.samplefreq</name>
-		<value>32</value>
-		<description>if hive is running in test mode and table is not
-			bucketed, sampling frequency
-		</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.nosamplelist</name>
-		<value></value>
-		<description>if hive is running in test mode, dont sample the above
-			comma seperated list of tables
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.local</name>
-		<value>true</value>
-		<description>controls whether to connect to remove metastore server or
-			open a new metastore server in Hive Client JVM
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionURL</name>
-		<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
-		<description>JDBC connect string for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionDriverName</name>
-		<value>org.apache.derby.jdbc.EmbeddedDriver</value>
-		<description>Driver class name for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.PersistenceManagerFactoryClass</name>
-		<value>org.datanucleus.jdo.JDOPersistenceManagerFactory</value>
-		<description>class implementing the jdo persistence</description>
-	</property>
-
-	<property>
-		<name>datanucleus.connectionPoolingType</name>
-		<value>DBCP</value>
-		<description>Uses a DBCP connection pool for JDBC metastore
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.DetachAllOnCommit</name>
-		<value>true</value>
-		<description>detaches all objects from session so that they can be
-			used after transaction is committed
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.NonTransactionalRead</name>
-		<value>true</value>
-		<description>reads outside of transactions</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionUserName</name>
-		<value>APP</value>
-		<description>username to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionPassword</name>
-		<value>mine</value>
-		<description>password to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateTables</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateColumns</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateConstraints</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.storeManagerType</name>
-		<value>rdbms</value>
-		<description>metadata store type</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoCreateSchema</name>
-		<value>true</value>
-		<description>creates necessary schema on a startup if one doesn't
-			exist. set this to false, after creating it once
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoStartMechanismMode</name>
-		<value>checked</value>
-		<description>throw exception if metadata tables are incorrect
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.transactionIsolation</name>
-		<value>read-committed</value>
-		<description>Default transaction isolation level for identity
-			generation.
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2</name>
-		<value>false</value>
-		<description>Use a level 2 cache. Turn this off if metadata is changed
-			independently of hive metastore server
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2.type</name>
-		<value>SOFT</value>
-		<description>SOFT=soft reference based cache, WEAK=weak reference
-			based cache.
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.identifierFactory</name>
-		<value>datanucleus</value>
-		<description>Name of the identifier factory to use when generating
-			table/column names etc. 'datanucleus' is used for backward
-			compatibility
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.warehouse.dir</name>
-		<value>/tmp/hivesterix</value>
-		<description>location of default database for the warehouse
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.connect.retries</name>
-		<value>5</value>
-		<description>Number of retries while opening a connection to metastore
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.rawstore.impl</name>
-		<value>org.apache.hadoop.hive.metastore.ObjectStore</value>
-		<description>Name of the class that implements
-			org.apache.hadoop.hive.metastore.rawstore interface. This class is
-			used to store and retrieval of raw metadata objects such as table,
-			database
-		</description>
-	</property>
-
-	<property>
-		<name>hive.default.fileformat</name>
-		<value>TextFile</value>
-		<description>Default file format for CREATE TABLE statement. Options
-			are TextFile and SequenceFile. Users can explicitly say CREATE TABLE
-			... STORED AS &lt;TEXTFILE|SEQUENCEFILE&gt; to override</description>
-	</property>
-
-	<property>
-		<name>hive.fileformat.check</name>
-		<value>true</value>
-		<description>Whether to check file format or not when loading data
-			files
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr</name>
-		<value>true</value>
-		<description>Whether to use map-side aggregation in Hive Group By
-			queries
-		</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.skewindata</name>
-		<value>false</value>
-		<description>Whether there is skew in data to optimize group by
-			queries
-		</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.mapaggr.checkinterval</name>
-		<value>100000</value>
-		<description>Number of rows after which size of the grouping
-			keys/aggregation classes is performed
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.local.mem</name>
-		<value>0</value>
-		<description>For local mode, memory of the mappers/reducers
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.percentmemory</name>
-		<value>0.5</value>
-		<description>Portion of total memory to be used by map-side grup
-			aggregation hash table
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.min.reduction</name>
-		<value>0.5</value>
-		<description>Hash aggregation will be turned off if the ratio between
-			hash
-			table size and input rows is bigger than this number. Set to 1 to
-			make
-			sure
-			hash aggregation is never turned off.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.cp</name>
-		<value>true</value>
-		<description>Whether to enable column pruner</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.ppd</name>
-		<value>true</value>
-		<description>Whether to enable predicate pushdown</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.pruner</name>
-		<value>true</value>
-		<description>Whether to enable the new partition pruner which depends
-			on predicate pushdown. If this is disabled,
-			the old partition pruner
-			which is based on AST will be enabled.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.groupby</name>
-		<value>true</value>
-		<description>Whether to enable the bucketed group by from bucketed
-			partitions/tables.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.join.emit.interval</name>
-		<value>1000</value>
-		<description>How many rows in the right-most join operand Hive should
-			buffer before emitting the join result.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.join.cache.size</name>
-		<value>25000</value>
-		<description>How many rows in the joining tables (except the streaming
-			table) should be cached in memory.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.bucket.cache.size</name>
-		<value>100</value>
-		<description>How many values in each keys in the map-joined table
-			should be cached in memory.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.maxsize</name>
-		<value>100000</value>
-		<description>Maximum # of rows of the small table that can be handled
-			by map-side join. If the size is reached and hive.task.progress is
-			set, a fatal error counter is set and the job will be killed.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.cache.numrows</name>
-		<value>25000</value>
-		<description>How many rows should be cached by jdbm for map join.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.skewjoin</name>
-		<value>false</value>
-		<description>Whether to enable skew join optimization. </description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.key</name>
-		<value>100000</value>
-		<description>Determine if we get a skew key in join. If we see more
-			than the specified number of rows with the same key in join operator,
-			we think the key as a skew join key.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.map.tasks</name>
-		<value>10000</value>
-		<description> Determine the number of map task used in the follow up
-			map join job
-			for a skew join. It should be used together with
-			hive.skewjoin.mapjoin.min.split
-			to perform a fine grained control.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.min.split</name>
-		<value>33554432</value>
-		<description> Determine the number of map task at most used in the
-			follow up map join job
-			for a skew join by specifying the minimum split
-			size. It should be used
-			together with
-			hive.skewjoin.mapjoin.map.tasks
-			to perform a fine grained control.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.mode</name>
-		<value>nonstrict</value>
-		<description>The mode in which the hive operations are being
-			performed. In strict mode, some risky queries are not allowed to run
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.maxerrsize</name>
-		<value>100000</value>
-		<description>Maximum number of bytes a script is allowed to emit to
-			standard error (per map-reduce task). This prevents runaway scripts
-			from filling logs partitions to capacity
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.allow.partial.consumption</name>
-		<value>false</value>
-		<description> When enabled, this option allows a user script to exit
-			successfully without consuming all the data from the standard input.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.operator.id.env.var</name>
-		<value>HIVE_SCRIPT_OPERATOR_ID</value>
-		<description> Name of the environment variable that holds the unique
-			script operator ID in the user's transform function (the custom
-			mapper/reducer that the user has specified in the query)
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.output</name>
-		<value>false</value>
-		<description> This controls whether the final outputs of a query (to a
-			local/hdfs file or a hive table) is compressed. The compression codec
-			and other options are determined from hadoop config variables
-			mapred.output.compress*
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.intermediate</name>
-		<value>false</value>
-		<description> This controls whether intermediate files produced by
-			hive between multiple map-reduce jobs are compressed. The compression
-			codec and other options are determined from hadoop config variables
-			mapred.output.compress*
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel</name>
-		<value>false</value>
-		<description>Whether to execute jobs in parallel</description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel.thread.number</name>
-		<value>8</value>
-		<description>How many jobs at most can be executed in parallel
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.war.file</name>
-		<value>lib\hive-hwi-0.7.0.war</value>
-		<description>This sets the path to the HWI war file, relative to
-			${HIVE_HOME}.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.host</name>
-		<value>0.0.0.0</value>
-		<description>This is the host address the Hive Web Interface will
-			listen on
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.port</name>
-		<value>9999</value>
-		<description>This is the port the Hive Web Interface will listen on
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.pre.hooks</name>
-		<value></value>
-		<description>Pre Execute Hook for Tests</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapfiles</name>
-		<value>true</value>
-		<description>Merge small files at the end of a map-only job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapredfiles</name>
-		<value>false</value>
-		<description>Merge small files at the end of a map-reduce job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.heartbeat.interval</name>
-		<value>1000</value>
-		<description>Send a heartbeat after this interval - used by mapjoin
-			and filter operators
-		</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.per.task</name>
-		<value>256000000</value>
-		<description>Size of merged files at the end of the job</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.smallfiles.avgsize</name>
-		<value>16000000</value>
-		<description>When the average output file size of a job is less than
-			this number, Hive will start an additional map-reduce job to merge
-			the output files into bigger files. This is only done for map-only
-			jobs if hive.merge.mapfiles is true, and for map-reduce jobs if
-			hive.merge.mapredfiles is true.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive Tranform/Map/Reduce Clause should
-			automatically send progress information to TaskTracker to avoid the
-			task getting killed because of inactivity. Hive sends progress
-			information when the script is outputting to stderr. This option
-			removes the need of periodically producing stderr messages, but users
-			should be cautious because this may prevent infinite loops in the
-			scripts to be killed by TaskTracker.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.serde</name>
-		<value>org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe</value>
-		<description>The default serde for trasmitting input data to and
-			reading output data from the user scripts.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.recordreader</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordReader</value>
-		<description>The default record reader for reading data from the user
-			scripts.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.recordwriter</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordWriter</value>
-		<description>The default record writer for writing data to the user
-			scripts.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.input.format</name>
-		<value>org.apache.hadoop.hive.ql.io.HiveInputFormat</value>
-		<description>The default input format, if it is not specified, the
-			system assigns it. It is set to HiveInputFormat for hadoop versions
-			17, 18 and 19, whereas it is set to CombinedHiveInputFormat for
-			hadoop 20. The user can always overwrite it - if there is a bug in
-			CombinedHiveInputFormat, it can always be manually set to
-			HiveInputFormat.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.udtf.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive should automatically send progress
-			information to TaskTracker when using UDTF's to prevent the task
-			getting killed because of inactivity. Users should be cautious
-			because this may prevent TaskTracker from killing tasks with infinte
-			loops.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.reduce.tasks.speculative.execution</name>
-		<value>true</value>
-		<description>Whether speculative execution for reducers should be
-			turned on.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.counters.pull.interval</name>
-		<value>1000</value>
-		<description>The interval with which to poll the JobTracker for the
-			counters the running job. The smaller it is the more load there will
-			be on the jobtracker, the higher it is the less granular the caught
-			will be.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.enforce.bucketing</name>
-		<value>false</value>
-		<description>Whether bucketing is enforced. If true, while inserting
-			into the table, bucketing is enforced.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.enforce.sorting</name>
-		<value>false</value>
-		<description>Whether sorting is enforced. If true, while inserting
-			into the table, sorting is enforced.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.connection.url.hook</name>
-		<value></value>
-		<description>Name of the hook to use for retriving the JDO connection
-			URL. If empty, the value in javax.jdo.option.ConnectionURL is used
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.attempts</name>
-		<value>1</value>
-		<description>The number of times to retry a metastore call if there
-			were a connection error
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.interval</name>
-		<value>1000</value>
-		<description>The number of miliseconds between metastore retry
-			attempts
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.min.threads</name>
-		<value>200</value>
-		<description>Minimum number of worker threads in the Thrift server's
-			pool.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.max.threads</name>
-		<value>100000</value>
-		<description>Maximum number of worker threads in the Thrift server's
-			pool.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.tcp.keepalive</name>
-		<value>true</value>
-		<description>Whether to enable TCP keepalive for the metastore server.
-			Keepalive will prevent accumulation of half-open connections.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.reducededuplication</name>
-		<value>true</value>
-		<description>Remove extra map-reduce jobs if the data is already
-			clustered by the same key which needs to be used again. This should
-			always be set to true. Since it is a new feature, it has been made
-			configurable.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition</name>
-		<value>false</value>
-		<description>Whether or not to allow dynamic partitions in DML/DDL.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition.mode</name>
-		<value>strict</value>
-		<description>In strict mode, the user must specify at least one static
-			partition in case the user accidentally overwrites all partitions.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions</name>
-		<value>1000</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in total.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions.pernode</name>
-		<value>100</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in each mapper/reducer node.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.default.partition.name</name>
-		<value>__HIVE_DEFAULT_PARTITION__</value>
-		<description>The default partition name in case the dynamic partition
-			column value is null/empty string or anyother values that cannot be
-			escaped. This value must not contain any special character used in
-			HDFS URI (e.g., ':', '%', '/' etc). The user has to be aware that the
-			dynamic partition value should not contain this value to avoid
-			confusions.
-		</description>
-	</property>
-
-	<property>
-		<name>fs.har.impl</name>
-		<value>org.apache.hadoop.hive.shims.HiveHarFileSystem</value>
-		<description>The implementation for accessing Hadoop Archives. Note
-			that this won't be applicable to Hadoop vers less than 0.20
-		</description>
-	</property>
-
-	<property>
-		<name>hive.archive.enabled</name>
-		<value>false</value>
-		<description>Whether archiving operations are permitted</description>
-	</property>
-
-	<property>
-		<name>hive.archive.har.parentdir.settable</name>
-		<value>false</value>
-		<description>In new Hadoop versions, the parent directory must be set
-			while
-			creating a HAR. Because this functionality is hard to detect
-			with just
-			version
-			numbers, this conf var needs to be set manually.
-		</description>
-	</property>
-
-	<!-- HBase Storage Handler Parameters -->
-
-	<property>
-		<name>hive.hbase.wal.enabled</name>
-		<value>true</value>
-		<description>Whether writes to HBase should be forced to the
-			write-ahead log. Disabling this improves HBase write performance at
-			the risk of lost writes in case of a crash.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.drop.ignorenonexistent</name>
-		<value>true</value>
-		<description>drop table always works.</description>
-	</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/topology.xml b/hivesterix/src/test/resources/runtimefunctionts/hive/conf/topology.xml
deleted file mode 100644
index 4aac091..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/topology.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<cluster-topology>
-    <network-switch name="switch1">
-        <network-switch name="switch2">
-            <terminal name="nc0"/>
-            <terminal name="nc3"/>
-        </network-switch>
-        <network-switch name="switch3">
-            <terminal name="nc1"/>
-            <terminal name="nc4"/>
-        </network-switch>
-    </network-switch>
-</cluster-topology>
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/ignore.txt b/hivesterix/src/test/resources/runtimefunctionts/ignore.txt
deleted file mode 100644
index e70ea78..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/ignore.txt
+++ /dev/null
@@ -1 +0,0 @@
-q16
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/logging.properties b/hivesterix/src/test/resources/runtimefunctionts/logging.properties
deleted file mode 100644
index 1cc34e1..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/logging.properties
+++ /dev/null
@@ -1,65 +0,0 @@
-############################################################
-#  	Default Logging Configuration File
-#
-# You can use a different file by specifying a filename
-# with the java.util.logging.config.file system property.  
-# For example java -Djava.util.logging.config.file=myfile
-############################################################
-
-############################################################
-#  	Global properties
-############################################################
-
-# "handlers" specifies a comma separated list of log Handler 
-# classes.  These handlers will be installed during VM startup.
-# Note that these classes must be on the system classpath.
-# By default we only configure a ConsoleHandler, which will only
-# show messages at the INFO and above levels.
-
-handlers= java.util.logging.ConsoleHandler
-
-# To also add the FileHandler, use the following line instead.
-
-# handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
-
-# Default global logging level.
-# This specifies which kinds of events are logged across
-# all loggers.  For any given facility this global level
-# can be overriden by a facility specific level
-# Note that the ConsoleHandler also has a separate level
-# setting to limit messages printed to the console.
-
-.level= WARNING
-# .level= INFO
-# .level= FINE
-# .level = FINEST
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-# default file output is in user's home directory.
-
-# java.util.logging.FileHandler.pattern = %h/java%u.log
-# java.util.logging.FileHandler.limit = 50000
-# java.util.logging.FileHandler.count = 1
-# java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
-
-# Limit the message that are printed on the console to FINE and above.
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-
-
-############################################################
-# Facility specific properties.
-# Provides extra control for each logger.
-############################################################
-
-# For example, set the com.xyz.foo logger to only log SEVERE
-# messages:
-
-edu.uci.ics.asterix.level = WARNING
-edu.uci.ics.algebricks.level = WARNING
-edu.uci.ics.hyracks.level = WARNING
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q10_returned_item.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q10_returned_item.hive
deleted file mode 100644
index 3f1214a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q10_returned_item.hive
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q10_returned_item;
-
--- create the tables and load the data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q10_returned_item (c_custkey int, c_name string, revenue double, c_acctbal string, n_name string, c_address string, c_phone string, c_comment string);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q10_returned_item
-select 
-  c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) as revenue, 
-  c_acctbal, n_name, c_address, c_phone, c_comment
-from
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey and o.o_orderdate >= '1993-10-01' and o.o_orderdate < '1994-01-01'
-  join nation n 
-  on 
-    c.c_nationkey = n.n_nationkey
-  join lineitem l 
-  on 
-    l.l_orderkey = o.o_orderkey and l.l_returnflag = 'R'
-group by c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment 
-order by revenue desc 
-limit 20;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q11_important_stock.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q11_important_stock.hive
deleted file mode 100644
index de0cfc3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q11_important_stock.hive
+++ /dev/null
@@ -1,47 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q11_important_stock;
-DROP TABLE IF EXISTS q11_part_tmp;
-DROP TABLE IF EXISTS q11_sum_tmp;
-
--- create tables and load data
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-
--- create the target table
-create table q11_important_stock(ps_partkey INT, value DOUBLE);
-create table q11_part_tmp(ps_partkey int, part_value double);
-create table q11_sum_tmp(total_value double);
-
--- the query
-insert overwrite table q11_part_tmp
-select 
-  ps_partkey, sum(ps_supplycost * ps_availqty) as part_value 
-from
-  nation n join supplier s 
-  on 
-    s.s_nationkey = n.n_nationkey
-  join partsupp ps 
-  on 
-    ps.ps_suppkey = s.s_suppkey
-group by ps_partkey;
-
-insert overwrite table q11_sum_tmp
-select 
-  sum(part_value) as total_value
-from 
-  q11_part_tmp;
-
-insert overwrite table q11_important_stock
-select 
-  ps_partkey, part_value as value
-from
-  (
-    select ps_partkey, part_value, total_value
-    from q11_part_tmp join q11_sum_tmp
-  ) a
-where part_value > total_value * 0.00001
-order by value desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q12_shipping.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q12_shipping.hive
deleted file mode 100644
index 062f7b9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q12_shipping.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q12_shipping;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q12_shipping(l_shipmode string, high_line_count double, low_line_count double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q12_shipping
-select 
-  l_shipmode,
-  sum(case
-    when o_orderpriority ='1-URGENT'
-         or o_orderpriority ='2-HIGH'
-    then 1
-    else 0
-end
-  ) as high_line_count,
-  sum(case
-    when o_orderpriority <> '1-URGENT'
-         and o_orderpriority <> '2-HIGH'
-    then 1
-    else 0
-end
-  ) as low_line_count
-from
-  orders o join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey and l.l_commitdate < l.l_receiptdate
-and l.l_shipdate < l.l_commitdate and l.l_receiptdate >= '1994-01-01' 
-and l.l_receiptdate < '1995-01-01'
-where 
-  l.l_shipmode = 'MAIL' or l.l_shipmode = 'SHIP'
-group by l_shipmode
-order by l_shipmode;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q13_customer_distribution.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q13_customer_distribution.hive
deleted file mode 100644
index a799008..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q13_customer_distribution.hive
+++ /dev/null
@@ -1,27 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q13_customer_distribution;
-
--- create the tables and load the data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q13_customer_distribution (c_count int, custdist int);
-
--- the query
-insert overwrite table q13_customer_distribution
-select 
-  c_count, count(1) as custdist
-from 
-  (select 
-     c_custkey, count(o_orderkey) as c_count
-   from 
-     customer c left outer join orders o 
-     on 
-       c.c_custkey = o.o_custkey and not o.o_comment like '%special%requests%'
-   group by c_custkey
-   ) c_orders
-group by c_count
-order by custdist desc, c_count desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q14_promotion_effect.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q14_promotion_effect.hive
deleted file mode 100644
index 988f400..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q14_promotion_effect.hive
+++ /dev/null
@@ -1,28 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q14_promotion_effect;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q14_promotion_effect(promo_revenue double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q14_promotion_effect
-select 
-  100.00 * sum(case
-               when p_type like 'PROMO%'
-               then l_extendedprice*(1-l_discount)
-               else 0.0
-               end
-  ) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue
-from 
-  part p join lineitem l 
-  on 
-    l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01';
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q15_top_supplier.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q15_top_supplier.hive
deleted file mode 100644
index 04064ed..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q15_top_supplier.hive
+++ /dev/null
@@ -1,45 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS revenue;
-DROP TABLE IF EXISTS max_revenue;
-DROP TABLE IF EXISTS q15_top_supplier;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create result tables
-create table revenue(supplier_no int, total_revenue double); 
-create table max_revenue(max_revenue double); 
-create table q15_top_supplier(s_suppkey int, s_name string, s_address string, s_phone string, total_revenue double);
-
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table revenue
-select 
-  l_suppkey as supplier_no, sum(l_extendedprice * (1 - l_discount)) as total_revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1996-01-01' and l_shipdate < '1996-04-01'
-group by l_suppkey;
-
-insert overwrite table max_revenue
-select 
-  max(total_revenue)
-from 
-  revenue;
-
-insert overwrite table q15_top_supplier
-select 
-  s_suppkey, s_name, s_address, s_phone, total_revenue
-from supplier s join revenue r 
-  on 
-    s.s_suppkey = r.supplier_no
-  join max_revenue m 
-  on 
-    r.total_revenue = m.max_revenue
-order by s_suppkey;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q16_parts_supplier_relationship.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q16_parts_supplier_relationship.hive
deleted file mode 100644
index 971ef99..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q16_parts_supplier_relationship.hive
+++ /dev/null
@@ -1,53 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS q16_parts_supplier_relationship;
-DROP TABLE IF EXISTS q16_tmp;
-DROP TABLE IF EXISTS supplier_tmp;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create the result table
-create table q16_parts_supplier_relationship(p_brand string, p_type string, p_size int, supplier_cnt int);
-create table q16_tmp(p_brand string, p_type string, p_size int, ps_suppkey int);
-create table supplier_tmp(s_suppkey int);
-
--- the query
-insert overwrite table supplier_tmp
-select 
-  s_suppkey
-from 
-  supplier
-where 
-  not s_comment like '%Customer%Complaints%';
-
-insert overwrite table q16_tmp
-select 
-  p_brand, p_type, p_size, ps_suppkey
-from 
-  partsupp ps join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_brand <> 'Brand#45' 
-    and not p.p_type like 'MEDIUM POLISHED%'
-  join supplier_tmp s 
-  on 
-    ps.ps_suppkey = s.s_suppkey;
-
-insert overwrite table q16_parts_supplier_relationship
-select 
-  p_brand, p_type, p_size, count(distinct ps_suppkey) as supplier_cnt
-from 
-  (select 
-     * 
-   from
-     q16_tmp 
-   where p_size = 49 or p_size = 14 or p_size = 23 or
-         p_size = 45 or p_size = 19 or p_size = 3 or
-         p_size = 36 or p_size = 9
-) q16_all
-group by p_brand, p_type, p_size
-order by supplier_cnt desc, p_brand, p_type, p_size;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q17_small_quantity_order_revenue.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q17_small_quantity_order_revenue.hive
deleted file mode 100644
index db7746b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q17_small_quantity_order_revenue.hive
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q17_small_quantity_order_revenue;
-DROP TABLE IF EXISTS lineitem_tmp;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q17_small_quantity_order_revenue (avg_yearly double);
-create table lineitem_tmp (t_partkey int, t_avg_quantity double);
-
--- the query
-insert overwrite table lineitem_tmp
-select 
-  l_partkey as t_partkey, 0.2 * avg(l_quantity) as t_avg_quantity
-from 
-  lineitem
-group by l_partkey;
-
-insert overwrite table q17_small_quantity_order_revenue
-select
-  sum(l_extendedprice) / 7.0 as avg_yearly
-from
-  (select l_quantity, l_extendedprice, t_avg_quantity from
-   lineitem_tmp t join
-     (select
-        l_quantity, l_partkey, l_extendedprice
-      from
-        part p join lineitem l
-        on
-          p.p_partkey = l.l_partkey
-          and p.p_container = 'MED BOX'
-      ) l1 on l1.l_partkey = t.t_partkey
-   ) a
-where l_quantity < t_avg_quantity;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q18_large_volume_customer.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q18_large_volume_customer.hive
deleted file mode 100644
index ac2902c..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q18_large_volume_customer.hive
+++ /dev/null
@@ -1,43 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q18_tmp;
-DROP TABLE IF EXISTS q18_large_volume_customer;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the result tables
-create table q18_tmp(l_orderkey int, t_sum_quantity double);
-create table q18_large_volume_customer(c_name string, c_custkey int, o_orderkey int, o_orderdate string, o_totalprice double, sum_quantity double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1164000000;
-
--- the query
-insert overwrite table q18_tmp
-select 
-  l_orderkey, sum(l_quantity) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q18_large_volume_customer
-select 
-  c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice,sum(l_quantity)
-from 
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey
-  join q18_tmp t 
-  on 
-    o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 30
-  join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey
-group by c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice
-order by o_totalprice desc,o_orderdate
-limit 100;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q19_discounted_revenue.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q19_discounted_revenue.hive
deleted file mode 100644
index 2002e1e..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q19_discounted_revenue.hive
+++ /dev/null
@@ -1,49 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q19_discounted_revenue;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q19_discounted_revenue(revenue double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q19_discounted_revenue
-select
-  sum(l_extendedprice * (1 - l_discount) ) as revenue
-from
-  part p join lineitem l 
-  on 
-    p.p_partkey = l.l_partkey    
-where
-  (
-    p_brand = 'Brand#12'
-	and p_container REGEXP 'SM CASE||SM BOX||SM PACK||SM PKG'
-	and l_quantity >= 1 and l_quantity <= 11
-	and p_size >= 1 and p_size <= 5
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  ) 
-  or 
-  (
-    p_brand = 'Brand#23'
-	and p_container REGEXP 'MED BAG||MED BOX||MED PKG||MED PACK'
-	and l_quantity >= 10 and l_quantity <= 20
-	and p_size >= 1 and p_size <= 10
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  )
-  or
-  (
-	p_brand = 'Brand#34'
-	and p_container REGEXP 'LG CASE||LG BOX||LG PACK||LG PKG'
-	and l_quantity >= 20 and l_quantity <= 30
-	and p_size >= 1 and p_size <= 15
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  );
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q1_pricing_summary_report.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q1_pricing_summary_report.hive
deleted file mode 100644
index a002068..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q1_pricing_summary_report.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q1_pricing_summary_report;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q1_pricing_summary_report ( L_RETURNFLAG STRING, L_LINESTATUS STRING, SUM_QTY DOUBLE, SUM_BASE_PRICE DOUBLE, SUM_DISC_PRICE DOUBLE, SUM_CHARGE DOUBLE, AVE_QTY DOUBLE, AVE_PRICE DOUBLE, AVE_DISC DOUBLE, COUNT_ORDER INT);
-
-set mapred.min.split.size=536870912;
-
--- the query
-INSERT OVERWRITE TABLE q1_pricing_summary_report 
-SELECT 
-  L_RETURNFLAG, L_LINESTATUS, SUM(L_QUANTITY), SUM(L_EXTENDEDPRICE), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)), AVG(L_QUANTITY), AVG(L_EXTENDEDPRICE), AVG(L_DISCOUNT), COUNT(1) 
-FROM 
-  lineitem 
-WHERE 
-  L_SHIPDATE<='1998-09-02' 
-GROUP BY L_RETURNFLAG, L_LINESTATUS 
-ORDER BY L_RETURNFLAG, L_LINESTATUS;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q20_potential_part_promotion.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q20_potential_part_promotion.hive
deleted file mode 100644
index 2bb90ea..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q20_potential_part_promotion.hive
+++ /dev/null
@@ -1,73 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q20_tmp1;
-DROP TABLE IF EXISTS q20_tmp2;
-DROP TABLE IF EXISTS q20_tmp3;
-DROP TABLE IF EXISTS q20_tmp4;
-DROP TABLE IF EXISTS q20_potential_part_promotion;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the target table
-create table q20_tmp1(p_partkey int);
-create table q20_tmp2(l_partkey int, l_suppkey int, sum_quantity double);
-create table q20_tmp3(ps_suppkey int, ps_availqty int, sum_quantity double);
-create table q20_tmp4(ps_suppkey int);
-create table q20_potential_part_promotion(s_name string, s_address string);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q20_tmp1
-select distinct p_partkey
-from
-  part;
-
-insert overwrite table q20_tmp2
-select 
-  l_partkey, l_suppkey, 0.5 * sum(l_quantity)
-from
-  lineitem
-group by l_partkey, l_suppkey;
-
-insert overwrite table q20_tmp3
-select 
-  ps_suppkey, ps_availqty, sum_quantity
-from  
-  partsupp ps join q20_tmp1 t1 
-  on 
-    ps.ps_partkey = t1.p_partkey
-  join q20_tmp2 t2 
-  on 
-    ps.ps_partkey = t2.l_partkey and ps.ps_suppkey = t2.l_suppkey;
-
-insert overwrite table q20_tmp4
-select 
-  ps_suppkey
-from 
-  q20_tmp3
-where 
-  ps_availqty > sum_quantity
-group by ps_suppkey;
-
-insert overwrite table q20_potential_part_promotion
-select 
-  s_name, s_address
-from 
-   nation n join supplier s
-  on
-    s.s_nationkey = n.n_nationkey
-  join q20_tmp4 t4
-  on 
-    s.s_suppkey = t4.ps_suppkey
-order by s_name;
-
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q21_suppliers_who_kept_orders_waiting.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q21_suppliers_who_kept_orders_waiting.hive
deleted file mode 100644
index 9d01741..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q21_suppliers_who_kept_orders_waiting.hive
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q21_tmp1;
-DROP TABLE IF EXISTS q21_tmp2;
-DROP TABLE IF EXISTS q21_suppliers_who_kept_orders_waiting;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create target tables
-create table q21_tmp1(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_tmp2(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_suppliers_who_kept_orders_waiting(s_name string, numwait int);
-
--- the query
-insert overwrite table q21_tmp1
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q21_tmp2
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-where
-  l_receiptdate > l_commitdate
-group by l_orderkey;
-
-insert overwrite table q21_suppliers_who_kept_orders_waiting
-select
-  s_name, count(1) as numwait
-from
-  (select s_name from
-(select s_name, t2.l_orderkey, l_suppkey, count_suppkey, max_suppkey 
- from q21_tmp2 t2 right outer join
-      (select s_name, l_orderkey, l_suppkey from
-         (select s_name, t1.l_orderkey, l_suppkey, count_suppkey, max_suppkey
-          from
-            q21_tmp1 t1 join
-            (select s_name, l_orderkey, l_suppkey
-             from 
-               orders o join
-               (select s_name, l_orderkey, l_suppkey
-                from
-                  nation n join supplier s
-                  on
-                    s.s_nationkey = n.n_nationkey
-                  join lineitem l
-                  on
-                    s.s_suppkey = l.l_suppkey
-                where
-                  l.l_receiptdate > l.l_commitdate
-                ) l1 on o.o_orderkey = l1.l_orderkey
-             ) l2 on l2.l_orderkey = t1.l_orderkey
-          ) a
-          where
-           (count_suppkey >= 0)
-       ) l3 on l3.l_orderkey = t2.l_orderkey
-    ) b
-  )c
-group by s_name
-order by numwait desc, s_name
-limit 100;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q22_global_sales_opportunity.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q22_global_sales_opportunity.hive
deleted file mode 100644
index 851a8b4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q22_global_sales_opportunity.hive
+++ /dev/null
@@ -1,60 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q22_customer_tmp;
-DROP TABLE IF EXISTS q22_customer_tmp1;
-DROP TABLE IF EXISTS q22_orders_tmp;
-DROP TABLE IF EXISTS q22_global_sales_opportunity;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create target tables
-create table q22_customer_tmp(c_acctbal double, c_custkey int, cntrycode string);
-create table q22_customer_tmp1(avg_acctbal double);
-create table q22_orders_tmp(o_custkey int);
-create table q22_global_sales_opportunity(cntrycode string, numcust int, totacctbal double);
-
--- the query
-insert overwrite table q22_customer_tmp
-select 
-  c_acctbal, c_custkey, substr(c_phone, 1, 2) as cntrycode
-from 
-  customer;
- 
-insert overwrite table q22_customer_tmp1
-select
-  avg(c_acctbal)
-from
-  q22_customer_tmp
-where
-  c_acctbal > 0.00;
-
-insert overwrite table q22_orders_tmp
-select 
-  o_custkey 
-from 
-  orders
-group by 
-  o_custkey;
-
-insert overwrite table q22_global_sales_opportunity
-select
-  cntrycode, count(1) as numcust, sum(c_acctbal) as totacctbal
-from
-(
-  select cntrycode, c_acctbal, avg_acctbal from
-  q22_customer_tmp1 ct1 join
-  (
-    select cntrycode, c_acctbal from
-      q22_orders_tmp ot 
-      right outer join q22_customer_tmp ct 
-      on
-        ct.c_custkey = ot.o_custkey
-  ) ct2
-) a
-where
-  c_acctbal > avg_acctbal
-group by cntrycode
-order by cntrycode;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q2_minimum_cost_supplier.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q2_minimum_cost_supplier.hive
deleted file mode 100644
index 200b99f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q2_minimum_cost_supplier.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp1;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp2;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create result tables
-create table q2_minimum_cost_supplier_tmp1 (s_acctbal double, s_name string, n_name string, p_partkey int, ps_supplycost double, p_mfgr string, s_address string, s_phone string, s_comment string);
-create table q2_minimum_cost_supplier_tmp2 (p_partkey int, ps_min_supplycost double);
-create table q2_minimum_cost_supplier (s_acctbal double, s_name string, n_name string, p_partkey int, p_mfgr string, s_address string, s_phone string, s_comment string);
-
--- the query
-insert overwrite table q2_minimum_cost_supplier_tmp1 
-select 
-  s.s_acctbal, s.s_name, n.n_name, p.p_partkey, ps.ps_supplycost, p.p_mfgr, s.s_address, s.s_phone, s.s_comment 
-from 
-  nation n join region r 
-  on 
-    n.n_regionkey = r.r_regionkey and r.r_name = 'EUROPE' 
-  join supplier s 
-  on 
-s.s_nationkey = n.n_nationkey 
-  join partsupp ps 
-  on  
-s.s_suppkey = ps.ps_suppkey 
-  join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_type like '%BRASS' ;
-
-insert overwrite table q2_minimum_cost_supplier_tmp2 
-select 
-  p_partkey, min(ps_supplycost) 
-from  
-  q2_minimum_cost_supplier_tmp1 
-group by p_partkey;
-
-insert overwrite table q2_minimum_cost_supplier 
-select 
-  t1.s_acctbal, t1.s_name, t1.n_name, t1.p_partkey, t1.p_mfgr, t1.s_address, t1.s_phone, t1.s_comment 
-from 
-  q2_minimum_cost_supplier_tmp1 t1 join q2_minimum_cost_supplier_tmp2 t2 
-on 
-  t1.p_partkey = t2.p_partkey and t1.ps_supplycost=t2.ps_min_supplycost 
-order by s_acctbal desc, n_name, s_name, p_partkey 
-limit 100;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q3_shipping_priority.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q3_shipping_priority.hive
deleted file mode 100644
index 0049eb3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q3_shipping_priority.hive
+++ /dev/null
@@ -1,29 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q3_shipping_priority;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the target table
-create table q3_shipping_priority (l_orderkey int, revenue double, o_orderdate string, o_shippriority int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-Insert overwrite table q3_shipping_priority 
-select 
-  l_orderkey, (l_extendedprice*(1-l_discount)) as revenue, o_orderdate, o_shippriority 
-from 
-  customer c join orders o 
-    on c.c_mktsegment = 'BUILDING' and c.c_custkey = o.o_custkey 
-  join lineitem l 
-    on l.l_orderkey = o.o_orderkey and l.l_linenumber<3
--- group by l_orderkey, o_orderdate, o_shippriority 
-order by revenue desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q4_order_priority.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q4_order_priority.hive
deleted file mode 100644
index aa828e9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q4_order_priority.hive
+++ /dev/null
@@ -1,30 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q4_order_priority_tmp;
-DROP TABLE IF EXISTS q4_order_priority;
-
--- create tables and load data
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q4_order_priority_tmp (O_ORDERKEY INT);
-CREATE TABLE q4_order_priority (O_ORDERPRIORITY STRING, ORDER_COUNT INT);
-
-set mapred.min.split.size=536870912;
--- the query
-INSERT OVERWRITE TABLE q4_order_priority_tmp 
-select 
-  DISTINCT l_orderkey 
-from 
-  lineitem 
-where 
-  l_commitdate < l_receiptdate;
-INSERT OVERWRITE TABLE q4_order_priority 
-select o_orderpriority, count(1) as order_count 
-from 
-  orders o join q4_order_priority_tmp t 
-  on 
-o.o_orderkey = t.o_orderkey and o.o_orderdate >= '1993-07-01' and o.o_orderdate < '1993-10-01' 
-group by o_orderpriority 
-order by o_orderpriority;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q5_local_supplier_volume.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q5_local_supplier_volume.hive
deleted file mode 100644
index 9af2dd2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q5_local_supplier_volume.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q5_local_supplier_volume;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the target table
-create table q5_local_supplier_volume (N_NAME STRING, REVENUE DOUBLE);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q5_local_supplier_volume 
-select 
-  n_name, sum(l_extendedprice * (1 - l_discount)) as revenue 
-from
-  customer c join
-    ( select n_name, l_extendedprice, l_discount, s_nationkey, o_custkey from 
-      ( select n_name, l_extendedprice, l_discount, l_orderkey, s_nationkey from
-        ( select n_name, s_suppkey, s_nationkey from 
-          ( select n_name, n_nationkey 
-            from nation n join region r 
-            on n.n_regionkey = r.r_regionkey
-          ) n1 join supplier s on s.s_nationkey = n1.n_nationkey
-        ) s1 join lineitem l on l.l_suppkey = s1.s_suppkey
-      ) l1 join orders o on l1.l_orderkey = o.o_orderkey and o.o_orderdate >= '1990-01-01' 
-              and o.o_orderdate < '1995-01-01'
-) o1 
-on c.c_nationkey = o1.s_nationkey and c.c_custkey = o1.o_custkey
-group by n_name 
-order by revenue desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q6_forecast_revenue_change.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q6_forecast_revenue_change.hive
deleted file mode 100644
index d8cb9b9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q6_forecast_revenue_change.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q6_forecast_revenue_change;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-create table q6_forecast_revenue_change (revenue double);
-
--- the query
-insert overwrite table q6_forecast_revenue_change 
-select 
-  sum(l_extendedprice*l_discount) as revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1994-01-01'
-  and l_shipdate < '1995-01-01'
-  and l_discount >= 0.05 and l_discount <= 0.07
-  and l_quantity < 24;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q7_volume_shipping.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q7_volume_shipping.hive
deleted file mode 100644
index 2678f80..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q7_volume_shipping.hive
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q7_volume_shipping;
-DROP TABLE IF EXISTS q7_volume_shipping_tmp;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table q7_volume_shipping (supp_nation string, cust_nation string, l_year int, revenue double);
-create table q7_volume_shipping_tmp(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q7_volume_shipping_tmp
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n2.n_name = 'GERMANY'
-    UNION ALL
-select 
-  n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey, 
-  n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n1.n_name = 'GERMANY'
-) a;
-
-insert overwrite table q7_volume_shipping 
-select 
-  supp_nation, cust_nation, l_year, sum(volume) as revenue
-from 
-  (
-    select
-      supp_nation, cust_nation, year(l_shipdate) as l_year, 
-      l_extendedprice * (1 - l_discount) as volume
-    from
-      q7_volume_shipping_tmp t join
-        (select l_shipdate, l_extendedprice, l_discount, c_nationkey, s_nationkey 
-         from supplier s join
-           (select l_shipdate, l_extendedprice, l_discount, l_suppkey, c_nationkey 
-            from customer c join
-              (select l_shipdate, l_extendedprice, l_discount, l_suppkey, o_custkey 
-               from orders o join lineitem l 
-               on 
-                 o.o_orderkey = l.l_orderkey and l.l_shipdate >= '1992-01-01' 
-                 and l.l_shipdate <= '1996-12-31'
-               ) l1 on c.c_custkey = l1.o_custkey
-            ) l2 on s.s_suppkey = l2.l_suppkey
-         ) l3 on l3.c_nationkey = t.c_nationkey and l3.s_nationkey = t.s_nationkey
-   ) shipping
-group by supp_nation, cust_nation, l_year
-order by supp_nation, cust_nation, l_year;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q8_national_market_share.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q8_national_market_share.hive
deleted file mode 100644
index 4d9d36f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q8_national_market_share.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q8_national_market_share;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the result table
-create table q8_national_market_share(o_year string, mkt_share double);
-
--- the query
-insert overwrite table q8_national_market_share 
-select 
-  o_year, sum(case when nation = 'BRAZIL' then volume else 0.0 end) / sum(volume) as mkt_share
-from 
-  (
-select 
-  year(o_orderdate) as o_year, l_extendedprice * (1-l_discount) as volume, 
-  n2.n_name as nation
-    from
-      nation n2 join
-        (select o_orderdate, l_discount, l_extendedprice, s_nationkey 
-         from 
-          (select o_orderdate, l_discount, l_extendedprice, l_suppkey 
-           from part p join
-             (select o_orderdate, l_partkey, l_discount, l_extendedprice, l_suppkey 
-              from 
-                (select o_orderdate, o_orderkey 
-                 from 
-                   (select c.c_custkey 
-                    from 
-                      (select n1.n_nationkey 
-                       from nation n1 join region r
-                       on n1.n_regionkey = r.r_regionkey and r.r_name = 'AMERICA'
-                       ) n11 join customer c on c.c_nationkey = n11.n_nationkey
-                    ) c1 join orders o on c1.c_custkey = o.o_custkey
-                 ) o1 join lineitem l on l.l_orderkey = o1.o_orderkey and o1.o_orderdate >= '1995-01-01' 
-                         and o1.o_orderdate < '1996-12-31'
-              ) l1 on p.p_partkey = l1.l_partkey and p.p_type = 'ECONOMY ANODIZED STEEL'
-           ) p1 join supplier s on s.s_suppkey = p1.l_suppkey
-        ) s1 on s1.s_nationkey = n2.n_nationkey
-  ) all_nation
-group by o_year
-order by o_year;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q9_product_type_profit.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q9_product_type_profit.hive
deleted file mode 100644
index 2e5b4a1..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q9_product_type_profit.hive
+++ /dev/null
@@ -1,50 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q9_product_type_profit;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q9_product_type_profit (nation string, o_year string, sum_profit double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q9_product_type_profit
-select 
-  nation, o_year, sum(amount) as sum_profit
-from 
-  (
-select 
-  n_name as nation, year(o_orderdate) as o_year, 
-  l_extendedprice * (1 - l_discount) -  ps_supplycost * l_quantity as amount
-    from
-      (select l_extendedprice, l_discount, l_quantity, l_orderkey, n_name, ps_supplycost 
-       from part p join
-         (select l_extendedprice, l_discount, l_quantity, l_partkey, l_orderkey, 
-                 n_name, ps_supplycost 
-          from partsupp ps join
-            (select l_suppkey, l_extendedprice, l_discount, l_quantity, l_partkey, 
-                    l_orderkey, n_name 
-             from
-               (select s_suppkey, n_name 
-                from nation n join supplier s on n.n_nationkey = s.s_nationkey
-               ) s1 join lineitem l on s1.s_suppkey = l.l_suppkey
-            ) l1 on ps.ps_suppkey = l1.l_suppkey and ps.ps_partkey = l1.l_partkey
-         ) l2 on p.p_name like '%green%' and p.p_partkey = l2.l_partkey
-     ) l3 join orders o on o.o_orderkey = l3.l_orderkey
-  )profit
-group by nation, o_year
-order by nation, o_year desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_join.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u10_join.hive
deleted file mode 100644
index 1d901c2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_join.hive
+++ /dev/null
@@ -1,15 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS u10_join;
-
--- create the tables and load the data
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
-create table u10_join(O_ORDERSTATUS STRING);
-
-insert overwrite table u10_join
-select O_TOTALPRICE
-from orders join customer
-on orders.O_CUSTKEY=customer.C_CUSTKEY
-order by O_TOTALPRICE;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_nestedloop_join.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u10_nestedloop_join.hive
deleted file mode 100644
index 8fc0a7a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_nestedloop_join.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS u10_nestedloop_join;
-
--- create tables and load data
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table u10_nestedloop_join(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
--- the query
-insert overwrite table u10_nestedloop_join
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 where n1.n_nationkey > n2.n_nationkey
-) a order by a.supp_nation, a.cust_nation;
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u1_gby.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u1_gby.hive
deleted file mode 100644
index 6e53d01..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u1_gby.hive
+++ /dev/null
@@ -1,11 +0,0 @@
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS u1_gby;
-
--- create tables and load data
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create table u1_gby(col1 INT, col2 INT);
-
-insert overwrite table u1_gby select N_REGIONKEY, count(1)
-from nation
-group by N_REGIONKEY
-order by N_REGIONKEY;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u2_gby_external.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u2_gby_external.hive
deleted file mode 100644
index be9de2d..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u2_gby_external.hive
+++ /dev/null
@@ -1,19 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS u2_gby_external;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the result tables
-create table u2_gby_external(l_partkey int, t_sum_quantity double);
-
--- the query
-insert overwrite table u2_gby_external
-select 
-  l_orderkey, avg(L_QUANTITY) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey
-order by l_orderkey desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u3_union.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u3_union.hive
deleted file mode 100644
index 99d62df..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u3_union.hive
+++ /dev/null
@@ -1,11 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS u3_union;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table u3_union (S_SUPPKEY INT, S_ADDRESS STRING, S_NATIONKEY INT,  S_NAME STRING);
-
-insert overwrite table u3_union 
-select * from (select (2*s_suppkey), s_address, s_nationkey,  s_name  FROM supplier where S_SUPPKEY*2 < 20 
-union all 
-select (2*s_suppkey), s_address, s_nationkey,  s_name   FROM supplier where S_SUPPKEY*2 > 50) t
-order by t.s_address;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u4_gby_distinct.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u4_gby_distinct.hive
deleted file mode 100644
index 6cd4a5b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u4_gby_distinct.hive
+++ /dev/null
@@ -1,19 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS u4_gby_distinct;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the result tables
-create table u4_gby_distinct(l_partkey int, t_sum_quantity double);
-
--- the query
-insert overwrite table u4_gby_distinct
-select 
-  l_orderkey, avg(distinct L_QUANTITY) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey
-order by l_orderkey desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u5_gby_global.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u5_gby_global.hive
deleted file mode 100644
index cef7e2b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u5_gby_global.hive
+++ /dev/null
@@ -1,16 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS u5_gby_global;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the result tables
-create table u5_gby_global(t_sum_quantity double);
-
--- the query
-insert overwrite table u5_gby_global
-select 
-  sum(L_QUANTITY) as t_sum_quantity
-from 
-  lineitem;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u6_large_card_join.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u6_large_card_join.hive
deleted file mode 100644
index 5bf560b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u6_large_card_join.hive
+++ /dev/null
@@ -1,23 +0,0 @@
-DROP TABLE IF EXISTS joinsrc1;
-DROP TABLE IF EXISTS joinsrc2;
-DROP TABLE IF EXISTS u6_large_card_join;
-
--- create the tables and load the data
-create external table joinsrc1 (ID_1 INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
-STORED AS TEXTFILE LOCATION '/test/joinsrc1';
-
-create external table joinsrc2 (ID_2 INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
-STORED AS TEXTFILE LOCATION '/test/joinsrc2';
-
--- create the result tables
-create table u6_large_card_join(col1 int, col2 int);
-
--- the query
-insert overwrite table u6_large_card_join
-select 
-   ID_1, ID_2
-from 
-  joinsrc1 join joinsrc2
-on
-  joinsrc1.ID_1=joinsrc2.ID_2;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q10_returned_item.result b/hivesterix/src/test/resources/runtimefunctionts/results/q10_returned_item.result
deleted file mode 100644
index 6cc8ef4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q10_returned_item.result
+++ /dev/null
@@ -1,20 +0,0 @@
-121Customer#000000121282635.171899999966428.32PERUtv nCR2YKupGN73mQudO27-411-990-2959uriously stealthy ideas. carefully final courts use carefully
-124Customer#000000124222182.51881842.49CHINAaTbyVAW5tCd,v09O28-183-750-7809le fluffily even dependencies. quietly s
-106Customer#000000106190241.33343288.42ARGENTINAxGCOEAUjUNG11-751-989-4627lose slyly. ironic accounts along the evenly regular theodolites wake about the special, final gifts. 
-16Customer#000000016161422.046099999984681.03IRANcYiaeMLZSMAOQ2 d0W,20-781-609-3107kly silent courts. thinly regular theodolites sleep fluffily after 
-44Customer#000000044149364.565199999987315.94MOZAMBIQUEOi,dOSPwDu4jo4x,,P85E0dmhZGvNtBwi26-190-260-5375r requests around the unusual, bold a
-71Customer#000000071129481.02450000001-611.19GERMANYTlGalgdXWBmMV,6agLyWYDyIz9MKzcY8gl,w6t1B17-710-812-5403g courts across the regular, final pinto beans are blithely pending ac
-89Customer#000000089121663.12431530.76KENYAdtR, y9JQWUO6FoJExyp8whOU24-394-451-5404counts are slyly beyond the slyly final accounts. quickly final ideas wake. r
-112Customer#000000112111137.714099999982953.35ROMANIARcfgG3bO7QeCnfjqJT129-233-262-8382rmanently unusual multipliers. blithely ruthless deposits are furiously along the
-62Customer#000000062106368.0153595.61GERMANYupJK2Dnw13,17-361-978-7059kly special dolphins. pinto beans are slyly. quickly regular accounts are furiously a
-146Customer#000000146103265.988799999993328.68CANADAGdxkdXG9u7iyI1,,y5tq4ZyrcEy13-835-723-3223ffily regular dinos are slyly unusual requests. slyly specia
-19Customer#00000001999306.012700000028914.71CHINAuc,3bHIx84H,wdrmLOjVsiqXCq2tr28-396-526-5053 nag. furiously careful packages are slyly at the accounts. furiously regular in
-145Customer#00000014599256.90189748.93JORDANkQjHmt2kcec cy3hfMh969u23-562-444-8454ests? express, express instructions use. blithely fina
-103Customer#00000010397311.772400000022757.45INDONESIA8KIsQX4LJ7QMsj6DrtFtXu0nUEdV,8a19-216-107-2107furiously pending notornis boost slyly around the blithely ironic ideas? final, even instructions cajole fl
-136Customer#00000013695855.39799999999-842.39GERMANYQoLsJ0v5C1IQbh,DS117-501-210-4726ackages sleep ironic, final courts. even requests above the blithely bold requests g
-53Customer#00000005392568.91244113.64MOROCCOHnaxHzTfFTZs8MuCpJyTbZ47Cm4wFOOgib25-168-852-5363ar accounts are. even foxes are blithely. fluffily pending deposits boost
-49Customer#00000004990965.72624573.94IRANcNgAeX7Fqrdf7HQN9EwjUa4nxT,68L FKAxzl20-908-631-4424nusual foxes! fluffily pending packages maintain to the regular 
-37Customer#00000003788065.74579999999-917.75INDIA7EV4Pwh,3SboctTWt18-385-235-7162ilent packages are carefully among the deposits. furiousl
-82Customer#00000008286998.96449468.34CHINAzhG3EZbap4c992Gj3bK,3Ne,Xn28-159-442-5305s wake. bravely regular accounts are furiously. regula
-125Customer#00000012584808.068-234.12ROMANIA,wSZXdVR xxIIfm9s8ITyLl3kgjT6UC07GY0Y29-261-996-3120x-ray finally after the packages? regular requests c
-59Customer#00000005984655.57113458.6ARGENTINAzLOCP0wh92OtBihgspOGl411-355-584-3112ously final packages haggle blithely after the express deposits. furiou
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q11_important_stock.result b/hivesterix/src/test/resources/runtimefunctionts/results/q11_important_stock.result
deleted file mode 100644
index cdc01d2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q11_important_stock.result
+++ /dev/null
@@ -1,200 +0,0 @@
-252.832302068E7
-1242.59627599E7
-1752.385395363E7
-1972.248551967E7
-1632.099460571E7
-1602.00232846E7
-821.9919213349999998E7
-1691.898734723E7
-291.867279344E7
-261.8612458270000003E7
-731.827170729E7
-1611.798746301E7
-751.7959598009999998E7
-341.7780838360000003E7
-981.7763191509999998E7
-691.728526943E7
-1111.708388262E7
-1711.635442066E7
-1661.635189374E7
-771.598059909E7
-781.58768992E7
-1431.585686159E7
-171.5474261120000001E7
-1091.5054682620000001E7
-1051.5053163809999999E7
-961.495213259E7
-1461.4810759440000001E7
-1361.4654967749999998E7
-1161.443209134E7
-1281.4393555260000002E7
-1421.422039904E7
-1211.420032605E7
-301.4163132409999998E7
-161.413646503E7
-1981.413535335E7
-791.38652287E7
-901.3732797480000002E7
-321.369962979E7
-741.3388711109999998E7
-11.3378707239999998E7
-891.337148041E7
-221.335499174E7
-1861.317604077E7
-1891.305492542E7
-141.299397721E7
-931.299298218E7
-1681.299041501E7
-991.2750046790000001E7
-1671.268255069E7
-21.258471636E7
-1821.256239411E7
-611.253677656E7
-1121.234957975E7
-1781.2260301739999998E7
-1721.219775193E7
-1651.219746506E7
-1841.216784393E7
-1871.214970141E7
-1531.211935422E7
-951.20468895E7
-111.200715156E7
-1251.200347611E7
-1541.1851133850000001E7
-151.179843879E7
-671.178579951E7
-81.170789262E7
-871.168637671E7
-1341.1683586929999998E7
-1301.168246149E7
-431.161150462E7
-1021.151554211E7
-211.141066856E7
-621.138927324E7
-91.126484373E7
-801.118329032E7
-1731.1026774860000001E7
-941.092440116E7
-31.075814545E7
-1031.0691221600000001E7
-1581.067861635E7
-491.06445572E7
-1391.044045371E7
-1921.035745974E7
-241.033911936E7
-391.03210148E7
-1561.014364082E7
-1881.011906085E7
-121.0108587399999999E7
-331.005296264E7
-281.005234286E7
-409927827.77
-1999907803.559999999
-1939869674.77
-1069869361.73
-1089868370.31
-1839855564.82
-709700431.94
-489655921.88
-1189622756.149999999
-139592610.32
-839543465.079999998
-1599519909.44
-1479513932.18
-459423874.47
-1179408426.72
-1359311247.28
-1859305341.780000001
-1319223742.49
-79175528.209999999
-719167712.04
-1009131099.530000001
-769092927.110000001
-538979121.97
-1418686511.12
-648627897.290000001
-1018521762.0
-1768510175.88
-198481679.5
-1948464559.54
-918460636.52
-1328416851.24
-1138405217.959999999
-518247118.499999999
-418187897.16
-558092552.890000001
-728007155.3
-1157954624.0
-1707895241.609999999
-1147832023.279999999
-377809598.66
-547578243.79
-1807531794.4799999995
-607508961.6899999995
-317433034.240000001
-357132671.49
-1407122050.08
-1507106237.92
-1077082828.68
-1237049500.720000001
-1907017966.9
-1206920857.09
-1966905182.43
-1776887257.27
-1266813302.029999999
-1226812763.340000001
-2006780024.53
-1576766365.68
-636724960.14
-386667789.55
-586640619.38
-1456633786.590000001
-1446546945.92
-206533101.39
-1276483139.620000001
-106433776.51
-366410209.249999999
-476407355.369999999
-1916347187.43
-1376180452.850000001
-566145826.6
-1046134341.850000001
-446038126.659999999
-976036047.1899999995
-1815853464.149999999
-1625829410.54
-865746713.88
-525680644.4799999995
-1555552007.57
-925489588.28
-55461046.93
-185456316.21
-1495367514.630000001
-1105261352.11
-45162989.07
-65120392.47
-1485061589.27
-424957032.47
-1194954403.48
-844891082.38
-654834763.09
-664719253.369999999
-1794610607.92
-234531731.12
-684504770.61
-274371849.52
-1293997604.7800000003
-1953817436.31
-593765210.2100000004
-573739347.1199999996
-1383567425.75
-1743484708.31
-1643462215.0
-813421610.4200000004
-463398443.33
-853338711.3899999997
-503145791.97
-883117730.2399999998
-1512727444.22
-1521837809.1700000002
-1331517282.33
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q12_shipping.result b/hivesterix/src/test/resources/runtimefunctionts/results/q12_shipping.result
deleted file mode 100644
index bb95677..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q12_shipping.result
+++ /dev/null
@@ -1,2 +0,0 @@
-MAIL5.05.0
-SHIP5.010.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q13_customer_distribution.result b/hivesterix/src/test/resources/runtimefunctionts/results/q13_customer_distribution.result
deleted file mode 100644
index beaa047..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q13_customer_distribution.result
+++ /dev/null
@@ -1,27 +0,0 @@
-050
-168
-177
-206
-136
-126
-96
-235
-145
-105
-214
-184
-114
-84
-74
-263
-223
-63
-53
-43
-292
-242
-192
-152
-281
-251
-31
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q14_promotion_effect.result b/hivesterix/src/test/resources/runtimefunctionts/results/q14_promotion_effect.result
deleted file mode 100644
index 3b823e7..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q14_promotion_effect.result
+++ /dev/null
@@ -1 +0,0 @@
-15.230212611597251
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q15_top_supplier.result b/hivesterix/src/test/resources/runtimefunctionts/results/q15_top_supplier.result
deleted file mode 100644
index d975521..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q15_top_supplier.result
+++ /dev/null
@@ -1 +0,0 @@
-10Supplier#000000010Saygah3gYWMp72i PY34-852-489-8585797313.3838
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q16_parts_supplier_relationship.result b/hivesterix/src/test/resources/runtimefunctionts/results/q16_parts_supplier_relationship.result
deleted file mode 100644
index 393a33a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q16_parts_supplier_relationship.result
+++ /dev/null
@@ -1,34 +0,0 @@
-Brand#11PROMO ANODIZED TIN454
-Brand#11SMALL PLATED COPPER454
-Brand#11STANDARD POLISHED TIN454
-Brand#13MEDIUM ANODIZED STEEL364
-Brand#14SMALL ANODIZED NICKEL454
-Brand#15LARGE ANODIZED BRASS454
-Brand#21LARGE BURNISHED COPPER194
-Brand#23ECONOMY BRUSHED COPPER94
-Brand#25MEDIUM PLATED BRASS454
-Brand#31ECONOMY PLATED STEEL234
-Brand#31PROMO POLISHED TIN234
-Brand#32MEDIUM BURNISHED BRASS494
-Brand#33LARGE BRUSHED TIN364
-Brand#33SMALL BURNISHED NICKEL34
-Brand#34LARGE PLATED BRASS454
-Brand#34MEDIUM BRUSHED COPPER94
-Brand#34SMALL PLATED BRASS144
-Brand#35STANDARD ANODIZED STEEL234
-Brand#43PROMO POLISHED BRASS194
-Brand#43SMALL BRUSHED NICKEL94
-Brand#44SMALL PLATED COPPER194
-Brand#52MEDIUM BURNISHED TIN454
-Brand#52SMALL BURNISHED NICKEL144
-Brand#53MEDIUM BRUSHED COPPER34
-Brand#55STANDARD ANODIZED BRASS364
-Brand#55STANDARD BRUSHED COPPER34
-Brand#13SMALL BRUSHED NICKEL192
-Brand#25SMALL BURNISHED COPPER32
-Brand#43MEDIUM ANODIZED BRASS142
-Brand#53STANDARD PLATED STEEL452
-Brand#24MEDIUM PLATED STEEL191
-Brand#51ECONOMY POLISHED STEEL491
-Brand#53LARGE BURNISHED NICKEL231
-Brand#54ECONOMY ANODIZED BRASS91
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q17_small_quantity_order_revenue.result b/hivesterix/src/test/resources/runtimefunctionts/results/q17_small_quantity_order_revenue.result
deleted file mode 100644
index ccfa2e3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q17_small_quantity_order_revenue.result
+++ /dev/null
@@ -1 +0,0 @@
-863.2285714285715
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q18_large_volume_customer.result b/hivesterix/src/test/resources/runtimefunctionts/results/q18_large_volume_customer.result
deleted file mode 100644
index 32d3515..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q18_large_volume_customer.result
+++ /dev/null
@@ -1,100 +0,0 @@
-Customer#0000000707025671998-02-27263411.29266.0
-Customer#0000000101044211997-04-04258779.02255.0
-Customer#0000000525257651994-12-15249900.42247.0
-Customer#0000000828234601995-10-03245976.74254.0
-Customer#0000000686822081995-05-01245388.06256.0
-Customer#0000000282823061995-07-26244704.23235.0
-Customer#00000014614659251995-11-13242588.87242.0
-Customer#0000000292911211997-01-13241837.88242.0
-Customer#0000000676739071992-08-19240457.56239.0
-Customer#0000000767651581997-01-21240284.95248.0
-Customer#00000013113144841996-12-24237947.61243.0
-Customer#0000001151156451994-12-03234763.73245.0
-Customer#0000000494942941992-08-15232194.74225.0
-Customer#0000000767614771997-08-24231831.35236.0
-Customer#0000000444446451994-09-20231012.22248.0
-Customer#0000000898959571993-12-27230949.45242.0
-Customer#000000076763261995-06-04229165.17228.0
-Customer#000000067679281995-03-02228136.49241.0
-Customer#0000000797938081994-04-24228054.01227.0
-Customer#0000000373753171994-09-09228002.51231.0
-Customer#00000000443581993-09-20226806.66223.0
-Customer#00000014214256991992-07-30226314.91240.0
-Customer#00000012112118881993-10-31224724.11225.0
-Customer#0000000949426901996-03-31224674.27219.0
-Customer#0000000949454131997-10-17224382.57212.0
-Customer#0000000323253811993-01-29223995.46228.0
-Customer#0000001451455181998-02-08223537.09214.0
-Customer#0000000292929451996-01-03223507.72231.0
-Customer#000000007736541992-06-03222653.54222.0
-Customer#0000001451458071993-11-24222392.53216.0
-Customer#00000014914936191996-11-20222274.54221.0
-Customer#0000000707054721993-04-11221636.83217.0
-Customer#00000013713749001992-06-30221320.76227.0
-Customer#00000010610637781993-05-26221036.31225.0
-Customer#00000012112111531996-04-18220727.97209.0
-Customer#0000000707040041993-05-07220715.14228.0
-Customer#000000098987681996-08-20220636.82231.0
-Customer#00000014914956061996-11-12219959.08231.0
-Customer#000000055554841997-01-03219920.62224.0
-Customer#00000014014042301992-03-04219709.6217.0
-Customer#00000008282391996-09-20219707.84231.0
-Customer#0000000373727891998-03-14219123.27218.0
-Customer#0000000171732691996-03-01218697.85220.0
-Customer#00000014914935901995-05-13218482.7210.0
-Customer#0000001341346141992-12-01218116.21204.0
-Customer#0000000929241971996-08-13217709.03225.0
-Customer#00000013313311561996-10-19217682.81218.0
-Customer#000000046464531997-05-26216826.73226.0
-Customer#00000012412431091993-07-24216104.85210.0
-Customer#0000000434349941996-06-29216071.76213.0
-Customer#00000014914937131998-05-07215342.63213.0
-Customer#00000002929681998-04-18215135.72213.0
-Customer#0000000131324381993-07-15214494.39210.0
-Customer#00000013313346131998-03-05212339.55214.0
-Customer#00000010610617611993-12-24211925.95218.0
-Customer#0000000494912481992-01-02210713.88207.0
-Customer#000000005558591997-04-23210643.96211.0
-Customer#00000010610618271996-06-22210113.88205.0
-Customer#0000000858551841998-07-20209155.48213.0
-Customer#0000001331337101993-01-02208974.42196.0
-Customer#0000000525251861996-08-03208892.63210.0
-Customer#0000000282820501994-06-02208517.98217.0
-Customer#0000000767621801996-09-14208481.57212.0
-Customer#00000011911935881995-03-19207925.83212.0
-Customer#00000013413414441994-12-06207907.6205.0
-Customer#0000001031037421994-12-23207632.55198.0
-Customer#0000000171740991992-08-21207364.8208.0
-Customer#00000010910912861993-05-14207291.83200.0
-Customer#0000000797956331998-05-31207119.83203.0
-Customer#0000000626220221992-03-15206742.11209.0
-Customer#0000000222245831994-09-25206495.43197.0
-Customer#00000014814851851997-07-25206179.68198.0
-Customer#0000000444431751994-07-15205282.63215.0
-Customer#0000000565625651998-02-28204438.57201.0
-Customer#00000014914937471996-08-20204355.65195.0
-Customer#00000010110149641997-07-28204163.1197.0
-Customer#0000000626249921992-05-10203904.8198.0
-Customer#0000000101037511994-04-27202917.72204.0
-Customer#0000000767625341996-07-17202784.54214.0
-Customer#00000000111641992-10-21202660.52213.0
-Customer#00000011811812831996-08-30202623.92200.0
-Customer#0000000101018901996-12-18202364.58207.0
-Customer#0000000777717621994-08-20202227.17216.0
-Customer#00000010610641961998-05-15201455.98198.0
-Customer#0000000646458951997-01-01201419.83200.0
-Customer#00000000886441992-05-01201268.06202.0
-Customer#000000047472611993-06-29201003.12200.0
-Customer#0000000797946721995-11-07199593.71203.0
-Customer#0000001311319301994-12-17199102.23204.0
-Customer#00000011811841611993-08-21198995.21211.0
-Customer#0000000737340691992-05-13198816.13199.0
-Customer#00000014214256961995-05-04198723.3198.0
-Customer#00000013413438721996-09-06198538.68207.0
-Customer#00000012712710591994-02-27198360.22194.0
-Customer#00000010310342931996-08-20198322.91202.0
-Customer#000000080809931995-09-10198238.65194.0
-Customer#000000091914201995-10-31198039.23200.0
-Customer#0000000929233331992-09-16197973.22195.0
-Customer#00000014614641921998-04-19197192.95209.0
-Customer#00000014514515751995-09-13197031.52204.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q19_discounted_revenue.result b/hivesterix/src/test/resources/runtimefunctionts/results/q19_discounted_revenue.result
deleted file mode 100644
index 2e44572..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q19_discounted_revenue.result
+++ /dev/null
@@ -1 +0,0 @@
-51515.7344
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q1_pricing_summary_report.result b/hivesterix/src/test/resources/runtimefunctionts/results/q1_pricing_summary_report.result
deleted file mode 100644
index c1a7b06..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q1_pricing_summary_report.result
+++ /dev/null
@@ -1,4 +0,0 @@
-AF37474.03.756962464000004E73.567619209699997E73.7101416222424E725.35453315290933725419.2318267929880.0508660351826793961478
-NF1041.01041301.07999060.89799999991036450.8022827.39473684210526427402.6597368421030.0428947368421052638
-NO75168.07.538495536999999E77.165316630340007E77.4498798133073E725.55865351921115225632.4227711662680.049697381842910722941
-RF36511.03.657084124000003E73.473847287579999E73.616906011219296E725.05902539464653225100.09693891560.050027453671928671457
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q20_potential_part_promotion.result b/hivesterix/src/test/resources/runtimefunctionts/results/q20_potential_part_promotion.result
deleted file mode 100644
index d808757..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q20_potential_part_promotion.result
+++ /dev/null
@@ -1,10 +0,0 @@
-Supplier#000000001 N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ
-Supplier#00000000289eJ5ksX3ImxJQBvxObC,
-Supplier#000000003q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV3
-Supplier#000000004Bk7ah4CK8SYQTepEmvMkkgMwg
-Supplier#000000005Gcdm2rJRzl5qlTVzc
-Supplier#000000006tQxuVm7s7CnK
-Supplier#000000007s,4TicNGB4uO6PaSqNBUq
-Supplier#0000000089Sq4bBH2FQEmaFOocY45sRTxo6yuoG
-Supplier#0000000091KhUgZegwM3ua7dsYmekYBsK
-Supplier#000000010Saygah3gYWMp72i PY
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q21_suppliers_who_kept_orders_waiting.result b/hivesterix/src/test/resources/runtimefunctionts/results/q21_suppliers_who_kept_orders_waiting.result
deleted file mode 100644
index 50fa26f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q21_suppliers_who_kept_orders_waiting.result
+++ /dev/null
@@ -1,10 +0,0 @@
-Supplier#000000007431
-Supplier#000000005417
-Supplier#000000001403
-Supplier#000000009373
-Supplier#000000004367
-Supplier#000000002364
-Supplier#000000010358
-Supplier#000000003349
-Supplier#000000008347
-Supplier#000000006343
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q22_global_sales_opportunity.result b/hivesterix/src/test/resources/runtimefunctionts/results/q22_global_sales_opportunity.result
deleted file mode 100644
index 08bcd0c..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q22_global_sales_opportunity.result
+++ /dev/null
@@ -1,23 +0,0 @@
-10320747.13
-11535208.880000000005
-12213735.27
-13213545.3
-1419963.15
-15214624.84
-16211239.02
-1719127.27
-18322156.91
-19643758.41
-20323085.67
-21319400.52
-22320332.18
-23325483.06
-25319038.36
-26538943.899999999994
-27213248.06
-28542700.5
-29436059.009999999995
-30217528.46
-31323599.11
-32425754.22
-33320359.59
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q2_minimum_cost_supplier.result b/hivesterix/src/test/resources/runtimefunctionts/results/q2_minimum_cost_supplier.result
deleted file mode 100644
index 402ecf3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q2_minimum_cost_supplier.result
+++ /dev/null
@@ -1,11 +0,0 @@
-6820.35Supplier#000000007UNITED KINGDOM2Manufacturer#1s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM4Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM22Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM62Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM79Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM94Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM102Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM106Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM131Manufacturer#5s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM159Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM193Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q3_shipping_priority.result b/hivesterix/src/test/resources/runtimefunctionts/results/q3_shipping_priority.result
deleted file mode 100644
index 94b2cb9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q3_shipping_priority.result
+++ /dev/null
@@ -1,10 +0,0 @@
-157454559.51996-12-120
-301253664.311993-05-050
-115353458.01996-04-180
-128452830.331996-01-070
-317151436.9351993-04-060
-32350547.61994-03-260
-153749641.821992-02-150
-205148951.7775999999941996-03-180
-128648603.9036000000051993-05-140
-61448531.71521992-12-010
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q4_order_priority.result b/hivesterix/src/test/resources/runtimefunctionts/results/q4_order_priority.result
deleted file mode 100644
index 0e757ee..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q4_order_priority.result
+++ /dev/null
@@ -1,5 +0,0 @@
-1-URGENT9
-2-HIGH7
-3-MEDIUM9
-4-NOT SPECIFIED8
-5-LOW12
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q5_local_supplier_volume.result b/hivesterix/src/test/resources/runtimefunctionts/results/q5_local_supplier_volume.result
deleted file mode 100644
index ecdf467..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q5_local_supplier_volume.result
+++ /dev/null
@@ -1,8 +0,0 @@
-PERU1099912.8209
-MOROCCO520107.17919999996
-IRAN375610.964
-IRAQ364417.398
-ETHIOPIA253825.7622
-ARGENTINA102659.0106
-UNITED KINGDOM61065.8711
-KENYA29679.393200000002
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q6_forecast_revenue_change.result b/hivesterix/src/test/resources/runtimefunctionts/results/q6_forecast_revenue_change.result
deleted file mode 100644
index 45bb483..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q6_forecast_revenue_change.result
+++ /dev/null
@@ -1 +0,0 @@
-77949.91860000002
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q7_volume_shipping.result b/hivesterix/src/test/resources/runtimefunctionts/results/q7_volume_shipping.result
deleted file mode 100644
index c4cfceee..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q7_volume_shipping.result
+++ /dev/null
@@ -1,37 +0,0 @@
-ARGENTINAGERMANY199263089.1006
-ARGENTINAGERMANY199364024.4532
-ARGENTINAGERMANY199432719.877199999995
-ARGENTINAGERMANY199563729.862400000005
-ARGENTINAGERMANY19961801.8198
-ETHIOPIAGERMANY199274693.317
-ETHIOPIAGERMANY199313733.706600000001
-ETHIOPIAGERMANY199483631.40359999999
-ETHIOPIAGERMANY199569329.67199999999
-ETHIOPIAGERMANY199642017.435999999994
-IRANGERMANY199238014.335399999996
-IRANGERMANY1994252152.5927
-IRANGERMANY19959106.957199999999
-IRAQGERMANY199268040.7747
-IRAQGERMANY19933676.8004
-IRAQGERMANY199485948.85280000001
-IRAQGERMANY199566380.2488
-KENYAGERMANY199277164.5422
-KENYAGERMANY199363792.8736
-KENYAGERMANY199474537.6256
-KENYAGERMANY199537851.309
-KENYAGERMANY199618467.316
-MOROCCOGERMANY199289669.69080000001
-MOROCCOGERMANY1994173726.0087
-MOROCCOGERMANY199537169.8497
-PERUGERMANY1992226624.7652
-PERUGERMANY199358359.3076
-PERUGERMANY1994345376.2983
-PERUGERMANY199552968.9424
-PERUGERMANY19967960.72
-UNITED KINGDOMGERMANY1992100143.32140000002
-UNITED KINGDOMGERMANY199341582.5227
-UNITED KINGDOMGERMANY1994164740.3271
-UNITED KINGDOMGERMANY199650909.551999999996
-UNITED STATESGERMANY199252480.9528
-UNITED STATESGERMANY1994115566.8388
-UNITED STATESGERMANY199580489.69949999999
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q8_national_market_share.result b/hivesterix/src/test/resources/runtimefunctionts/results/q8_national_market_share.result
deleted file mode 100644
index 7d7bd56..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q8_national_market_share.result
+++ /dev/null
@@ -1,2 +0,0 @@
-19950.0
-19960.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q9_product_type_profit.result b/hivesterix/src/test/resources/runtimefunctionts/results/q9_product_type_profit.result
deleted file mode 100644
index f900b06..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q9_product_type_profit.result
+++ /dev/null
@@ -1,60 +0,0 @@
-ARGENTINA199817779.069700000007
-ARGENTINA199713943.953800000003
-ARGENTINA19967641.422700000003
-ARGENTINA199520892.752500000002
-ARGENTINA199415088.352599999998
-ARGENTINA199317586.344600000004
-ARGENTINA199228732.461499999994
-ETHIOPIA199828217.159999999996
-ETHIOPIA199633970.65
-ETHIOPIA199537720.35
-ETHIOPIA199437251.01
-ETHIOPIA199323782.61
-IRAN199723590.007999999998
-IRAN19967428.232500000005
-IRAN199521000.996499999994
-IRAN199429408.13
-IRAN199349876.41499999999
-IRAN199252064.24
-IRAQ199811619.960399999996
-IRAQ199747910.246
-IRAQ199618459.567499999997
-IRAQ199532782.37010000001
-IRAQ19949041.2317
-IRAQ199330687.2625
-IRAQ199229098.2557
-KENYA199833148.3345
-KENYA199754355.016500000005
-KENYA199653607.4854
-KENYA199585354.87380000002
-KENYA1994102904.2511
-KENYA1993109310.8084
-KENYA1992138534.12099999998
-MOROCCO1998157058.2328
-MOROCCO199788669.96099999998
-MOROCCO1996236833.66719999994
-MOROCCO1995381575.86679999996
-MOROCCO1994243523.4336
-MOROCCO1993232196.78029999993
-MOROCCO1992347434.1452
-PERU1998101109.01959999997
-PERU199758073.086599999995
-PERU199630360.52179999999
-PERU1995138451.77999999997
-PERU199455023.063200000004
-PERU1993110409.0863
-PERU199270946.1916
-UNITED KINGDOM1998139685.04400000002
-UNITED KINGDOM1997183502.04979999995
-UNITED KINGDOM1996374085.28839999996
-UNITED KINGDOM1995548356.7983999999
-UNITED KINGDOM1994266982.7679999999
-UNITED KINGDOM1993717309.464
-UNITED KINGDOM199279540.6016
-UNITED STATES199832847.96
-UNITED STATES199730849.5
-UNITED STATES199656125.46000000001
-UNITED STATES199515961.7977
-UNITED STATES199431671.2
-UNITED STATES199355057.469
-UNITED STATES199251970.23
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u10_join.result b/hivesterix/src/test/resources/runtimefunctionts/results/u10_join.result
deleted file mode 100644
index 2239e1c..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u10_join.result
+++ /dev/null
@@ -1,1500 +0,0 @@
-1051.15
-1084.38
-1147.42
-1816.28
-1861.19
-1984.14
-2007.48
-2158.13
-2638.98
-3089.42
-3223.17
-3726.14
-3808.05
-3892.77
-3942.73
-3967.47
-4104.3
-4225.26
-4766.19
-4819.91
-4820.55
-4913.06
-5184.26
-5472.17
-5978.65
-6088.41
-6402.41
-6406.29
-6793.45
-7014.31
-7102.74
-7108.12
-7211.59
-7231.91
-7471.75
-7859.36
-8225.96
-8413.31
-8709.16
-8720.45
-8945.03
-8958.65
-9006.25
-9103.4
-9495.28
-9669.46
-9679.45
-9741.03
-10163.56
-10451.97
-10500.27
-10508.12
-10645.48
-10677.86
-10934.84
-11405.4
-11474.95
-11493.8
-11575.77
-11850.45
-12137.76
-12291.83
-12896.25
-12907.62
-12918.7
-12984.85
-13197.78
-13282.23
-13491.31
-13603.08
-13679.32
-14275.01
-14790.37
-15082.82
-15313.61
-15417.57
-16003.86
-16030.15
-16346.94
-16689.19
-16763.95
-16922.51
-17031.01
-17172.66
-17213.59
-17231.05
-17603.01
-17986.15
-18247.86
-18307.45
-18566.14
-18594.66
-18653.09
-18795.62
-18885.35
-19056.99
-19405.73
-19612.03
-19811.69
-20065.73
-20099.43
-20182.22
-20214.49
-20530.97
-20752.62
-20791.5
-21088.59
-21119.86
-21137.08
-21207.08
-21267.72
-21640.1
-21760.09
-21815.3
-21964.66
-22072.16
-22294.51
-22767.49
-22840.21
-22994.51
-23020.62
-23039.46
-23067.48
-23198.24
-23280.61
-23327.88
-23476.12
-23614.89
-23973.6
-23984.88
-24265.24
-24347.36
-24362.39
-24468.16
-24637.96
-24654.79
-24660.06
-24844.39
-25007.95
-25170.88
-25661.87
-25767.07
-25861.74
-25985.52
-26011.2
-26128.99
-26714.67
-26798.65
-26839.16
-26868.85
-26906.38
-26981.31
-26999.83
-27016.74
-27049.22
-27148.63
-27204.6
-27461.48
-27561.82
-27598.17
-27629.66
-27663.16
-27727.52
-28007.73
-28070.86
-28155.92
-28223.57
-28330.42
-28571.39
-28623.04
-28658.26
-28930.68
-29029.84
-29305.47
-29673.73
-29827.44
-29920.8
-30045.95
-30059.47
-30137.17
-30457.91
-30494.62
-30495.65
-30550.9
-30722.49
-30755.69
-30778.78
-30783.05
-31043.39
-31075.51
-31084.79
-31103.83
-31471.04
-31538.94
-31689.46
-31693.88
-31795.52
-32796.35
-32890.89
-32929.3
-33085.68
-33123.28
-33124.96
-33248.04
-33396.35
-33401.77
-33470.4
-33755.47
-33998.9
-34004.48
-34035.17
-34269.96
-34363.63
-34632.57
-34768.68
-34797.72
-34936.31
-35019.95
-35131.8
-35390.15
-35514.45
-35589.57
-35795.22
-35949.14
-36024.96
-36333.34
-36389.43
-36464.76
-36468.55
-36551.43
-36592.48
-36671.88
-36889.65
-37248.78
-37301.25
-37348.62
-37398.9
-37526.68
-37696.7
-37776.79
-37804.43
-37881.31
-38038.84
-38057.81
-38065.28
-38164.23
-38330.42
-38446.39
-38545.97
-38596.81
-38974.67
-38988.98
-39048.94
-39103.37
-39190.62
-39263.28
-39338.44
-39358.51
-39382.74
-39397.6
-39470.39
-39612.63
-39700.29
-39793.05
-39805.04
-39828.51
-39835.54
-39906.87
-40142.15
-40183.29
-40234.5
-40492.37
-40548.99
-40572.64
-40975.96
-40982.08
-41032.81
-41162.24
-41375.69
-41392.31
-41433.48
-41450.19
-41492.25
-41552.78
-41573.42
-41605.63
-41655.51
-41670.02
-41686.1
-41723.86
-41758.44
-41760.0
-41811.12
-42225.53
-42410.57
-42579.4
-42867.92
-42927.07
-42945.82
-43092.76
-43255.19
-43315.15
-43360.95
-43789.14
-43809.37
-43889.17
-44002.53
-44387.23
-44429.81
-44672.03
-44777.63
-44781.32
-45311.07
-45514.27
-45536.27
-45695.84
-45704.96
-45767.69
-45860.94
-45889.09
-46076.46
-46107.7
-46298.53
-46310.83
-46355.83
-46366.56
-46376.09
-46380.69
-46393.97
-46418.85
-46459.92
-46598.65
-46753.63
-46815.93
-46918.22
-47010.15
-47033.21
-47099.71
-47120.41
-47232.79
-47272.67
-47286.32
-47384.71
-47440.91
-47447.63
-47614.08
-47623.94
-47627.89
-47753.0
-47823.04
-47852.06
-47925.47
-47940.51
-47985.98
-48024.99
-48053.18
-48206.14
-48284.06
-48419.58
-48478.54
-48497.09
-48502.79
-48781.39
-49033.69
-49305.98
-49357.72
-49625.21
-49841.12
-49903.57
-50201.16
-50287.06
-50328.84
-50601.01
-50724.06
-51004.44
-51494.47
-51697.18
-51775.54
-51839.94
-52114.01
-52190.52
-52359.51
-52414.19
-52433.54
-52562.16
-52982.23
-53212.95
-53287.25
-53581.41
-53649.35
-53827.34
-54121.92
-54175.35
-54356.1
-54478.95
-54655.07
-55090.67
-55211.04
-55553.68
-55554.97
-55582.94
-55619.01
-55892.35
-55950.21
-56207.66
-56210.26
-56227.04
-56449.23
-56779.06
-56936.1
-56938.16
-56998.36
-57092.26
-57127.71
-57213.18
-57584.12
-57697.44
-57740.74
-57823.37
-58032.77
-58094.75
-58111.0
-58168.07
-58212.22
-58218.35
-58273.89
-58546.02
-58666.79
-58853.11
-58932.19
-59180.25
-59186.02
-59291.75
-59404.77
-59417.76
-59439.44
-59455.61
-59651.38
-59931.42
-59982.31
-59989.66
-60314.97
-60568.34
-60867.14
-60868.39
-60887.9
-60918.41
-60933.29
-61052.1
-61297.42
-61811.33
-62014.51
-62108.45
-62172.34
-62251.15
-62258.18
-62277.18
-62316.61
-62430.67
-62453.97
-62497.51
-62518.31
-62541.27
-62567.99
-62661.93
-62716.67
-62807.13
-62814.89
-62972.29
-63041.33
-63103.32
-63195.54
-63278.0
-63470.78
-63535.56
-63537.13
-63590.17
-63703.92
-63873.14
-64000.93
-64102.93
-64271.75
-64344.86
-64838.66
-64892.73
-65189.17
-65218.47
-65269.38
-65331.05
-65385.42
-65601.08
-65678.21
-65702.39
-65883.92
-66158.13
-66268.86
-66408.29
-66455.34
-66697.95
-66817.05
-66927.16
-67018.3
-67045.94
-67049.37
-67167.19
-67173.82
-67226.28
-67525.43
-67572.73
-67789.42
-67941.54
-67944.38
-67979.49
-68052.7
-68056.57
-68255.82
-68309.28
-68494.08
-68519.84
-68619.29
-68817.08
-68885.66
-68908.31
-69412.71
-69447.25
-69668.22
-70182.63
-70183.29
-70232.26
-70377.31
-70392.02
-70403.62
-70430.54
-70462.84
-70502.52
-70529.27
-70553.45
-70557.05
-70857.51
-71017.99
-71241.63
-71349.3
-71362.5
-71381.21
-71453.85
-71460.49
-71543.41
-71683.84
-71781.23
-71822.86
-71852.67
-71968.1
-72055.87
-72150.68
-72359.55
-72440.52
-72533.07
-72835.95
-72843.48
-73517.91
-73739.06
-73882.37
-73907.63
-73924.21
-73962.95
-73990.08
-74483.95
-74710.74
-74882.22
-74892.08
-74940.13
-75026.51
-75030.81
-75074.07
-75144.68
-75145.87
-75661.7
-75733.58
-76067.1
-76119.72
-76164.41
-76518.11
-76799.25
-76848.96
-77247.05
-77482.87
-77487.09
-77705.4
-77754.62
-78221.69
-78567.55
-78676.54
-78711.4
-79189.58
-79197.77
-79230.47
-79248.35
-79258.24
-79270.23
-79380.51
-79594.68
-79646.89
-79683.42
-79782.56
-79785.52
-79863.84
-79901.18
-80018.54
-80084.61
-80274.22
-80437.72
-80438.38
-80487.97
-80592.44
-80624.38
-81089.61
-81138.17
-81351.53
-81663.65
-81826.12
-82026.18
-82034.03
-82151.12
-82190.77
-82197.79
-82467.29
-82493.07
-82504.56
-82563.1
-82598.87
-82746.74
-82824.14
-82918.36
-82928.12
-83413.3
-83490.99
-83665.2
-83773.49
-83804.38
-84053.93
-84314.51
-84405.78
-84493.55
-84627.76
-84651.8
-84800.44
-84871.5
-84954.79
-84983.9
-85122.24
-85255.56
-85381.0
-85394.06
-85397.04
-85477.89
-85552.21
-85755.84
-85822.67
-85861.93
-85901.7
-85927.85
-85948.02
-86076.86
-86534.05
-86615.25
-86918.57
-86958.28
-87073.89
-87248.17
-87475.82
-87689.88
-87803.55
-87892.38
-87988.34
-88047.04
-88080.33
-88216.32
-88219.12
-88448.24
-88704.26
-88966.68
-89143.36
-89224.24
-89345.99
-89359.11
-89399.4
-89503.11
-89509.91
-89592.11
-89684.31
-89731.1
-89792.48
-89877.09
-89992.48
-89999.72
-90042.41
-90380.4
-90707.58
-90755.31
-90981.28
-91017.61
-91438.59
-91513.79
-91541.48
-91664.85
-91678.66
-91795.13
-91929.93
-91982.29
-92069.62
-92123.32
-92187.8
-92261.08
-92326.79
-92340.77
-92484.7
-92716.17
-92730.74
-92798.66
-92851.8
-92856.91
-93206.35
-93259.93
-93335.6
-93403.05
-93769.28
-93828.15
-94030.43
-94135.77
-94231.71
-94400.43
-94446.69
-94527.23
-94534.07
-94649.25
-94866.39
-94969.41
-95063.41
-95126.32
-95291.79
-95312.81
-95453.8
-95563.95
-95591.4
-95731.5
-95761.93
-95929.46
-96015.13
-96057.42
-96166.92
-96359.65
-96431.77
-96458.03
-96596.81
-96855.29
-97502.23
-97733.87
-97758.28
-97981.06
-98140.86
-98258.73
-98275.37
-98335.61
-98422.83
-98485.21
-98541.95
-98643.17
-98723.11
-98753.57
-98956.82
-98987.51
-99050.81
-99088.75
-99177.69
-99290.01
-99377.51
-99494.67
-99577.55
-99798.76
-99834.47
-99851.38
-99960.46
-100035.03
-100106.96
-100290.07
-100445.59
-100671.06
-100714.13
-100749.6
-100750.67
-100758.71
-100954.64
-101020.75
-101202.18
-101240.96
-101339.68
-101429.61
-101616.44
-101709.52
-101878.46
-101899.93
-102207.2
-102226.59
-102534.63
-102665.03
-102693.61
-102793.59
-102807.59
-103085.13
-103192.74
-103320.91
-103641.15
-103656.44
-103814.27
-104038.78
-104166.56
-104259.88
-104391.11
-104523.03
-104585.77
-104664.4
-104695.09
-104759.25
-104927.66
-104966.33
-105094.09
-105145.4
-105302.05
-105421.09
-105492.37
-105561.21
-105770.53
-105789.01
-106036.84
-106045.89
-106122.38
-106150.05
-106315.25
-106446.02
-106612.48
-106635.21
-106823.97
-106935.19
-107139.29
-107140.22
-107231.6
-107406.26
-107732.23
-107824.4
-107919.86
-107958.62
-108107.42
-108171.38
-108196.56
-108239.46
-108317.51
-108334.3
-108353.08
-108361.46
-108412.57
-108424.94
-108443.84
-109077.69
-109202.9
-109246.54
-109247.0
-109301.02
-109351.87
-109469.9
-109536.55
-109979.71
-110194.31
-110432.76
-110626.82
-110826.83
-110958.36
-111020.79
-111207.93
-111403.66
-111547.31
-111597.96
-111924.56
-112444.42
-112603.34
-112770.89
-112843.52
-112845.04
-112912.0
-113156.3
-113191.45
-113417.03
-113505.19
-113701.89
-113954.89
-114097.63
-114145.18
-114681.55
-114879.19
-114978.03
-114990.63
-115161.29
-115219.88
-115411.37
-115688.85
-115717.37
-115759.13
-115877.4
-115929.14
-115959.96
-116003.11
-116069.66
-116093.49
-116127.69
-116193.97
-116227.05
-116258.53
-116740.67
-116789.98
-116792.13
-116923.0
-117132.72
-117397.16
-117537.87
-117728.37
-117817.52
-117827.18
-117909.23
-118036.54
-118201.53
-118464.65
-118495.12
-118570.79
-118802.62
-118896.95
-119164.96
-119201.64
-119605.91
-119820.38
-119838.14
-119887.47
-119910.04
-119917.28
-120053.52
-120073.51
-120086.84
-120324.82
-120516.93
-120533.46
-120626.49
-120828.12
-121220.59
-121360.83
-121663.68
-121704.45
-121935.23
-121994.04
-122157.14
-122490.66
-122611.05
-122621.31
-122785.82
-122823.78
-122964.66
-122969.79
-123014.83
-123120.06
-123477.05
-123586.03
-123956.25
-124380.73
-124402.59
-124470.32
-124539.0
-124608.69
-124637.19
-124661.48
-124675.27
-124719.97
-124950.79
-125011.92
-125030.37
-125125.57
-125170.86
-125188.72
-125191.12
-125396.8
-125509.17
-125562.09
-125792.83
-126066.0
-126113.32
-126205.42
-126235.35
-126597.21
-126804.9
-126902.81
-126948.81
-127068.89
-127132.51
-127134.05
-127191.47
-127345.45
-127527.05
-127532.2
-127717.72
-127817.38
-127934.71
-128014.15
-128024.71
-128234.96
-128367.97
-128624.99
-128776.9
-128786.57
-129004.81
-129012.84
-129033.13
-129062.13
-129086.93
-129096.8
-129546.56
-129636.99
-129657.08
-129803.03
-129821.09
-130125.64
-130204.17
-130345.9
-130515.61
-130647.18
-130687.64
-130702.19
-131079.52
-131092.67
-131103.31
-131122.82
-131146.47
-131251.81
-131432.42
-131447.03
-131604.34
-131752.07
-131891.05
-132494.97
-132838.49
-132854.79
-132972.24
-133002.55
-133038.59
-133273.64
-133451.14
-133665.12
-133829.35
-133864.82
-134308.04
-134333.33
-134413.58
-134442.37
-134726.09
-134814.65
-135157.92
-135187.33
-135335.96
-135613.18
-135643.87
-135647.68
-135745.58
-135761.05
-135934.6
-136058.7
-136162.13
-136360.37
-136517.34
-136582.6
-136634.34
-136765.03
-136954.81
-137030.4
-137223.14
-137297.71
-137369.5
-137473.58
-137576.19
-138010.76
-138423.03
-138584.2
-138902.23
-139047.22
-139104.17
-139124.72
-139332.94
-139542.14
-139579.18
-139580.85
-139714.71
-139854.41
-139902.71
-139915.23
-140031.23
-140363.7
-140390.6
-140608.69
-140685.01
-140838.11
-141118.87
-141159.63
-141311.01
-141486.77
-141554.06
-141647.08
-141679.41
-141822.19
-141824.23
-141858.97
-141902.54
-142029.67
-142070.65
-142290.77
-142291.79
-142322.33
-142323.38
-142494.99
-142767.26
-142866.39
-142891.22
-143070.7
-143191.54
-143212.85
-143276.28
-143350.75
-143411.69
-143753.01
-143813.39
-143899.85
-144123.37
-144335.16
-145040.38
-145060.41
-145096.17
-145100.47
-145232.09
-145249.13
-145426.11
-145495.62
-145630.76
-145654.97
-145695.42
-145713.03
-145730.19
-145761.99
-145768.47
-145857.6
-145898.47
-145906.24
-145971.6
-146136.1
-146221.66
-146298.28
-146382.71
-146581.14
-146849.33
-146862.27
-146896.72
-146933.07
-147071.86
-147243.86
-147329.51
-147343.68
-147543.26
-147915.68
-148176.06
-148299.05
-148500.71
-148682.82
-148789.52
-149451.88
-149466.62
-149536.2
-149614.34
-149671.92
-150334.57
-150345.63
-150349.92
-150582.77
-150585.73
-150655.44
-150886.49
-151089.96
-151148.81
-151233.65
-151282.65
-151404.78
-151419.5
-151515.08
-151801.06
-152940.0
-153024.28
-153048.74
-153069.14
-153233.93
-153259.41
-153386.61
-153426.79
-153568.02
-153637.79
-153720.22
-153864.67
-154260.84
-154383.37
-154590.05
-154653.32
-154936.43
-154958.89
-154967.89
-155017.92
-155045.39
-155356.8
-155680.6
-156018.74
-156345.64
-156381.95
-156407.4
-156477.94
-156697.55
-156802.8
-157040.57
-157062.7
-157767.86
-157968.27
-158345.31
-158479.37
-158776.68
-158853.63
-158885.83
-158893.16
-158991.89
-159005.35
-159015.39
-159170.8
-159171.69
-159578.94
-159720.39
-159870.44
-160627.01
-160882.76
-161066.22
-161307.05
-161625.5
-161745.44
-162088.3
-162113.46
-162165.94
-162176.23
-162634.53
-162786.67
-163709.85
-163746.47
-163794.53
-163834.46
-163966.67
-164462.61
-165019.32
-165219.08
-165454.51
-165489.52
-165655.99
-165890.47
-166335.03
-166506.22
-166669.86
-166947.75
-166961.06
-167017.39
-167056.34
-167262.34
-168495.03
-168562.27
-168618.39
-168721.45
-168750.48
-168952.1
-169107.85
-169756.19
-169797.4
-169847.63
-170360.27
-171128.1
-171326.48
-171488.73
-171522.54
-171894.45
-171975.62
-172021.87
-172102.96
-172436.3
-172861.58
-172872.37
-172899.84
-172908.01
-173024.71
-173130.2
-173145.37
-173340.09
-173444.6
-173522.71
-174090.3
-174223.2
-174569.88
-174634.12
-174798.97
-175017.68
-175142.28
-175422.13
-176084.63
-176278.57
-176294.34
-176525.53
-176647.54
-176864.83
-176867.34
-176911.21
-177181.67
-177458.97
-178060.22
-178249.05
-178254.66
-178491.24
-178492.01
-178821.73
-179287.95
-179292.14
-179418.31
-179462.21
-179554.41
-179686.07
-179747.47
-179827.12
-179854.51
-179923.54
-179984.42
-180054.29
-180119.22
-180396.95
-180417.11
-180455.98
-180478.16
-180692.9
-180737.75
-180912.15
-181077.36
-181320.5
-181346.56
-182025.95
-182432.17
-182516.77
-182966.39
-183104.71
-183176.6
-183286.33
-183493.42
-183620.33
-183671.08
-183734.56
-183965.61
-184172.31
-184583.99
-185496.66
-185968.15
-186215.81
-186370.23
-186669.1
-186912.51
-187156.38
-187514.11
-187516.29
-187553.35
-187932.3
-188124.55
-188985.18
-189361.42
-189547.57
-189651.76
-190142.17
-190490.78
-190652.53
-190693.92
-190960.69
-192074.23
-192217.86
-192417.85
-193832.28
-193857.67
-194119.31
-194159.59
-195515.26
-195834.96
-195844.84
-196080.26
-196443.16
-196989.09
-197031.52
-197192.95
-197973.22
-198039.23
-198238.65
-198322.91
-198360.22
-198538.68
-198723.3
-198816.13
-198995.21
-199102.23
-199593.71
-201003.12
-201268.06
-201419.83
-201455.98
-202227.17
-202364.58
-202623.92
-202660.52
-202784.54
-202917.72
-203904.8
-204163.1
-204355.65
-204438.57
-205282.63
-206179.68
-206495.43
-206742.11
-207119.83
-207291.83
-207364.8
-207632.55
-207907.6
-207925.83
-208481.57
-208517.98
-208892.63
-208974.42
-209155.48
-210113.88
-210643.96
-210713.88
-211925.95
-212339.55
-214494.39
-215135.72
-215342.63
-216071.76
-216104.85
-216826.73
-217682.81
-217709.03
-218116.21
-218482.7
-218697.85
-219123.27
-219707.84
-219709.6
-219920.62
-219959.08
-220636.82
-220715.14
-220727.97
-221036.31
-221320.76
-221636.83
-222274.54
-222392.53
-222653.54
-223507.72
-223537.09
-223995.46
-224382.57
-224674.27
-224724.11
-226314.91
-226806.66
-228002.51
-228054.01
-228136.49
-229165.17
-230949.45
-231012.22
-231831.35
-232194.74
-234763.73
-237947.61
-240284.95
-240457.56
-241837.88
-242588.87
-244704.23
-245388.06
-245976.74
-249900.42
-258779.02
-263411.29
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u10_nestedloop_join.result b/hivesterix/src/test/resources/runtimefunctionts/results/u10_nestedloop_join.result
deleted file mode 100644
index ffc76a4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u10_nestedloop_join.result
+++ /dev/null
@@ -1,300 +0,0 @@
-ARGENTINAALGERIA10
-BRAZILALGERIA20
-BRAZILARGENTINA21
-CANADAALGERIA30
-CANADAARGENTINA31
-CANADABRAZIL32
-CHINAALGERIA180
-CHINAARGENTINA181
-CHINABRAZIL182
-CHINACANADA183
-CHINAEGYPT184
-CHINAETHIOPIA185
-CHINAFRANCE186
-CHINAGERMANY187
-CHINAINDIA188
-CHINAINDONESIA189
-CHINAIRAN1810
-CHINAIRAQ1811
-CHINAJAPAN1812
-CHINAJORDAN1813
-CHINAKENYA1814
-CHINAMOROCCO1815
-CHINAMOZAMBIQUE1816
-CHINAPERU1817
-EGYPTALGERIA40
-EGYPTARGENTINA41
-EGYPTBRAZIL42
-EGYPTCANADA43
-ETHIOPIAALGERIA50
-ETHIOPIAARGENTINA51
-ETHIOPIABRAZIL52
-ETHIOPIACANADA53
-ETHIOPIAEGYPT54
-FRANCEALGERIA60
-FRANCEARGENTINA61
-FRANCEBRAZIL62
-FRANCECANADA63
-FRANCEEGYPT64
-FRANCEETHIOPIA65
-GERMANYALGERIA70
-GERMANYARGENTINA71
-GERMANYBRAZIL72
-GERMANYCANADA73
-GERMANYEGYPT74
-GERMANYETHIOPIA75
-GERMANYFRANCE76
-INDIAALGERIA80
-INDIAARGENTINA81
-INDIABRAZIL82
-INDIACANADA83
-INDIAEGYPT84
-INDIAETHIOPIA85
-INDIAFRANCE86
-INDIAGERMANY87
-INDONESIAALGERIA90
-INDONESIAARGENTINA91
-INDONESIABRAZIL92
-INDONESIACANADA93
-INDONESIAEGYPT94
-INDONESIAETHIOPIA95
-INDONESIAFRANCE96
-INDONESIAGERMANY97
-INDONESIAINDIA98
-IRANALGERIA100
-IRANARGENTINA101
-IRANBRAZIL102
-IRANCANADA103
-IRANEGYPT104
-IRANETHIOPIA105
-IRANFRANCE106
-IRANGERMANY107
-IRANINDIA108
-IRANINDONESIA109
-IRAQALGERIA110
-IRAQARGENTINA111
-IRAQBRAZIL112
-IRAQCANADA113
-IRAQEGYPT114
-IRAQETHIOPIA115
-IRAQFRANCE116
-IRAQGERMANY117
-IRAQINDIA118
-IRAQINDONESIA119
-IRAQIRAN1110
-JAPANALGERIA120
-JAPANARGENTINA121
-JAPANBRAZIL122
-JAPANCANADA123
-JAPANEGYPT124
-JAPANETHIOPIA125
-JAPANFRANCE126
-JAPANGERMANY127
-JAPANINDIA128
-JAPANINDONESIA129
-JAPANIRAN1210
-JAPANIRAQ1211
-JORDANALGERIA130
-JORDANARGENTINA131
-JORDANBRAZIL132
-JORDANCANADA133
-JORDANEGYPT134
-JORDANETHIOPIA135
-JORDANFRANCE136
-JORDANGERMANY137
-JORDANINDIA138
-JORDANINDONESIA139
-JORDANIRAN1310
-JORDANIRAQ1311
-JORDANJAPAN1312
-KENYAALGERIA140
-KENYAARGENTINA141
-KENYABRAZIL142
-KENYACANADA143
-KENYAEGYPT144
-KENYAETHIOPIA145
-KENYAFRANCE146
-KENYAGERMANY147
-KENYAINDIA148
-KENYAINDONESIA149
-KENYAIRAN1410
-KENYAIRAQ1411
-KENYAJAPAN1412
-KENYAJORDAN1413
-MOROCCOALGERIA150
-MOROCCOARGENTINA151
-MOROCCOBRAZIL152
-MOROCCOCANADA153
-MOROCCOEGYPT154
-MOROCCOETHIOPIA155
-MOROCCOFRANCE156
-MOROCCOGERMANY157
-MOROCCOINDIA158
-MOROCCOINDONESIA159
-MOROCCOIRAN1510
-MOROCCOIRAQ1511
-MOROCCOJAPAN1512
-MOROCCOJORDAN1513
-MOROCCOKENYA1514
-MOZAMBIQUEALGERIA160
-MOZAMBIQUEARGENTINA161
-MOZAMBIQUEBRAZIL162
-MOZAMBIQUECANADA163
-MOZAMBIQUEEGYPT164
-MOZAMBIQUEETHIOPIA165
-MOZAMBIQUEFRANCE166
-MOZAMBIQUEGERMANY167
-MOZAMBIQUEINDIA168
-MOZAMBIQUEINDONESIA169
-MOZAMBIQUEIRAN1610
-MOZAMBIQUEIRAQ1611
-MOZAMBIQUEJAPAN1612
-MOZAMBIQUEJORDAN1613
-MOZAMBIQUEKENYA1614
-MOZAMBIQUEMOROCCO1615
-PERUALGERIA170
-PERUARGENTINA171
-PERUBRAZIL172
-PERUCANADA173
-PERUEGYPT174
-PERUETHIOPIA175
-PERUFRANCE176
-PERUGERMANY177
-PERUINDIA178
-PERUINDONESIA179
-PERUIRAN1710
-PERUIRAQ1711
-PERUJAPAN1712
-PERUJORDAN1713
-PERUKENYA1714
-PERUMOROCCO1715
-PERUMOZAMBIQUE1716
-ROMANIAALGERIA190
-ROMANIAARGENTINA191
-ROMANIABRAZIL192
-ROMANIACANADA193
-ROMANIACHINA1918
-ROMANIAEGYPT194
-ROMANIAETHIOPIA195
-ROMANIAFRANCE196
-ROMANIAGERMANY197
-ROMANIAINDIA198
-ROMANIAINDONESIA199
-ROMANIAIRAN1910
-ROMANIAIRAQ1911
-ROMANIAJAPAN1912
-ROMANIAJORDAN1913
-ROMANIAKENYA1914
-ROMANIAMOROCCO1915
-ROMANIAMOZAMBIQUE1916
-ROMANIAPERU1917
-RUSSIAALGERIA220
-RUSSIAARGENTINA221
-RUSSIABRAZIL222
-RUSSIACANADA223
-RUSSIACHINA2218
-RUSSIAEGYPT224
-RUSSIAETHIOPIA225
-RUSSIAFRANCE226
-RUSSIAGERMANY227
-RUSSIAINDIA228
-RUSSIAINDONESIA229
-RUSSIAIRAN2210
-RUSSIAIRAQ2211
-RUSSIAJAPAN2212
-RUSSIAJORDAN2213
-RUSSIAKENYA2214
-RUSSIAMOROCCO2215
-RUSSIAMOZAMBIQUE2216
-RUSSIAPERU2217
-RUSSIAROMANIA2219
-RUSSIASAUDI ARABIA2220
-RUSSIAVIETNAM2221
-SAUDI ARABIAALGERIA200
-SAUDI ARABIAARGENTINA201
-SAUDI ARABIABRAZIL202
-SAUDI ARABIACANADA203
-SAUDI ARABIACHINA2018
-SAUDI ARABIAEGYPT204
-SAUDI ARABIAETHIOPIA205
-SAUDI ARABIAFRANCE206
-SAUDI ARABIAGERMANY207
-SAUDI ARABIAINDIA208
-SAUDI ARABIAINDONESIA209
-SAUDI ARABIAIRAN2010
-SAUDI ARABIAIRAQ2011
-SAUDI ARABIAJAPAN2012
-SAUDI ARABIAJORDAN2013
-SAUDI ARABIAKENYA2014
-SAUDI ARABIAMOROCCO2015
-SAUDI ARABIAMOZAMBIQUE2016
-SAUDI ARABIAPERU2017
-SAUDI ARABIAROMANIA2019
-UNITED KINGDOMALGERIA230
-UNITED KINGDOMARGENTINA231
-UNITED KINGDOMBRAZIL232
-UNITED KINGDOMCANADA233
-UNITED KINGDOMCHINA2318
-UNITED KINGDOMEGYPT234
-UNITED KINGDOMETHIOPIA235
-UNITED KINGDOMFRANCE236
-UNITED KINGDOMGERMANY237
-UNITED KINGDOMINDIA238
-UNITED KINGDOMINDONESIA239
-UNITED KINGDOMIRAN2310
-UNITED KINGDOMIRAQ2311
-UNITED KINGDOMJAPAN2312
-UNITED KINGDOMJORDAN2313
-UNITED KINGDOMKENYA2314
-UNITED KINGDOMMOROCCO2315
-UNITED KINGDOMMOZAMBIQUE2316
-UNITED KINGDOMPERU2317
-UNITED KINGDOMROMANIA2319
-UNITED KINGDOMRUSSIA2322
-UNITED KINGDOMSAUDI ARABIA2320
-UNITED KINGDOMVIETNAM2321
-UNITED STATESALGERIA240
-UNITED STATESARGENTINA241
-UNITED STATESBRAZIL242
-UNITED STATESCANADA243
-UNITED STATESCHINA2418
-UNITED STATESEGYPT244
-UNITED STATESETHIOPIA245
-UNITED STATESFRANCE246
-UNITED STATESGERMANY247
-UNITED STATESINDIA248
-UNITED STATESINDONESIA249
-UNITED STATESIRAN2410
-UNITED STATESIRAQ2411
-UNITED STATESJAPAN2412
-UNITED STATESJORDAN2413
-UNITED STATESKENYA2414
-UNITED STATESMOROCCO2415
-UNITED STATESMOZAMBIQUE2416
-UNITED STATESPERU2417
-UNITED STATESROMANIA2419
-UNITED STATESRUSSIA2422
-UNITED STATESSAUDI ARABIA2420
-UNITED STATESUNITED KINGDOM2423
-UNITED STATESVIETNAM2421
-VIETNAMALGERIA210
-VIETNAMARGENTINA211
-VIETNAMBRAZIL212
-VIETNAMCANADA213
-VIETNAMCHINA2118
-VIETNAMEGYPT214
-VIETNAMETHIOPIA215
-VIETNAMFRANCE216
-VIETNAMGERMANY217
-VIETNAMINDIA218
-VIETNAMINDONESIA219
-VIETNAMIRAN2110
-VIETNAMIRAQ2111
-VIETNAMJAPAN2112
-VIETNAMJORDAN2113
-VIETNAMKENYA2114
-VIETNAMMOROCCO2115
-VIETNAMMOZAMBIQUE2116
-VIETNAMPERU2117
-VIETNAMROMANIA2119
-VIETNAMSAUDI ARABIA2120
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u1_gby.result b/hivesterix/src/test/resources/runtimefunctionts/results/u1_gby.result
deleted file mode 100644
index 7efa15a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u1_gby.result
+++ /dev/null
@@ -1,5 +0,0 @@
-05
-15
-25
-35
-45
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u2_gby_external.result b/hivesterix/src/test/resources/runtimefunctionts/results/u2_gby_external.result
deleted file mode 100644
index b30110b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u2_gby_external.result
+++ /dev/null
@@ -1,10 +0,0 @@
-598841.0
-598725.25
-598617.8
-59854.0
-598420.25
-595928.857142857142858
-595829.6
-595734.57142857142857
-595630.0
-595523.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u3_union.result b/hivesterix/src/test/resources/runtimefunctionts/results/u3_union.result
deleted file mode 100644
index e8ec7a2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u3_union.result
+++ /dev/null
@@ -1,9 +0,0 @@
-2 N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ17Supplier#000000001
-181KhUgZegwM3ua7dsYmekYBsK10Supplier#000000009
-489eJ5ksX3ImxJQBvxObC,5Supplier#000000002
-169Sq4bBH2FQEmaFOocY45sRTxo6yuoG17Supplier#000000008
-8Bk7ah4CK8SYQTepEmvMkkgMwg15Supplier#000000004
-10Gcdm2rJRzl5qlTVzc11Supplier#000000005
-6q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV31Supplier#000000003
-14s,4TicNGB4uO6PaSqNBUq23Supplier#000000007
-12tQxuVm7s7CnK14Supplier#000000006
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u4_gby_distinct.result b/hivesterix/src/test/resources/runtimefunctionts/results/u4_gby_distinct.result
deleted file mode 100644
index b30110b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u4_gby_distinct.result
+++ /dev/null
@@ -1,10 +0,0 @@
-598841.0
-598725.25
-598617.8
-59854.0
-598420.25
-595928.857142857142858
-595829.6
-595734.57142857142857
-595630.0
-595523.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u5_gby_global.result b/hivesterix/src/test/resources/runtimefunctionts/results/u5_gby_global.result
deleted file mode 100644
index 8828088..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u5_gby_global.result
+++ /dev/null
@@ -1 +0,0 @@
-152398.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u6_large_card_join.result b/hivesterix/src/test/resources/runtimefunctionts/results/u6_large_card_join.result
deleted file mode 100644
index 82b4857..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u6_large_card_join.result
+++ /dev/null
@@ -1,512 +0,0 @@
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
diff --git a/hyracks/hyracks-api/pom.xml b/hyracks/hyracks-api/pom.xml
index 7778b31..6807f76 100644
--- a/hyracks/hyracks-api/pom.xml
+++ b/hyracks/hyracks-api/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-cli/pom.xml b/hyracks/hyracks-cli/pom.xml
deleted file mode 100644
index a11c28b..0000000
--- a/hyracks/hyracks-cli/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>edu.uci.ics.hyracks</groupId>
-  <artifactId>hyracks-cli</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
-  <name>hyracks-cli</name>
-
-  <parent>
-    <groupId>edu.uci.ics.hyracks</groupId>
-    <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
-  </parent>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.0.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javacc-maven-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <execution>
-            <id>javacc</id>
-            <goals>
-              <goal>javacc</goal>
-            </goals>
-            <configuration>
-              <isStatic>false</isStatic>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>appassembler-maven-plugin</artifactId>
-        <version>1.3</version>
-        <executions>
-          <execution>
-            <configuration>
-              <programs>
-                <program>
-                  <mainClass>edu.uci.ics.hyracks.cli.Main</mainClass>
-                  <name>hyrackscli</name>
-                </program>
-              </programs>
-              <repositoryLayout>flat</repositoryLayout>
-              <repositoryName>lib</repositoryName>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>assemble</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/assembly/binary-assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>jline</groupId>
-  		<artifactId>jline</artifactId>
-  		<version>0.9.94</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>edu.uci.ics.hyracks</groupId>
-  		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
-  		<scope>compile</scope>
-  	</dependency>
-  </dependencies>
-</project>
diff --git a/hyracks/hyracks-cli/src/main/assembly/binary-assembly.xml b/hyracks/hyracks-cli/src/main/assembly/binary-assembly.xml
deleted file mode 100644
index 0500499..0000000
--- a/hyracks/hyracks-cli/src/main/assembly/binary-assembly.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<assembly>
-  <id>binary-assembly</id>
-  <formats>
-    <format>zip</format>
-    <format>dir</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>target/appassembler/bin</directory>
-      <outputDirectory>bin</outputDirectory>
-      <fileMode>0755</fileMode>
-    </fileSet>
-    <fileSet>
-      <directory>target/appassembler/lib</directory>
-      <outputDirectory>lib</outputDirectory>
-    </fileSet>
-  </fileSets>
-</assembly>
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
deleted file mode 100644
index f01c724..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-import java.io.IOException;
-
-import jline.ConsoleReader;
-
-public class CLI {
-    private static final String HYRACKS_PROMPT = "hyracks> ";
-    private static final String HYRAX_CONTINUE_PROMPT = "> ";
-    private final ConsoleReader reader;
-    private final Session session;
-
-    public CLI(String[] args) throws IOException {
-        reader = new ConsoleReader();
-        session = new Session();
-    }
-
-    public void run() throws IOException {
-        boolean eof = false;
-        while (true) {
-            String prompt = HYRACKS_PROMPT;
-            StringBuilder command = new StringBuilder();
-            while (true) {
-                String line = reader.readLine(prompt);
-                if (line == null) {
-                    eof = true;
-                    break;
-                }
-                prompt = HYRAX_CONTINUE_PROMPT;
-                line = line.trim();
-                command.append(line);
-                if ("".equals(line)) {
-                    break;
-                }
-                if (line.endsWith(";")) {
-                    break;
-                }
-            }
-            if (eof) {
-                break;
-            }
-            try {
-                CommandExecutor.execute(session, command.toString());
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java
deleted file mode 100644
index 6bdd136..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-import java.io.StringReader;
-import java.util.List;
-
-import edu.uci.ics.hyracks.cli.commands.Command;
-
-public class CommandExecutor {
-    public static void execute(Session session, String command) throws Exception {
-        CLIParser parser = new CLIParser(new StringReader(command));
-        List<Command> cmds = parser.Commands();
-        for (Command cmd : cmds) {
-            cmd.run(session);
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Main.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Main.java
deleted file mode 100644
index 5f7ef0b..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Main.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-public class Main {
-    public static void main(String[] args) throws Exception {
-        CLI cli = new CLI(args);
-        cli.run();
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java
deleted file mode 100644
index f15b1bb..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-
-public class Session {
-    private IHyracksClientConnection connection;
-
-    public void setConnection(IHyracksClientConnection connection) {
-        this.connection = connection;
-    }
-
-    public IHyracksClientConnection getConnection() {
-        return connection;
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
deleted file mode 100644
index ee5849b..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.cli.Session;
-
-public abstract class Command {
-    public abstract void run(Session session) throws Exception;
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
deleted file mode 100644
index 168280b..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.Session;
-
-public class ConnectCommand extends Command {
-    private String host;
-
-    private int port;
-
-    public ConnectCommand(String hostPortStr) {
-        int idx = hostPortStr.indexOf(':');
-        host = hostPortStr;
-        port = 1098;
-        if (idx != -1) {
-            host = hostPortStr.substring(0, idx);
-            port = Integer.valueOf(hostPortStr.substring(idx + 1));
-        }
-    }
-
-    @Override
-    public void run(Session session) throws Exception {
-        System.err.println("Connecting to host: " + host + ", port: " + port);
-        IHyracksClientConnection conn = new HyracksConnection(host, port);
-        session.setConnection(conn);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
deleted file mode 100644
index 7b35ee5..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import java.io.File;
-
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.Session;
-
-public class CreateApplicationCommand extends Command {
-    private String appName;
-
-    private File harFile;
-
-    public CreateApplicationCommand(String appName, File harFile) {
-        this.appName = appName;
-        this.harFile = harFile;
-    }
-
-    @Override
-    public void run(Session session) throws Exception {
-        IHyracksClientConnection hcc = session.getConnection();
-        if (hcc == null) {
-            throw new RuntimeException("Not connected to Hyracks Cluster Controller");
-        }
-        System.err.println("Creating application: " + appName + " with har: " + harFile.getAbsolutePath());
-        hcc.createApplication(appName, harFile);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
deleted file mode 100644
index 03aed1e..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.Session;
-
-public class DestroyApplicationCommand extends Command {
-    private String appName;
-
-    public DestroyApplicationCommand(String appName) {
-        this.appName = appName;
-    }
-
-    @Override
-    public void run(Session session) throws Exception {
-        IHyracksClientConnection hcc = session.getConnection();
-        if (hcc == null) {
-            throw new RuntimeException("Not connected to Hyracks Cluster Controller");
-        }
-        System.err.println("Destroying application: " + appName);
-        hcc.destroyApplication(appName);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
deleted file mode 100644
index facf0f1..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.cli.Session;
-
-public class DisconnectCommand extends Command {
-    @Override
-    public void run(Session session) throws Exception {
-        System.err.println("Disconnecting...");
-        session.setConnection(null);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/javacc/cli.jj b/hyracks/hyracks-cli/src/main/javacc/cli.jj
deleted file mode 100644
index 0f386cb..0000000
--- a/hyracks/hyracks-cli/src/main/javacc/cli.jj
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-options {
-    STATIC = false;
-    IGNORE_CASE = true;
-}
-
-PARSER_BEGIN(CLIParser)
-
-package edu.uci.ics.hyracks.cli;
-
-import java.io.*;
-import java.util.*;
-import edu.uci.ics.hyracks.cli.commands.*;
-
-class CLIParser {
-    private String unquote(String s) {
-        return s.substring(1, s.length() - 1);
-    }
-}
-
-PARSER_END(CLIParser)
-
-List<Command> Commands():
-{
-    List<Command> result = new ArrayList<Command>();
-    Command cmd = null;
-} {
-    (
-        (
-            cmd = ConnectCommand()
-            | cmd = DisconnectCommand()
-            | cmd = CreateApplicationCommand()
-            | cmd = DestroyApplicationCommand()
-        ) ";" {
-            result.add(cmd);
-        }
-    )* <EOF> {
-        return result;
-    }
-}
-
-protected Command ConnectCommand():
-{
-    Token t;
-} {
-    "connect" "to" t = <StringLiteral> {
-        return new ConnectCommand(unquote(t.image));
-    }
-}
-
-protected Command CreateApplicationCommand():
-{
-    Token a;
-    Token f;
-} {
-    "create" "application" a = <Identifier> f = <StringLiteral> {
-        return new CreateApplicationCommand(a.image, new File(unquote(f.image)));
-    }
-}
-
-protected Command DestroyApplicationCommand():
-{
-    Token a;
-} {
-    "destroy" "application" a = <Identifier> {
-        return new DestroyApplicationCommand(a.image);
-    }
-}
-
-protected Command DisconnectCommand():
-{
-    Token t;
-} {
-    "disconnect" {
-        return new DisconnectCommand();
-    }
-}
-
-<DEFAULT>
-TOKEN : {
-    <StringLiteral: (("\"" (~["\"", "\n"])* "\"") | ("'" (~["'", "\n"])* "'"))>
-    | <Identifier: <Letter> (<Letter> | <Digit> | <Extender>)*>
-}
-
-SPECIAL_TOKEN :
-{
- < WhitespaceChar : ["\t", "\r", "\n", " "] >
-}
-
-TOKEN :
-{
- < #Letter : (<BaseChar> | <Ideographic>) >
-}
-
-TOKEN :
-{
- < #BaseChar : ["\u0041" - "\u005a", "\u0061" - "\u007a", "\u00c0" - "\u00d6", "\u00d8" - "\u00f6", "\u00f8" - "\u00ff", "\u0100" - "\u0131", "\u0134" - "\u013e", "\u0141" - "\u0148", "\u014a" - "\u017e", "\u0180" - "\u01c3", "\u01cd" - "\u01f0", "\u01f4" - "\u01f5", "\u01fa" - "\u0217", "\u0250" - "\u02a8", "\u02bb" - "\u02c1", "\u0386", "\u0388" - "\u038a", "\u038c", "\u038e" - "\u03a1", "\u03a3" - "\u03ce", "\u03d0" - "\u03d6", "\u03da", "\u03dc", "\u03de", "\u03e0", "\u03e2" - "\u03f3", "\u0401" - "\u040c", "\u040e" - "\u044f", "\u0451" - "\u045c", "\u045e" - "\u0481", "\u0490" - "\u04c4", "\u04c7" - "\u04c8", "\u04cb" - "\u04cc", "\u04d0" - "\u04eb", "\u04ee" - "\u04f5", "\u04f8" - "\u04f9", "\u0531" - "\u0556", "\u0559", "\u0561" - "\u0586", "\u05d0" - "\u05ea", "\u05f0" - "\u05f2", "\u0621" - "\u063a", "\u0641" - "\u064a", "\u0671" - "\u06b7", "\u06ba" - "\u06be", "\u06c0" - "\u06ce", "\u06d0" - "\u06d3", "\u06d5", "\u06e5" - "\u06e6", "\u0905" - "\u0939", "\u093d", "\u0958" - "\u0961", "\u0985" - "\u098c", "\u098f" - "\u0990", "\u0993" - "\u09a8", "\u09aa" - "\u09b0", "\u09b2", "\u09b6" - "\u09b9", "\u09dc" - "\u09dd", "\u09df" - "\u09e1", "\u09f0" - "\u09f1", "\u0a05" - "\u0a0a", "\u0a0f" - "\u0a10", "\u0a13" - "\u0a28", "\u0a2a" - "\u0a30", "\u0a32" - "\u0a33", "\u0a35" - "\u0a36", "\u0a38" - "\u0a39", "\u0a59" - "\u0a5c", "\u0a5e", "\u0a72" - "\u0a74", "\u0a85" - "\u0a8b", "\u0a8d", "\u0a8f" - "\u0a91", "\u0a93" - "\u0aa8", "\u0aaa" - "\u0ab0", "\u0ab2" - "\u0ab3", "\u0ab5" - "\u0ab9", "\u0abd", "\u0ae0", "\u0b05" - "\u0b0c", "\u0b0f" - "\u0b10", "\u0b13" - "\u0b28", "\u0b2a" - "\u0b30", "\u0b32" - "\u0b33", "\u0b36" - "\u0b39", "\u0b3d", "\u0b5c" - "\u0b5d", "\u0b5f" - "\u0b61", "\u0b85" - "\u0b8a", "\u0b8e" - "\u0b90", "\u0b92" - "\u0b95", "\u0b99" - "\u0b9a", "\u0b9c", "\u0b9e" - "\u0b9f", "\u0ba3" - "\u0ba4", "\u0ba8" - "\u0baa", "\u0bae" - "\u0bb5", "\u0bb7" - "\u0bb9", "\u0c05" - "\u0c0c", "\u0c0e" - "\u0c10", "\u0c12" - "\u0c28", "\u0c2a" - "\u0c33", "\u0c35" - "\u0c39", "\u0c60" - "\u0c61", "\u0c85" - "\u0c8c", "\u0c8e" - "\u0c90", "\u0c92" - "\u0ca8", "\u0caa" - "\u0cb3", "\u0cb5" - "\u0cb9", "\u0cde", "\u0ce0" - "\u0ce1", "\u0d05" - "\u0d0c", "\u0d0e" - "\u0d10", "\u0d12" - "\u0d28", "\u0d2a" - "\u0d39", "\u0d60" - "\u0d61", "\u0e01" - "\u0e2e", "\u0e30", "\u0e32" - "\u0e33", "\u0e40" - "\u0e45", "\u0e81" - "\u0e82", "\u0e84", "\u0e87" - "\u0e88", "\u0e8a", "\u0e8d", "\u0e94" - "\u0e97", "\u0e99" - "\u0e9f", "\u0ea1" - "\u0ea3", "\u0ea5", "\u0ea7", "\u0eaa" - "\u0eab", "\u0ead" - "\u0eae", "\u0eb0", "\u0eb2" - "\u0eb3", "\u0ebd", "\u0ec0" - "\u0ec4", "\u0f40" - "\u0f47", "\u0f49" - "\u0f69", "\u10a0" - "\u10c5", "\u10d0" - "\u10f6", "\u1100", "\u1102" - "\u1103", "\u1105" - "\u1107", "\u1109", "\u110b" - "\u110c", "\u110e" - "\u1112", "\u113c", "\u113e", "\u1140", "\u114c", "\u114e", "\u1150", "\u1154" - "\u1155", "\u1159", "\u115f" - "\u1161", "\u1163", "\u1165", "\u1167", "\u1169", "\u116d" - "\u116e", "\u1172" - "\u1173", "\u1175", "\u119e", "\u11a8", "\u11ab", "\u11ae" - "\u11af", "\u11b7" - "\u11b8", "\u11ba", "\u11bc" - "\u11c2", "\u11eb", "\u11f0", "\u11f9", "\u1e00" - "\u1e9b", "\u1ea0" - "\u1ef9", "\u1f00" - "\u1f15", "\u1f18" - "\u1f1d", "\u1f20" - "\u1f45", "\u1f48" - "\u1f4d", "\u1f50" - "\u1f57", "\u1f59", "\u1f5b", "\u1f5d", "\u1f5f" - "\u1f7d", "\u1f80" - "\u1fb4", "\u1fb6" - "\u1fbc", "\u1fbe", "\u1fc2" - "\u1fc4", "\u1fc6" - "\u1fcc", "\u1fd0" - "\u1fd3", "\u1fd6" - "\u1fdb", "\u1fe0" - "\u1fec", "\u1ff2" - "\u1ff4", "\u1ff6" - "\u1ffc", "\u2126", "\u212a" - "\u212b", "\u212e", "\u2180" - "\u2182", "\u3041" - "\u3094", "\u30a1" - "\u30fa", "\u3105" - "\u312c", "\uac00" - "\ud7a3"] >
-}
-
-TOKEN :
-{
- < #Ideographic : ["\u4e00" - "\u9fa5", "\u3007", "\u3021" - "\u3029"] >
-}
-
-TOKEN :
-{
- < #CombiningChar : ["\u0300" - "\u0345", "\u0360" - "\u0361", "\u0483" - "\u0486", "\u0591" - "\u05a1", "\u05a3" - "\u05b9", "\u05bb" - "\u05bd", "\u05bf", "\u05c1" - "\u05c2", "\u05c4", "\u064b" - "\u0652", "\u0670", "\u06d6" - "\u06dc", "\u06dd" - "\u06df", "\u06e0" - "\u06e4", "\u06e7" - "\u06e8", "\u06ea" - "\u06ed", "\u0901" - "\u0903", "\u093c", "\u093e" - "\u094c", "\u094d", "\u0951" - "\u0954", "\u0962" - "\u0963", "\u0981" - "\u0983", "\u09bc", "\u09be", "\u09bf", "\u09c0" - "\u09c4", "\u09c7" - "\u09c8", "\u09cb" - "\u09cd", "\u09d7", "\u09e2" - "\u09e3", "\u0a02", "\u0a3c", "\u0a3e", "\u0a3f", "\u0a40" - "\u0a42", "\u0a47" - "\u0a48", "\u0a4b" - "\u0a4d", "\u0a70" - "\u0a71", "\u0a81" - "\u0a83", "\u0abc", "\u0abe" - "\u0ac5", "\u0ac7" - "\u0ac9", "\u0acb" - "\u0acd", "\u0b01" - "\u0b03", "\u0b3c", "\u0b3e" - "\u0b43", "\u0b47" - "\u0b48", "\u0b4b" - "\u0b4d", "\u0b56" - "\u0b57", "\u0b82" - "\u0b83", "\u0bbe" - "\u0bc2", "\u0bc6" - "\u0bc8", "\u0bca" - "\u0bcd", "\u0bd7", "\u0c01" - "\u0c03", "\u0c3e" - "\u0c44", "\u0c46" - "\u0c48", "\u0c4a" - "\u0c4d", "\u0c55" - "\u0c56", "\u0c82" - "\u0c83", "\u0cbe" - "\u0cc4", "\u0cc6" - "\u0cc8", "\u0cca" - "\u0ccd", "\u0cd5" - "\u0cd6", "\u0d02" - "\u0d03", "\u0d3e" - "\u0d43", "\u0d46" - "\u0d48", "\u0d4a" - "\u0d4d", "\u0d57", "\u0e31", "\u0e34" - "\u0e3a", "\u0e47" - "\u0e4e", "\u0eb1", "\u0eb4" - "\u0eb9", "\u0ebb" - "\u0ebc", "\u0ec8" - "\u0ecd", "\u0f18" - "\u0f19", "\u0f35", "\u0f37", "\u0f39", "\u0f3e", "\u0f3f", "\u0f71" - "\u0f84", "\u0f86" - "\u0f8b", "\u0f90" - "\u0f95", "\u0f97", "\u0f99" - "\u0fad", "\u0fb1" - "\u0fb7", "\u0fb9", "\u20d0" - "\u20dc", "\u20e1", "\u302a" - "\u302f", "\u3099", "\u309a"] >
-}
-
-TOKEN :
-{
- < #Digit : ["\u0030" - "\u0039", "\u0660" - "\u0669", "\u06f0" - "\u06f9", "\u0966" - "\u096f", "\u09e6" - "\u09ef", "\u0a66" - "\u0a6f", "\u0ae6" - "\u0aef", "\u0b66" - "\u0b6f", "\u0be7" - "\u0bef", "\u0c66" - "\u0c6f", "\u0ce6" - "\u0cef", "\u0d66" - "\u0d6f", "\u0e50" - "\u0e59", "\u0ed0" - "\u0ed9", "\u0f20" - "\u0f29"] >
-}
-
-TOKEN :
-{
- < #Extender : ["\u00b7", "\u02d0", "\u02d1", "\u0387", "\u0640", "\u0e46", "\u0ec6", "\u3005", "\u3031" - "\u3035", "\u309d" - "\u309e", "\u30fc" - "\u30fe"] >
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-control/hyracks-control-cc/pom.xml b/hyracks/hyracks-control/hyracks-control-cc/pom.xml
index 934dbb2..d644673 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-cc/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js b/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
index 3fc46ff..8e94269 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
@@ -127,7 +127,7 @@
                 netSignalingReadBWArray.push([ i, computeRate(netSignalingBytesRead, rrdPtr) ]);
                 netSignalingReadBWArray.push([ i, computeRate(datasetNetSignalingBytesRead, rrdPtr) ]);
                 netSignalingWriteBWArray.push([ i, computeRate(netSignalingBytesWritten, rrdPtr) ]);
-                netSignalingWriteBWArray.push([ i, computeRate(etSignalingBytesWritten, rrdPtr) ]);
+                netSignalingWriteBWArray.push([ i, computeRate(netSignalingBytesWritten, rrdPtr) ]);
                 ipcMessageSendRateArray.push([ i, computeRate(ipcMessagesSent, rrdPtr) ]);
                 ipcMessageBytesSendRateArray.push([ i, computeRate(ipcMessageBytesSent, rrdPtr) ]);
                 ipcMessageReceiveRateArray.push([ i, computeRate(ipcMessagesReceived, rrdPtr) ]);
@@ -237,4 +237,4 @@
     }
 
     fetchData();
-});
\ No newline at end of file
+});
diff --git a/hyracks/hyracks-control/hyracks-control-common/pom.xml b/hyracks/hyracks-control/hyracks-control-common/pom.xml
index 08f013d..ce1298e 100644
--- a/hyracks/hyracks-control/hyracks-control-common/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-common/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java
index 83c0f98..d1577bc 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java
@@ -81,7 +81,8 @@
         cList.add(String.valueOf(maxMemory));
         cList.add("-result-manager-memory");
         cList.add(String.valueOf(resultManagerMemory));
-        if (appNCMainClass != null) {
+
+       if (appNCMainClass != null) {
             cList.add("-app-nc-main-class");
             cList.add(appNCMainClass);
         }
diff --git a/hyracks/hyracks-control/hyracks-control-nc/pom.xml b/hyracks/hyracks-control/hyracks-control-nc/pom.xml
index 24748b3..e163d2b 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-nc/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-data/hyracks-data-std/pom.xml b/hyracks/hyracks-data/hyracks-data-std/pom.xml
index d676088..8f5f04e 100644
--- a/hyracks/hyracks-data/hyracks-data-std/pom.xml
+++ b/hyracks/hyracks-data/hyracks-data-std/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-dataflow-common/pom.xml b/hyracks/hyracks-dataflow-common/pom.xml
index 34cb096..1a2950b 100644
--- a/hyracks/hyracks-dataflow-common/pom.xml
+++ b/hyracks/hyracks-dataflow-common/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-dataflow-hadoop/pom.xml b/hyracks/hyracks-dataflow-hadoop/pom.xml
index 57b59c7..f5135f8 100644
--- a/hyracks/hyracks-dataflow-hadoop/pom.xml
+++ b/hyracks/hyracks-dataflow-hadoop/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
     </plugins>
diff --git a/hyracks/hyracks-dataflow-std/pom.xml b/hyracks/hyracks-dataflow-std/pom.xml
index 7e1a9a5..2cf0fdc 100644
--- a/hyracks/hyracks-dataflow-std/pom.xml
+++ b/hyracks/hyracks-dataflow-std/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-dist/pom.xml b/hyracks/hyracks-dist/pom.xml
index c86c4e6..58a4b1c 100755
--- a/hyracks/hyracks-dist/pom.xml
+++ b/hyracks/hyracks-dist/pom.xml
@@ -23,8 +23,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 				</configuration>
 			</plugin>
 			<plugin>
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml b/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
index ebca323..f941a5b 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
@@ -37,8 +37,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml b/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
index ddb5b39..eb651ce 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
@@ -41,8 +41,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf
deleted file mode 100644
index 3669616..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-clusterControllerHost=localhost
-fs.default.name=file:///
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt
deleted file mode 100644
index c4c3130..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt
+++ /dev/null
@@ -1,13052 +0,0 @@
-﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-
-Title: The Adventures of Sherlock Holmes
-
-Author: Arthur Conan Doyle
-
-Posting Date: April 18, 2011 [EBook #1661]
-First Posted: November 29, 2002
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-
-
-
-
-
-
-
-
-THE ADVENTURES OF SHERLOCK HOLMES
-
-by
-
-SIR ARTHUR CONAN DOYLE
-
-
-
-   I. A Scandal in Bohemia
-  II. The Red-headed League
- III. A Case of Identity
-  IV. The Boscombe Valley Mystery
-   V. The Five Orange Pips
-  VI. The Man with the Twisted Lip
- VII. The Adventure of the Blue Carbuncle
-VIII. The Adventure of the Speckled Band
-  IX. The Adventure of the Engineer's Thumb
-   X. The Adventure of the Noble Bachelor
-  XI. The Adventure of the Beryl Coronet
- XII. The Adventure of the Copper Beeches
-
-
-
-
-ADVENTURE I. A SCANDAL IN BOHEMIA
-
-I.
-
-To Sherlock Holmes she is always THE woman. I have seldom heard
-him mention her under any other name. In his eyes she eclipses
-and predominates the whole of her sex. It was not that he felt
-any emotion akin to love for Irene Adler. All emotions, and that
-one particularly, were abhorrent to his cold, precise but
-admirably balanced mind. He was, I take it, the most perfect
-reasoning and observing machine that the world has seen, but as a
-lover he would have placed himself in a false position. He never
-spoke of the softer passions, save with a gibe and a sneer. They
-were admirable things for the observer--excellent for drawing the
-veil from men's motives and actions. But for the trained reasoner
-to admit such intrusions into his own delicate and finely
-adjusted temperament was to introduce a distracting factor which
-might throw a doubt upon all his mental results. Grit in a
-sensitive instrument, or a crack in one of his own high-power
-lenses, would not be more disturbing than a strong emotion in a
-nature such as his. And yet there was but one woman to him, and
-that woman was the late Irene Adler, of dubious and questionable
-memory.
-
-I had seen little of Holmes lately. My marriage had drifted us
-away from each other. My own complete happiness, and the
-home-centred interests which rise up around the man who first
-finds himself master of his own establishment, were sufficient to
-absorb all my attention, while Holmes, who loathed every form of
-society with his whole Bohemian soul, remained in our lodgings in
-Baker Street, buried among his old books, and alternating from
-week to week between cocaine and ambition, the drowsiness of the
-drug, and the fierce energy of his own keen nature. He was still,
-as ever, deeply attracted by the study of crime, and occupied his
-immense faculties and extraordinary powers of observation in
-following out those clues, and clearing up those mysteries which
-had been abandoned as hopeless by the official police. From time
-to time I heard some vague account of his doings: of his summons
-to Odessa in the case of the Trepoff murder, of his clearing up
-of the singular tragedy of the Atkinson brothers at Trincomalee,
-and finally of the mission which he had accomplished so
-delicately and successfully for the reigning family of Holland.
-Beyond these signs of his activity, however, which I merely
-shared with all the readers of the daily press, I knew little of
-my former friend and companion.
-
-One night--it was on the twentieth of March, 1888--I was
-returning from a journey to a patient (for I had now returned to
-civil practice), when my way led me through Baker Street. As I
-passed the well-remembered door, which must always be associated
-in my mind with my wooing, and with the dark incidents of the
-Study in Scarlet, I was seized with a keen desire to see Holmes
-again, and to know how he was employing his extraordinary powers.
-His rooms were brilliantly lit, and, even as I looked up, I saw
-his tall, spare figure pass twice in a dark silhouette against
-the blind. He was pacing the room swiftly, eagerly, with his head
-sunk upon his chest and his hands clasped behind him. To me, who
-knew his every mood and habit, his attitude and manner told their
-own story. He was at work again. He had risen out of his
-drug-created dreams and was hot upon the scent of some new
-problem. I rang the bell and was shown up to the chamber which
-had formerly been in part my own.
-
-His manner was not effusive. It seldom was; but he was glad, I
-think, to see me. With hardly a word spoken, but with a kindly
-eye, he waved me to an armchair, threw across his case of cigars,
-and indicated a spirit case and a gasogene in the corner. Then he
-stood before the fire and looked me over in his singular
-introspective fashion.
-
-"Wedlock suits you," he remarked. "I think, Watson, that you have
-put on seven and a half pounds since I saw you."
-
-"Seven!" I answered.
-
-"Indeed, I should have thought a little more. Just a trifle more,
-I fancy, Watson. And in practice again, I observe. You did not
-tell me that you intended to go into harness."
-
-"Then, how do you know?"
-
-"I see it, I deduce it. How do I know that you have been getting
-yourself very wet lately, and that you have a most clumsy and
-careless servant girl?"
-
-"My dear Holmes," said I, "this is too much. You would certainly
-have been burned, had you lived a few centuries ago. It is true
-that I had a country walk on Thursday and came home in a dreadful
-mess, but as I have changed my clothes I can't imagine how you
-deduce it. As to Mary Jane, she is incorrigible, and my wife has
-given her notice, but there, again, I fail to see how you work it
-out."
-
-He chuckled to himself and rubbed his long, nervous hands
-together.
-
-"It is simplicity itself," said he; "my eyes tell me that on the
-inside of your left shoe, just where the firelight strikes it,
-the leather is scored by six almost parallel cuts. Obviously they
-have been caused by someone who has very carelessly scraped round
-the edges of the sole in order to remove crusted mud from it.
-Hence, you see, my double deduction that you had been out in vile
-weather, and that you had a particularly malignant boot-slitting
-specimen of the London slavey. As to your practice, if a
-gentleman walks into my rooms smelling of iodoform, with a black
-mark of nitrate of silver upon his right forefinger, and a bulge
-on the right side of his top-hat to show where he has secreted
-his stethoscope, I must be dull, indeed, if I do not pronounce
-him to be an active member of the medical profession."
-
-I could not help laughing at the ease with which he explained his
-process of deduction. "When I hear you give your reasons," I
-remarked, "the thing always appears to me to be so ridiculously
-simple that I could easily do it myself, though at each
-successive instance of your reasoning I am baffled until you
-explain your process. And yet I believe that my eyes are as good
-as yours."
-
-"Quite so," he answered, lighting a cigarette, and throwing
-himself down into an armchair. "You see, but you do not observe.
-The distinction is clear. For example, you have frequently seen
-the steps which lead up from the hall to this room."
-
-"Frequently."
-
-"How often?"
-
-"Well, some hundreds of times."
-
-"Then how many are there?"
-
-"How many? I don't know."
-
-"Quite so! You have not observed. And yet you have seen. That is
-just my point. Now, I know that there are seventeen steps,
-because I have both seen and observed. By-the-way, since you are
-interested in these little problems, and since you are good
-enough to chronicle one or two of my trifling experiences, you
-may be interested in this." He threw over a sheet of thick,
-pink-tinted note-paper which had been lying open upon the table.
-"It came by the last post," said he. "Read it aloud."
-
-The note was undated, and without either signature or address.
-
-"There will call upon you to-night, at a quarter to eight
-o'clock," it said, "a gentleman who desires to consult you upon a
-matter of the very deepest moment. Your recent services to one of
-the royal houses of Europe have shown that you are one who may
-safely be trusted with matters which are of an importance which
-can hardly be exaggerated. This account of you we have from all
-quarters received. Be in your chamber then at that hour, and do
-not take it amiss if your visitor wear a mask."
-
-"This is indeed a mystery," I remarked. "What do you imagine that
-it means?"
-
-"I have no data yet. It is a capital mistake to theorize before
-one has data. Insensibly one begins to twist facts to suit
-theories, instead of theories to suit facts. But the note itself.
-What do you deduce from it?"
-
-I carefully examined the writing, and the paper upon which it was
-written.
-
-"The man who wrote it was presumably well to do," I remarked,
-endeavouring to imitate my companion's processes. "Such paper
-could not be bought under half a crown a packet. It is peculiarly
-strong and stiff."
-
-"Peculiar--that is the very word," said Holmes. "It is not an
-English paper at all. Hold it up to the light."
-
-I did so, and saw a large "E" with a small "g," a "P," and a
-large "G" with a small "t" woven into the texture of the paper.
-
-"What do you make of that?" asked Holmes.
-
-"The name of the maker, no doubt; or his monogram, rather."
-
-"Not at all. The 'G' with the small 't' stands for
-'Gesellschaft,' which is the German for 'Company.' It is a
-customary contraction like our 'Co.' 'P,' of course, stands for
-'Papier.' Now for the 'Eg.' Let us glance at our Continental
-Gazetteer." He took down a heavy brown volume from his shelves.
-"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
-country--in Bohemia, not far from Carlsbad. 'Remarkable as being
-the scene of the death of Wallenstein, and for its numerous
-glass-factories and paper-mills.' Ha, ha, my boy, what do you
-make of that?" His eyes sparkled, and he sent up a great blue
-triumphant cloud from his cigarette.
-
-"The paper was made in Bohemia," I said.
-
-"Precisely. And the man who wrote the note is a German. Do you
-note the peculiar construction of the sentence--'This account of
-you we have from all quarters received.' A Frenchman or Russian
-could not have written that. It is the German who is so
-uncourteous to his verbs. It only remains, therefore, to discover
-what is wanted by this German who writes upon Bohemian paper and
-prefers wearing a mask to showing his face. And here he comes, if
-I am not mistaken, to resolve all our doubts."
-
-As he spoke there was the sharp sound of horses' hoofs and
-grating wheels against the curb, followed by a sharp pull at the
-bell. Holmes whistled.
-
-"A pair, by the sound," said he. "Yes," he continued, glancing
-out of the window. "A nice little brougham and a pair of
-beauties. A hundred and fifty guineas apiece. There's money in
-this case, Watson, if there is nothing else."
-
-"I think that I had better go, Holmes."
-
-"Not a bit, Doctor. Stay where you are. I am lost without my
-Boswell. And this promises to be interesting. It would be a pity
-to miss it."
-
-"But your client--"
-
-"Never mind him. I may want your help, and so may he. Here he
-comes. Sit down in that armchair, Doctor, and give us your best
-attention."
-
-A slow and heavy step, which had been heard upon the stairs and
-in the passage, paused immediately outside the door. Then there
-was a loud and authoritative tap.
-
-"Come in!" said Holmes.
-
-A man entered who could hardly have been less than six feet six
-inches in height, with the chest and limbs of a Hercules. His
-dress was rich with a richness which would, in England, be looked
-upon as akin to bad taste. Heavy bands of astrakhan were slashed
-across the sleeves and fronts of his double-breasted coat, while
-the deep blue cloak which was thrown over his shoulders was lined
-with flame-coloured silk and secured at the neck with a brooch
-which consisted of a single flaming beryl. Boots which extended
-halfway up his calves, and which were trimmed at the tops with
-rich brown fur, completed the impression of barbaric opulence
-which was suggested by his whole appearance. He carried a
-broad-brimmed hat in his hand, while he wore across the upper
-part of his face, extending down past the cheekbones, a black
-vizard mask, which he had apparently adjusted that very moment,
-for his hand was still raised to it as he entered. From the lower
-part of the face he appeared to be a man of strong character,
-with a thick, hanging lip, and a long, straight chin suggestive
-of resolution pushed to the length of obstinacy.
-
-"You had my note?" he asked with a deep harsh voice and a
-strongly marked German accent. "I told you that I would call." He
-looked from one to the other of us, as if uncertain which to
-address.
-
-"Pray take a seat," said Holmes. "This is my friend and
-colleague, Dr. Watson, who is occasionally good enough to help me
-in my cases. Whom have I the honour to address?"
-
-"You may address me as the Count Von Kramm, a Bohemian nobleman.
-I understand that this gentleman, your friend, is a man of honour
-and discretion, whom I may trust with a matter of the most
-extreme importance. If not, I should much prefer to communicate
-with you alone."
-
-I rose to go, but Holmes caught me by the wrist and pushed me
-back into my chair. "It is both, or none," said he. "You may say
-before this gentleman anything which you may say to me."
-
-The Count shrugged his broad shoulders. "Then I must begin," said
-he, "by binding you both to absolute secrecy for two years; at
-the end of that time the matter will be of no importance. At
-present it is not too much to say that it is of such weight it
-may have an influence upon European history."
-
-"I promise," said Holmes.
-
-"And I."
-
-"You will excuse this mask," continued our strange visitor. "The
-august person who employs me wishes his agent to be unknown to
-you, and I may confess at once that the title by which I have
-just called myself is not exactly my own."
-
-"I was aware of it," said Holmes dryly.
-
-"The circumstances are of great delicacy, and every precaution
-has to be taken to quench what might grow to be an immense
-scandal and seriously compromise one of the reigning families of
-Europe. To speak plainly, the matter implicates the great House
-of Ormstein, hereditary kings of Bohemia."
-
-"I was also aware of that," murmured Holmes, settling himself
-down in his armchair and closing his eyes.
-
-Our visitor glanced with some apparent surprise at the languid,
-lounging figure of the man who had been no doubt depicted to him
-as the most incisive reasoner and most energetic agent in Europe.
-Holmes slowly reopened his eyes and looked impatiently at his
-gigantic client.
-
-"If your Majesty would condescend to state your case," he
-remarked, "I should be better able to advise you."
-
-The man sprang from his chair and paced up and down the room in
-uncontrollable agitation. Then, with a gesture of desperation, he
-tore the mask from his face and hurled it upon the ground. "You
-are right," he cried; "I am the King. Why should I attempt to
-conceal it?"
-
-"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
-before I was aware that I was addressing Wilhelm Gottsreich
-Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
-hereditary King of Bohemia."
-
-"But you can understand," said our strange visitor, sitting down
-once more and passing his hand over his high white forehead, "you
-can understand that I am not accustomed to doing such business in
-my own person. Yet the matter was so delicate that I could not
-confide it to an agent without putting myself in his power. I
-have come incognito from Prague for the purpose of consulting
-you."
-
-"Then, pray consult," said Holmes, shutting his eyes once more.
-
-"The facts are briefly these: Some five years ago, during a
-lengthy visit to Warsaw, I made the acquaintance of the well-known
-adventuress, Irene Adler. The name is no doubt familiar to you."
-
-"Kindly look her up in my index, Doctor," murmured Holmes without
-opening his eyes. For many years he had adopted a system of
-docketing all paragraphs concerning men and things, so that it
-was difficult to name a subject or a person on which he could not
-at once furnish information. In this case I found her biography
-sandwiched in between that of a Hebrew rabbi and that of a
-staff-commander who had written a monograph upon the deep-sea
-fishes.
-
-"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
-1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
-of Warsaw--yes! Retired from operatic stage--ha! Living in
-London--quite so! Your Majesty, as I understand, became entangled
-with this young person, wrote her some compromising letters, and
-is now desirous of getting those letters back."
-
-"Precisely so. But how--"
-
-"Was there a secret marriage?"
-
-"None."
-
-"No legal papers or certificates?"
-
-"None."
-
-"Then I fail to follow your Majesty. If this young person should
-produce her letters for blackmailing or other purposes, how is
-she to prove their authenticity?"
-
-"There is the writing."
-
-"Pooh, pooh! Forgery."
-
-"My private note-paper."
-
-"Stolen."
-
-"My own seal."
-
-"Imitated."
-
-"My photograph."
-
-"Bought."
-
-"We were both in the photograph."
-
-"Oh, dear! That is very bad! Your Majesty has indeed committed an
-indiscretion."
-
-"I was mad--insane."
-
-"You have compromised yourself seriously."
-
-"I was only Crown Prince then. I was young. I am but thirty now."
-
-"It must be recovered."
-
-"We have tried and failed."
-
-"Your Majesty must pay. It must be bought."
-
-"She will not sell."
-
-"Stolen, then."
-
-"Five attempts have been made. Twice burglars in my pay ransacked
-her house. Once we diverted her luggage when she travelled. Twice
-she has been waylaid. There has been no result."
-
-"No sign of it?"
-
-"Absolutely none."
-
-Holmes laughed. "It is quite a pretty little problem," said he.
-
-"But a very serious one to me," returned the King reproachfully.
-
-"Very, indeed. And what does she propose to do with the
-photograph?"
-
-"To ruin me."
-
-"But how?"
-
-"I am about to be married."
-
-"So I have heard."
-
-"To Clotilde Lothman von Saxe-Meningen, second daughter of the
-King of Scandinavia. You may know the strict principles of her
-family. She is herself the very soul of delicacy. A shadow of a
-doubt as to my conduct would bring the matter to an end."
-
-"And Irene Adler?"
-
-"Threatens to send them the photograph. And she will do it. I
-know that she will do it. You do not know her, but she has a soul
-of steel. She has the face of the most beautiful of women, and
-the mind of the most resolute of men. Rather than I should marry
-another woman, there are no lengths to which she would not
-go--none."
-
-"You are sure that she has not sent it yet?"
-
-"I am sure."
-
-"And why?"
-
-"Because she has said that she would send it on the day when the
-betrothal was publicly proclaimed. That will be next Monday."
-
-"Oh, then we have three days yet," said Holmes with a yawn. "That
-is very fortunate, as I have one or two matters of importance to
-look into just at present. Your Majesty will, of course, stay in
-London for the present?"
-
-"Certainly. You will find me at the Langham under the name of the
-Count Von Kramm."
-
-"Then I shall drop you a line to let you know how we progress."
-
-"Pray do so. I shall be all anxiety."
-
-"Then, as to money?"
-
-"You have carte blanche."
-
-"Absolutely?"
-
-"I tell you that I would give one of the provinces of my kingdom
-to have that photograph."
-
-"And for present expenses?"
-
-The King took a heavy chamois leather bag from under his cloak
-and laid it on the table.
-
-"There are three hundred pounds in gold and seven hundred in
-notes," he said.
-
-Holmes scribbled a receipt upon a sheet of his note-book and
-handed it to him.
-
-"And Mademoiselle's address?" he asked.
-
-"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
-
-Holmes took a note of it. "One other question," said he. "Was the
-photograph a cabinet?"
-
-"It was."
-
-"Then, good-night, your Majesty, and I trust that we shall soon
-have some good news for you. And good-night, Watson," he added,
-as the wheels of the royal brougham rolled down the street. "If
-you will be good enough to call to-morrow afternoon at three
-o'clock I should like to chat this little matter over with you."
-
-
-II.
-
-At three o'clock precisely I was at Baker Street, but Holmes had
-not yet returned. The landlady informed me that he had left the
-house shortly after eight o'clock in the morning. I sat down
-beside the fire, however, with the intention of awaiting him,
-however long he might be. I was already deeply interested in his
-inquiry, for, though it was surrounded by none of the grim and
-strange features which were associated with the two crimes which
-I have already recorded, still, the nature of the case and the
-exalted station of his client gave it a character of its own.
-Indeed, apart from the nature of the investigation which my
-friend had on hand, there was something in his masterly grasp of
-a situation, and his keen, incisive reasoning, which made it a
-pleasure to me to study his system of work, and to follow the
-quick, subtle methods by which he disentangled the most
-inextricable mysteries. So accustomed was I to his invariable
-success that the very possibility of his failing had ceased to
-enter into my head.
-
-It was close upon four before the door opened, and a
-drunken-looking groom, ill-kempt and side-whiskered, with an
-inflamed face and disreputable clothes, walked into the room.
-Accustomed as I was to my friend's amazing powers in the use of
-disguises, I had to look three times before I was certain that it
-was indeed he. With a nod he vanished into the bedroom, whence he
-emerged in five minutes tweed-suited and respectable, as of old.
-Putting his hands into his pockets, he stretched out his legs in
-front of the fire and laughed heartily for some minutes.
-
-"Well, really!" he cried, and then he choked and laughed again
-until he was obliged to lie back, limp and helpless, in the
-chair.
-
-"What is it?"
-
-"It's quite too funny. I am sure you could never guess how I
-employed my morning, or what I ended by doing."
-
-"I can't imagine. I suppose that you have been watching the
-habits, and perhaps the house, of Miss Irene Adler."
-
-"Quite so; but the sequel was rather unusual. I will tell you,
-however. I left the house a little after eight o'clock this
-morning in the character of a groom out of work. There is a
-wonderful sympathy and freemasonry among horsey men. Be one of
-them, and you will know all that there is to know. I soon found
-Briony Lodge. It is a bijou villa, with a garden at the back, but
-built out in front right up to the road, two stories. Chubb lock
-to the door. Large sitting-room on the right side, well
-furnished, with long windows almost to the floor, and those
-preposterous English window fasteners which a child could open.
-Behind there was nothing remarkable, save that the passage window
-could be reached from the top of the coach-house. I walked round
-it and examined it closely from every point of view, but without
-noting anything else of interest.
-
-"I then lounged down the street and found, as I expected, that
-there was a mews in a lane which runs down by one wall of the
-garden. I lent the ostlers a hand in rubbing down their horses,
-and received in exchange twopence, a glass of half and half, two
-fills of shag tobacco, and as much information as I could desire
-about Miss Adler, to say nothing of half a dozen other people in
-the neighbourhood in whom I was not in the least interested, but
-whose biographies I was compelled to listen to."
-
-"And what of Irene Adler?" I asked.
-
-"Oh, she has turned all the men's heads down in that part. She is
-the daintiest thing under a bonnet on this planet. So say the
-Serpentine-mews, to a man. She lives quietly, sings at concerts,
-drives out at five every day, and returns at seven sharp for
-dinner. Seldom goes out at other times, except when she sings.
-Has only one male visitor, but a good deal of him. He is dark,
-handsome, and dashing, never calls less than once a day, and
-often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
-the advantages of a cabman as a confidant. They had driven him
-home a dozen times from Serpentine-mews, and knew all about him.
-When I had listened to all they had to tell, I began to walk up
-and down near Briony Lodge once more, and to think over my plan
-of campaign.
-
-"This Godfrey Norton was evidently an important factor in the
-matter. He was a lawyer. That sounded ominous. What was the
-relation between them, and what the object of his repeated
-visits? Was she his client, his friend, or his mistress? If the
-former, she had probably transferred the photograph to his
-keeping. If the latter, it was less likely. On the issue of this
-question depended whether I should continue my work at Briony
-Lodge, or turn my attention to the gentleman's chambers in the
-Temple. It was a delicate point, and it widened the field of my
-inquiry. I fear that I bore you with these details, but I have to
-let you see my little difficulties, if you are to understand the
-situation."
-
-"I am following you closely," I answered.
-
-"I was still balancing the matter in my mind when a hansom cab
-drove up to Briony Lodge, and a gentleman sprang out. He was a
-remarkably handsome man, dark, aquiline, and moustached--evidently
-the man of whom I had heard. He appeared to be in a
-great hurry, shouted to the cabman to wait, and brushed past the
-maid who opened the door with the air of a man who was thoroughly
-at home.
-
-"He was in the house about half an hour, and I could catch
-glimpses of him in the windows of the sitting-room, pacing up and
-down, talking excitedly, and waving his arms. Of her I could see
-nothing. Presently he emerged, looking even more flurried than
-before. As he stepped up to the cab, he pulled a gold watch from
-his pocket and looked at it earnestly, 'Drive like the devil,' he
-shouted, 'first to Gross & Hankey's in Regent Street, and then to
-the Church of St. Monica in the Edgeware Road. Half a guinea if
-you do it in twenty minutes!'
-
-"Away they went, and I was just wondering whether I should not do
-well to follow them when up the lane came a neat little landau,
-the coachman with his coat only half-buttoned, and his tie under
-his ear, while all the tags of his harness were sticking out of
-the buckles. It hadn't pulled up before she shot out of the hall
-door and into it. I only caught a glimpse of her at the moment,
-but she was a lovely woman, with a face that a man might die for.
-
-"'The Church of St. Monica, John,' she cried, 'and half a
-sovereign if you reach it in twenty minutes.'
-
-"This was quite too good to lose, Watson. I was just balancing
-whether I should run for it, or whether I should perch behind her
-landau when a cab came through the street. The driver looked
-twice at such a shabby fare, but I jumped in before he could
-object. 'The Church of St. Monica,' said I, 'and half a sovereign
-if you reach it in twenty minutes.' It was twenty-five minutes to
-twelve, and of course it was clear enough what was in the wind.
-
-"My cabby drove fast. I don't think I ever drove faster, but the
-others were there before us. The cab and the landau with their
-steaming horses were in front of the door when I arrived. I paid
-the man and hurried into the church. There was not a soul there
-save the two whom I had followed and a surpliced clergyman, who
-seemed to be expostulating with them. They were all three
-standing in a knot in front of the altar. I lounged up the side
-aisle like any other idler who has dropped into a church.
-Suddenly, to my surprise, the three at the altar faced round to
-me, and Godfrey Norton came running as hard as he could towards
-me.
-
-"'Thank God,' he cried. 'You'll do. Come! Come!'
-
-"'What then?' I asked.
-
-"'Come, man, come, only three minutes, or it won't be legal.'
-
-"I was half-dragged up to the altar, and before I knew where I was
-I found myself mumbling responses which were whispered in my ear,
-and vouching for things of which I knew nothing, and generally
-assisting in the secure tying up of Irene Adler, spinster, to
-Godfrey Norton, bachelor. It was all done in an instant, and
-there was the gentleman thanking me on the one side and the lady
-on the other, while the clergyman beamed on me in front. It was
-the most preposterous position in which I ever found myself in my
-life, and it was the thought of it that started me laughing just
-now. It seems that there had been some informality about their
-license, that the clergyman absolutely refused to marry them
-without a witness of some sort, and that my lucky appearance
-saved the bridegroom from having to sally out into the streets in
-search of a best man. The bride gave me a sovereign, and I mean
-to wear it on my watch-chain in memory of the occasion."
-
-"This is a very unexpected turn of affairs," said I; "and what
-then?"
-
-"Well, I found my plans very seriously menaced. It looked as if
-the pair might take an immediate departure, and so necessitate
-very prompt and energetic measures on my part. At the church
-door, however, they separated, he driving back to the Temple, and
-she to her own house. 'I shall drive out in the park at five as
-usual,' she said as she left him. I heard no more. They drove
-away in different directions, and I went off to make my own
-arrangements."
-
-"Which are?"
-
-"Some cold beef and a glass of beer," he answered, ringing the
-bell. "I have been too busy to think of food, and I am likely to
-be busier still this evening. By the way, Doctor, I shall want
-your co-operation."
-
-"I shall be delighted."
-
-"You don't mind breaking the law?"
-
-"Not in the least."
-
-"Nor running a chance of arrest?"
-
-"Not in a good cause."
-
-"Oh, the cause is excellent!"
-
-"Then I am your man."
-
-"I was sure that I might rely on you."
-
-"But what is it you wish?"
-
-"When Mrs. Turner has brought in the tray I will make it clear to
-you. Now," he said as he turned hungrily on the simple fare that
-our landlady had provided, "I must discuss it while I eat, for I
-have not much time. It is nearly five now. In two hours we must
-be on the scene of action. Miss Irene, or Madame, rather, returns
-from her drive at seven. We must be at Briony Lodge to meet her."
-
-"And what then?"
-
-"You must leave that to me. I have already arranged what is to
-occur. There is only one point on which I must insist. You must
-not interfere, come what may. You understand?"
-
-"I am to be neutral?"
-
-"To do nothing whatever. There will probably be some small
-unpleasantness. Do not join in it. It will end in my being
-conveyed into the house. Four or five minutes afterwards the
-sitting-room window will open. You are to station yourself close
-to that open window."
-
-"Yes."
-
-"You are to watch me, for I will be visible to you."
-
-"Yes."
-
-"And when I raise my hand--so--you will throw into the room what
-I give you to throw, and will, at the same time, raise the cry of
-fire. You quite follow me?"
-
-"Entirely."
-
-"It is nothing very formidable," he said, taking a long cigar-shaped
-roll from his pocket. "It is an ordinary plumber's smoke-rocket,
-fitted with a cap at either end to make it self-lighting.
-Your task is confined to that. When you raise your cry of fire,
-it will be taken up by quite a number of people. You may then
-walk to the end of the street, and I will rejoin you in ten
-minutes. I hope that I have made myself clear?"
-
-"I am to remain neutral, to get near the window, to watch you,
-and at the signal to throw in this object, then to raise the cry
-of fire, and to wait you at the corner of the street."
-
-"Precisely."
-
-"Then you may entirely rely on me."
-
-"That is excellent. I think, perhaps, it is almost time that I
-prepare for the new role I have to play."
-
-He disappeared into his bedroom and returned in a few minutes in
-the character of an amiable and simple-minded Nonconformist
-clergyman. His broad black hat, his baggy trousers, his white
-tie, his sympathetic smile, and general look of peering and
-benevolent curiosity were such as Mr. John Hare alone could have
-equalled. It was not merely that Holmes changed his costume. His
-expression, his manner, his very soul seemed to vary with every
-fresh part that he assumed. The stage lost a fine actor, even as
-science lost an acute reasoner, when he became a specialist in
-crime.
-
-It was a quarter past six when we left Baker Street, and it still
-wanted ten minutes to the hour when we found ourselves in
-Serpentine Avenue. It was already dusk, and the lamps were just
-being lighted as we paced up and down in front of Briony Lodge,
-waiting for the coming of its occupant. The house was just such
-as I had pictured it from Sherlock Holmes' succinct description,
-but the locality appeared to be less private than I expected. On
-the contrary, for a small street in a quiet neighbourhood, it was
-remarkably animated. There was a group of shabbily dressed men
-smoking and laughing in a corner, a scissors-grinder with his
-wheel, two guardsmen who were flirting with a nurse-girl, and
-several well-dressed young men who were lounging up and down with
-cigars in their mouths.
-
-"You see," remarked Holmes, as we paced to and fro in front of
-the house, "this marriage rather simplifies matters. The
-photograph becomes a double-edged weapon now. The chances are
-that she would be as averse to its being seen by Mr. Godfrey
-Norton, as our client is to its coming to the eyes of his
-princess. Now the question is, Where are we to find the
-photograph?"
-
-"Where, indeed?"
-
-"It is most unlikely that she carries it about with her. It is
-cabinet size. Too large for easy concealment about a woman's
-dress. She knows that the King is capable of having her waylaid
-and searched. Two attempts of the sort have already been made. We
-may take it, then, that she does not carry it about with her."
-
-"Where, then?"
-
-"Her banker or her lawyer. There is that double possibility. But
-I am inclined to think neither. Women are naturally secretive,
-and they like to do their own secreting. Why should she hand it
-over to anyone else? She could trust her own guardianship, but
-she could not tell what indirect or political influence might be
-brought to bear upon a business man. Besides, remember that she
-had resolved to use it within a few days. It must be where she
-can lay her hands upon it. It must be in her own house."
-
-"But it has twice been burgled."
-
-"Pshaw! They did not know how to look."
-
-"But how will you look?"
-
-"I will not look."
-
-"What then?"
-
-"I will get her to show me."
-
-"But she will refuse."
-
-"She will not be able to. But I hear the rumble of wheels. It is
-her carriage. Now carry out my orders to the letter."
-
-As he spoke the gleam of the side-lights of a carriage came round
-the curve of the avenue. It was a smart little landau which
-rattled up to the door of Briony Lodge. As it pulled up, one of
-the loafing men at the corner dashed forward to open the door in
-the hope of earning a copper, but was elbowed away by another
-loafer, who had rushed up with the same intention. A fierce
-quarrel broke out, which was increased by the two guardsmen, who
-took sides with one of the loungers, and by the scissors-grinder,
-who was equally hot upon the other side. A blow was struck, and
-in an instant the lady, who had stepped from her carriage, was
-the centre of a little knot of flushed and struggling men, who
-struck savagely at each other with their fists and sticks. Holmes
-dashed into the crowd to protect the lady; but just as he reached
-her he gave a cry and dropped to the ground, with the blood
-running freely down his face. At his fall the guardsmen took to
-their heels in one direction and the loungers in the other, while
-a number of better-dressed people, who had watched the scuffle
-without taking part in it, crowded in to help the lady and to
-attend to the injured man. Irene Adler, as I will still call her,
-had hurried up the steps; but she stood at the top with her
-superb figure outlined against the lights of the hall, looking
-back into the street.
-
-"Is the poor gentleman much hurt?" she asked.
-
-"He is dead," cried several voices.
-
-"No, no, there's life in him!" shouted another. "But he'll be
-gone before you can get him to hospital."
-
-"He's a brave fellow," said a woman. "They would have had the
-lady's purse and watch if it hadn't been for him. They were a
-gang, and a rough one, too. Ah, he's breathing now."
-
-"He can't lie in the street. May we bring him in, marm?"
-
-"Surely. Bring him into the sitting-room. There is a comfortable
-sofa. This way, please!"
-
-Slowly and solemnly he was borne into Briony Lodge and laid out
-in the principal room, while I still observed the proceedings
-from my post by the window. The lamps had been lit, but the
-blinds had not been drawn, so that I could see Holmes as he lay
-upon the couch. I do not know whether he was seized with
-compunction at that moment for the part he was playing, but I
-know that I never felt more heartily ashamed of myself in my life
-than when I saw the beautiful creature against whom I was
-conspiring, or the grace and kindliness with which she waited
-upon the injured man. And yet it would be the blackest treachery
-to Holmes to draw back now from the part which he had intrusted
-to me. I hardened my heart, and took the smoke-rocket from under
-my ulster. After all, I thought, we are not injuring her. We are
-but preventing her from injuring another.
-
-Holmes had sat up upon the couch, and I saw him motion like a man
-who is in need of air. A maid rushed across and threw open the
-window. At the same instant I saw him raise his hand and at the
-signal I tossed my rocket into the room with a cry of "Fire!" The
-word was no sooner out of my mouth than the whole crowd of
-spectators, well dressed and ill--gentlemen, ostlers, and
-servant-maids--joined in a general shriek of "Fire!" Thick clouds
-of smoke curled through the room and out at the open window. I
-caught a glimpse of rushing figures, and a moment later the voice
-of Holmes from within assuring them that it was a false alarm.
-Slipping through the shouting crowd I made my way to the corner
-of the street, and in ten minutes was rejoiced to find my
-friend's arm in mine, and to get away from the scene of uproar.
-He walked swiftly and in silence for some few minutes until we
-had turned down one of the quiet streets which lead towards the
-Edgeware Road.
-
-"You did it very nicely, Doctor," he remarked. "Nothing could
-have been better. It is all right."
-
-"You have the photograph?"
-
-"I know where it is."
-
-"And how did you find out?"
-
-"She showed me, as I told you she would."
-
-"I am still in the dark."
-
-"I do not wish to make a mystery," said he, laughing. "The matter
-was perfectly simple. You, of course, saw that everyone in the
-street was an accomplice. They were all engaged for the evening."
-
-"I guessed as much."
-
-"Then, when the row broke out, I had a little moist red paint in
-the palm of my hand. I rushed forward, fell down, clapped my hand
-to my face, and became a piteous spectacle. It is an old trick."
-
-"That also I could fathom."
-
-"Then they carried me in. She was bound to have me in. What else
-could she do? And into her sitting-room, which was the very room
-which I suspected. It lay between that and her bedroom, and I was
-determined to see which. They laid me on a couch, I motioned for
-air, they were compelled to open the window, and you had your
-chance."
-
-"How did that help you?"
-
-"It was all-important. When a woman thinks that her house is on
-fire, her instinct is at once to rush to the thing which she
-values most. It is a perfectly overpowering impulse, and I have
-more than once taken advantage of it. In the case of the
-Darlington substitution scandal it was of use to me, and also in
-the Arnsworth Castle business. A married woman grabs at her baby;
-an unmarried one reaches for her jewel-box. Now it was clear to
-me that our lady of to-day had nothing in the house more precious
-to her than what we are in quest of. She would rush to secure it.
-The alarm of fire was admirably done. The smoke and shouting were
-enough to shake nerves of steel. She responded beautifully. The
-photograph is in a recess behind a sliding panel just above the
-right bell-pull. She was there in an instant, and I caught a
-glimpse of it as she half-drew it out. When I cried out that it
-was a false alarm, she replaced it, glanced at the rocket, rushed
-from the room, and I have not seen her since. I rose, and, making
-my excuses, escaped from the house. I hesitated whether to
-attempt to secure the photograph at once; but the coachman had
-come in, and as he was watching me narrowly it seemed safer to
-wait. A little over-precipitance may ruin all."
-
-"And now?" I asked.
-
-"Our quest is practically finished. I shall call with the King
-to-morrow, and with you, if you care to come with us. We will be
-shown into the sitting-room to wait for the lady, but it is
-probable that when she comes she may find neither us nor the
-photograph. It might be a satisfaction to his Majesty to regain
-it with his own hands."
-
-"And when will you call?"
-
-"At eight in the morning. She will not be up, so that we shall
-have a clear field. Besides, we must be prompt, for this marriage
-may mean a complete change in her life and habits. I must wire to
-the King without delay."
-
-We had reached Baker Street and had stopped at the door. He was
-searching his pockets for the key when someone passing said:
-
-"Good-night, Mister Sherlock Holmes."
-
-There were several people on the pavement at the time, but the
-greeting appeared to come from a slim youth in an ulster who had
-hurried by.
-
-"I've heard that voice before," said Holmes, staring down the
-dimly lit street. "Now, I wonder who the deuce that could have
-been."
-
-
-III.
-
-I slept at Baker Street that night, and we were engaged upon our
-toast and coffee in the morning when the King of Bohemia rushed
-into the room.
-
-"You have really got it!" he cried, grasping Sherlock Holmes by
-either shoulder and looking eagerly into his face.
-
-"Not yet."
-
-"But you have hopes?"
-
-"I have hopes."
-
-"Then, come. I am all impatience to be gone."
-
-"We must have a cab."
-
-"No, my brougham is waiting."
-
-"Then that will simplify matters." We descended and started off
-once more for Briony Lodge.
-
-"Irene Adler is married," remarked Holmes.
-
-"Married! When?"
-
-"Yesterday."
-
-"But to whom?"
-
-"To an English lawyer named Norton."
-
-"But she could not love him."
-
-"I am in hopes that she does."
-
-"And why in hopes?"
-
-"Because it would spare your Majesty all fear of future
-annoyance. If the lady loves her husband, she does not love your
-Majesty. If she does not love your Majesty, there is no reason
-why she should interfere with your Majesty's plan."
-
-"It is true. And yet--Well! I wish she had been of my own
-station! What a queen she would have made!" He relapsed into a
-moody silence, which was not broken until we drew up in
-Serpentine Avenue.
-
-The door of Briony Lodge was open, and an elderly woman stood
-upon the steps. She watched us with a sardonic eye as we stepped
-from the brougham.
-
-"Mr. Sherlock Holmes, I believe?" said she.
-
-"I am Mr. Holmes," answered my companion, looking at her with a
-questioning and rather startled gaze.
-
-"Indeed! My mistress told me that you were likely to call. She
-left this morning with her husband by the 5:15 train from Charing
-Cross for the Continent."
-
-"What!" Sherlock Holmes staggered back, white with chagrin and
-surprise. "Do you mean that she has left England?"
-
-"Never to return."
-
-"And the papers?" asked the King hoarsely. "All is lost."
-
-"We shall see." He pushed past the servant and rushed into the
-drawing-room, followed by the King and myself. The furniture was
-scattered about in every direction, with dismantled shelves and
-open drawers, as if the lady had hurriedly ransacked them before
-her flight. Holmes rushed at the bell-pull, tore back a small
-sliding shutter, and, plunging in his hand, pulled out a
-photograph and a letter. The photograph was of Irene Adler
-herself in evening dress, the letter was superscribed to
-"Sherlock Holmes, Esq. To be left till called for." My friend
-tore it open and we all three read it together. It was dated at
-midnight of the preceding night and ran in this way:
-
-"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
-took me in completely. Until after the alarm of fire, I had not a
-suspicion. But then, when I found how I had betrayed myself, I
-began to think. I had been warned against you months ago. I had
-been told that if the King employed an agent it would certainly
-be you. And your address had been given me. Yet, with all this,
-you made me reveal what you wanted to know. Even after I became
-suspicious, I found it hard to think evil of such a dear, kind
-old clergyman. But, you know, I have been trained as an actress
-myself. Male costume is nothing new to me. I often take advantage
-of the freedom which it gives. I sent John, the coachman, to
-watch you, ran up stairs, got into my walking-clothes, as I call
-them, and came down just as you departed.
-
-"Well, I followed you to your door, and so made sure that I was
-really an object of interest to the celebrated Mr. Sherlock
-Holmes. Then I, rather imprudently, wished you good-night, and
-started for the Temple to see my husband.
-
-"We both thought the best resource was flight, when pursued by
-so formidable an antagonist; so you will find the nest empty when
-you call to-morrow. As to the photograph, your client may rest in
-peace. I love and am loved by a better man than he. The King may
-do what he will without hindrance from one whom he has cruelly
-wronged. I keep it only to safeguard myself, and to preserve a
-weapon which will always secure me from any steps which he might
-take in the future. I leave a photograph which he might care to
-possess; and I remain, dear Mr. Sherlock Holmes,
-
-                                      "Very truly yours,
-                                   "IRENE NORTON, née ADLER."
-
-"What a woman--oh, what a woman!" cried the King of Bohemia, when
-we had all three read this epistle. "Did I not tell you how quick
-and resolute she was? Would she not have made an admirable queen?
-Is it not a pity that she was not on my level?"
-
-"From what I have seen of the lady she seems indeed to be on a
-very different level to your Majesty," said Holmes coldly. "I am
-sorry that I have not been able to bring your Majesty's business
-to a more successful conclusion."
-
-"On the contrary, my dear sir," cried the King; "nothing could be
-more successful. I know that her word is inviolate. The
-photograph is now as safe as if it were in the fire."
-
-"I am glad to hear your Majesty say so."
-
-"I am immensely indebted to you. Pray tell me in what way I can
-reward you. This ring--" He slipped an emerald snake ring from
-his finger and held it out upon the palm of his hand.
-
-"Your Majesty has something which I should value even more
-highly," said Holmes.
-
-"You have but to name it."
-
-"This photograph!"
-
-The King stared at him in amazement.
-
-"Irene's photograph!" he cried. "Certainly, if you wish it."
-
-"I thank your Majesty. Then there is no more to be done in the
-matter. I have the honour to wish you a very good-morning." He
-bowed, and, turning away without observing the hand which the
-King had stretched out to him, he set off in my company for his
-chambers.
-
-And that was how a great scandal threatened to affect the kingdom
-of Bohemia, and how the best plans of Mr. Sherlock Holmes were
-beaten by a woman's wit. He used to make merry over the
-cleverness of women, but I have not heard him do it of late. And
-when he speaks of Irene Adler, or when he refers to her
-photograph, it is always under the honourable title of the woman.
-
-
-
-ADVENTURE II. THE RED-HEADED LEAGUE
-
-I had called upon my friend, Mr. Sherlock Holmes, one day in the
-autumn of last year and found him in deep conversation with a
-very stout, florid-faced, elderly gentleman with fiery red hair.
-With an apology for my intrusion, I was about to withdraw when
-Holmes pulled me abruptly into the room and closed the door
-behind me.
-
-"You could not possibly have come at a better time, my dear
-Watson," he said cordially.
-
-"I was afraid that you were engaged."
-
-"So I am. Very much so."
-
-"Then I can wait in the next room."
-
-"Not at all. This gentleman, Mr. Wilson, has been my partner and
-helper in many of my most successful cases, and I have no
-doubt that he will be of the utmost use to me in yours also."
-
-The stout gentleman half rose from his chair and gave a bob of
-greeting, with a quick little questioning glance from his small
-fat-encircled eyes.
-
-"Try the settee," said Holmes, relapsing into his armchair and
-putting his fingertips together, as was his custom when in
-judicial moods. "I know, my dear Watson, that you share my love
-of all that is bizarre and outside the conventions and humdrum
-routine of everyday life. You have shown your relish for it by
-the enthusiasm which has prompted you to chronicle, and, if you
-will excuse my saying so, somewhat to embellish so many of my own
-little adventures."
-
-"Your cases have indeed been of the greatest interest to me," I
-observed.
-
-"You will remember that I remarked the other day, just before we
-went into the very simple problem presented by Miss Mary
-Sutherland, that for strange effects and extraordinary
-combinations we must go to life itself, which is always far more
-daring than any effort of the imagination."
-
-"A proposition which I took the liberty of doubting."
-
-"You did, Doctor, but none the less you must come round to my
-view, for otherwise I shall keep on piling fact upon fact on you
-until your reason breaks down under them and acknowledges me to
-be right. Now, Mr. Jabez Wilson here has been good enough to call
-upon me this morning, and to begin a narrative which promises to
-be one of the most singular which I have listened to for some
-time. You have heard me remark that the strangest and most unique
-things are very often connected not with the larger but with the
-smaller crimes, and occasionally, indeed, where there is room for
-doubt whether any positive crime has been committed. As far as I
-have heard it is impossible for me to say whether the present
-case is an instance of crime or not, but the course of events is
-certainly among the most singular that I have ever listened to.
-Perhaps, Mr. Wilson, you would have the great kindness to
-recommence your narrative. I ask you not merely because my friend
-Dr. Watson has not heard the opening part but also because the
-peculiar nature of the story makes me anxious to have every
-possible detail from your lips. As a rule, when I have heard some
-slight indication of the course of events, I am able to guide
-myself by the thousands of other similar cases which occur to my
-memory. In the present instance I am forced to admit that the
-facts are, to the best of my belief, unique."
-
-The portly client puffed out his chest with an appearance of some
-little pride and pulled a dirty and wrinkled newspaper from the
-inside pocket of his greatcoat. As he glanced down the
-advertisement column, with his head thrust forward and the paper
-flattened out upon his knee, I took a good look at the man and
-endeavoured, after the fashion of my companion, to read the
-indications which might be presented by his dress or appearance.
-
-I did not gain very much, however, by my inspection. Our visitor
-bore every mark of being an average commonplace British
-tradesman, obese, pompous, and slow. He wore rather baggy grey
-shepherd's check trousers, a not over-clean black frock-coat,
-unbuttoned in the front, and a drab waistcoat with a heavy brassy
-Albert chain, and a square pierced bit of metal dangling down as
-an ornament. A frayed top-hat and a faded brown overcoat with a
-wrinkled velvet collar lay upon a chair beside him. Altogether,
-look as I would, there was nothing remarkable about the man save
-his blazing red head, and the expression of extreme chagrin and
-discontent upon his features.
-
-Sherlock Holmes' quick eye took in my occupation, and he shook
-his head with a smile as he noticed my questioning glances.
-"Beyond the obvious facts that he has at some time done manual
-labour, that he takes snuff, that he is a Freemason, that he has
-been in China, and that he has done a considerable amount of
-writing lately, I can deduce nothing else."
-
-Mr. Jabez Wilson started up in his chair, with his forefinger
-upon the paper, but his eyes upon my companion.
-
-"How, in the name of good-fortune, did you know all that, Mr.
-Holmes?" he asked. "How did you know, for example, that I did
-manual labour. It's as true as gospel, for I began as a ship's
-carpenter."
-
-"Your hands, my dear sir. Your right hand is quite a size larger
-than your left. You have worked with it, and the muscles are more
-developed."
-
-"Well, the snuff, then, and the Freemasonry?"
-
-"I won't insult your intelligence by telling you how I read that,
-especially as, rather against the strict rules of your order, you
-use an arc-and-compass breastpin."
-
-"Ah, of course, I forgot that. But the writing?"
-
-"What else can be indicated by that right cuff so very shiny for
-five inches, and the left one with the smooth patch near the
-elbow where you rest it upon the desk?"
-
-"Well, but China?"
-
-"The fish that you have tattooed immediately above your right
-wrist could only have been done in China. I have made a small
-study of tattoo marks and have even contributed to the literature
-of the subject. That trick of staining the fishes' scales of a
-delicate pink is quite peculiar to China. When, in addition, I
-see a Chinese coin hanging from your watch-chain, the matter
-becomes even more simple."
-
-Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
-thought at first that you had done something clever, but I see
-that there was nothing in it, after all."
-
-"I begin to think, Watson," said Holmes, "that I make a mistake
-in explaining. 'Omne ignotum pro magnifico,' you know, and my
-poor little reputation, such as it is, will suffer shipwreck if I
-am so candid. Can you not find the advertisement, Mr. Wilson?"
-
-"Yes, I have got it now," he answered with his thick red finger
-planted halfway down the column. "Here it is. This is what began
-it all. You just read it for yourself, sir."
-
-I took the paper from him and read as follows:
-
-"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
-Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
-another vacancy open which entitles a member of the League to a
-salary of 4 pounds a week for purely nominal services. All
-red-headed men who are sound in body and mind and above the age
-of twenty-one years, are eligible. Apply in person on Monday, at
-eleven o'clock, to Duncan Ross, at the offices of the League, 7
-Pope's Court, Fleet Street."
-
-"What on earth does this mean?" I ejaculated after I had twice
-read over the extraordinary announcement.
-
-Holmes chuckled and wriggled in his chair, as was his habit when
-in high spirits. "It is a little off the beaten track, isn't it?"
-said he. "And now, Mr. Wilson, off you go at scratch and tell us
-all about yourself, your household, and the effect which this
-advertisement had upon your fortunes. You will first make a note,
-Doctor, of the paper and the date."
-
-"It is The Morning Chronicle of April 27, 1890. Just two months
-ago."
-
-"Very good. Now, Mr. Wilson?"
-
-"Well, it is just as I have been telling you, Mr. Sherlock
-Holmes," said Jabez Wilson, mopping his forehead; "I have a small
-pawnbroker's business at Coburg Square, near the City. It's not a
-very large affair, and of late years it has not done more than
-just give me a living. I used to be able to keep two assistants,
-but now I only keep one; and I would have a job to pay him but
-that he is willing to come for half wages so as to learn the
-business."
-
-"What is the name of this obliging youth?" asked Sherlock Holmes.
-
-"His name is Vincent Spaulding, and he's not such a youth,
-either. It's hard to say his age. I should not wish a smarter
-assistant, Mr. Holmes; and I know very well that he could better
-himself and earn twice what I am able to give him. But, after
-all, if he is satisfied, why should I put ideas in his head?"
-
-"Why, indeed? You seem most fortunate in having an employé who
-comes under the full market price. It is not a common experience
-among employers in this age. I don't know that your assistant is
-not as remarkable as your advertisement."
-
-"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
-fellow for photography. Snapping away with a camera when he ought
-to be improving his mind, and then diving down into the cellar
-like a rabbit into its hole to develop his pictures. That is his
-main fault, but on the whole he's a good worker. There's no vice
-in him."
-
-"He is still with you, I presume?"
-
-"Yes, sir. He and a girl of fourteen, who does a bit of simple
-cooking and keeps the place clean--that's all I have in the
-house, for I am a widower and never had any family. We live very
-quietly, sir, the three of us; and we keep a roof over our heads
-and pay our debts, if we do nothing more.
-
-"The first thing that put us out was that advertisement.
-Spaulding, he came down into the office just this day eight
-weeks, with this very paper in his hand, and he says:
-
-"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
-
-"'Why that?' I asks.
-
-"'Why,' says he, 'here's another vacancy on the League of the
-Red-headed Men. It's worth quite a little fortune to any man who
-gets it, and I understand that there are more vacancies than
-there are men, so that the trustees are at their wits' end what
-to do with the money. If my hair would only change colour, here's
-a nice little crib all ready for me to step into.'
-
-"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
-very stay-at-home man, and as my business came to me instead of
-my having to go to it, I was often weeks on end without putting
-my foot over the door-mat. In that way I didn't know much of what
-was going on outside, and I was always glad of a bit of news.
-
-"'Have you never heard of the League of the Red-headed Men?' he
-asked with his eyes open.
-
-"'Never.'
-
-"'Why, I wonder at that, for you are eligible yourself for one
-of the vacancies.'
-
-"'And what are they worth?' I asked.
-
-"'Oh, merely a couple of hundred a year, but the work is slight,
-and it need not interfere very much with one's other
-occupations.'
-
-"Well, you can easily think that that made me prick up my ears,
-for the business has not been over-good for some years, and an
-extra couple of hundred would have been very handy.
-
-"'Tell me all about it,' said I.
-
-"'Well,' said he, showing me the advertisement, 'you can see for
-yourself that the League has a vacancy, and there is the address
-where you should apply for particulars. As far as I can make out,
-the League was founded by an American millionaire, Ezekiah
-Hopkins, who was very peculiar in his ways. He was himself
-red-headed, and he had a great sympathy for all red-headed men;
-so when he died it was found that he had left his enormous
-fortune in the hands of trustees, with instructions to apply the
-interest to the providing of easy berths to men whose hair is of
-that colour. From all I hear it is splendid pay and very little to
-do.'
-
-"'But,' said I, 'there would be millions of red-headed men who
-would apply.'
-
-"'Not so many as you might think,' he answered. 'You see it is
-really confined to Londoners, and to grown men. This American had
-started from London when he was young, and he wanted to do the
-old town a good turn. Then, again, I have heard it is no use your
-applying if your hair is light red, or dark red, or anything but
-real bright, blazing, fiery red. Now, if you cared to apply, Mr.
-Wilson, you would just walk in; but perhaps it would hardly be
-worth your while to put yourself out of the way for the sake of a
-few hundred pounds.'
-
-"Now, it is a fact, gentlemen, as you may see for yourselves,
-that my hair is of a very full and rich tint, so that it seemed
-to me that if there was to be any competition in the matter I
-stood as good a chance as any man that I had ever met. Vincent
-Spaulding seemed to know so much about it that I thought he might
-prove useful, so I just ordered him to put up the shutters for
-the day and to come right away with me. He was very willing to
-have a holiday, so we shut the business up and started off for
-the address that was given us in the advertisement.
-
-"I never hope to see such a sight as that again, Mr. Holmes. From
-north, south, east, and west every man who had a shade of red in
-his hair had tramped into the city to answer the advertisement.
-Fleet Street was choked with red-headed folk, and Pope's Court
-looked like a coster's orange barrow. I should not have thought
-there were so many in the whole country as were brought together
-by that single advertisement. Every shade of colour they
-were--straw, lemon, orange, brick, Irish-setter, liver, clay;
-but, as Spaulding said, there were not many who had the real
-vivid flame-coloured tint. When I saw how many were waiting, I
-would have given it up in despair; but Spaulding would not hear
-of it. How he did it I could not imagine, but he pushed and
-pulled and butted until he got me through the crowd, and right up
-to the steps which led to the office. There was a double stream
-upon the stair, some going up in hope, and some coming back
-dejected; but we wedged in as well as we could and soon found
-ourselves in the office."
-
-"Your experience has been a most entertaining one," remarked
-Holmes as his client paused and refreshed his memory with a huge
-pinch of snuff. "Pray continue your very interesting statement."
-
-"There was nothing in the office but a couple of wooden chairs
-and a deal table, behind which sat a small man with a head that
-was even redder than mine. He said a few words to each candidate
-as he came up, and then he always managed to find some fault in
-them which would disqualify them. Getting a vacancy did not seem
-to be such a very easy matter, after all. However, when our turn
-came the little man was much more favourable to me than to any of
-the others, and he closed the door as we entered, so that he
-might have a private word with us.
-
-"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
-willing to fill a vacancy in the League.'
-
-"'And he is admirably suited for it,' the other answered. 'He has
-every requirement. I cannot recall when I have seen anything so
-fine.' He took a step backward, cocked his head on one side, and
-gazed at my hair until I felt quite bashful. Then suddenly he
-plunged forward, wrung my hand, and congratulated me warmly on my
-success.
-
-"'It would be injustice to hesitate,' said he. 'You will,
-however, I am sure, excuse me for taking an obvious precaution.'
-With that he seized my hair in both his hands, and tugged until I
-yelled with the pain. 'There is water in your eyes,' said he as
-he released me. 'I perceive that all is as it should be. But we
-have to be careful, for we have twice been deceived by wigs and
-once by paint. I could tell you tales of cobbler's wax which
-would disgust you with human nature.' He stepped over to the
-window and shouted through it at the top of his voice that the
-vacancy was filled. A groan of disappointment came up from below,
-and the folk all trooped away in different directions until there
-was not a red-head to be seen except my own and that of the
-manager.
-
-"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
-the pensioners upon the fund left by our noble benefactor. Are
-you a married man, Mr. Wilson? Have you a family?'
-
-"I answered that I had not.
-
-"His face fell immediately.
-
-"'Dear me!' he said gravely, 'that is very serious indeed! I am
-sorry to hear you say that. The fund was, of course, for the
-propagation and spread of the red-heads as well as for their
-maintenance. It is exceedingly unfortunate that you should be a
-bachelor.'
-
-"My face lengthened at this, Mr. Holmes, for I thought that I was
-not to have the vacancy after all; but after thinking it over for
-a few minutes he said that it would be all right.
-
-"'In the case of another,' said he, 'the objection might be
-fatal, but we must stretch a point in favour of a man with such a
-head of hair as yours. When shall you be able to enter upon your
-new duties?'
-
-"'Well, it is a little awkward, for I have a business already,'
-said I.
-
-"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
-'I should be able to look after that for you.'
-
-"'What would be the hours?' I asked.
-
-"'Ten to two.'
-
-"Now a pawnbroker's business is mostly done of an evening, Mr.
-Holmes, especially Thursday and Friday evening, which is just
-before pay-day; so it would suit me very well to earn a little in
-the mornings. Besides, I knew that my assistant was a good man,
-and that he would see to anything that turned up.
-
-"'That would suit me very well,' said I. 'And the pay?'
-
-"'Is 4 pounds a week.'
-
-"'And the work?'
-
-"'Is purely nominal.'
-
-"'What do you call purely nominal?'
-
-"'Well, you have to be in the office, or at least in the
-building, the whole time. If you leave, you forfeit your whole
-position forever. The will is very clear upon that point. You
-don't comply with the conditions if you budge from the office
-during that time.'
-
-"'It's only four hours a day, and I should not think of leaving,'
-said I.
-
-"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
-nor business nor anything else. There you must stay, or you lose
-your billet.'
-
-"'And the work?'
-
-"'Is to copy out the "Encyclopaedia Britannica." There is the first
-volume of it in that press. You must find your own ink, pens, and
-blotting-paper, but we provide this table and chair. Will you be
-ready to-morrow?'
-
-"'Certainly,' I answered.
-
-"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
-once more on the important position which you have been fortunate
-enough to gain.' He bowed me out of the room and I went home with
-my assistant, hardly knowing what to say or do, I was so pleased
-at my own good fortune.
-
-"Well, I thought over the matter all day, and by evening I was in
-low spirits again; for I had quite persuaded myself that the
-whole affair must be some great hoax or fraud, though what its
-object might be I could not imagine. It seemed altogether past
-belief that anyone could make such a will, or that they would pay
-such a sum for doing anything so simple as copying out the
-'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
-cheer me up, but by bedtime I had reasoned myself out of the
-whole thing. However, in the morning I determined to have a look
-at it anyhow, so I bought a penny bottle of ink, and with a
-quill-pen, and seven sheets of foolscap paper, I started off for
-Pope's Court.
-
-"Well, to my surprise and delight, everything was as right as
-possible. The table was set out ready for me, and Mr. Duncan Ross
-was there to see that I got fairly to work. He started me off
-upon the letter A, and then he left me; but he would drop in from
-time to time to see that all was right with me. At two o'clock he
-bade me good-day, complimented me upon the amount that I had
-written, and locked the door of the office after me.
-
-"This went on day after day, Mr. Holmes, and on Saturday the
-manager came in and planked down four golden sovereigns for my
-week's work. It was the same next week, and the same the week
-after. Every morning I was there at ten, and every afternoon I
-left at two. By degrees Mr. Duncan Ross took to coming in only
-once of a morning, and then, after a time, he did not come in at
-all. Still, of course, I never dared to leave the room for an
-instant, for I was not sure when he might come, and the billet
-was such a good one, and suited me so well, that I would not risk
-the loss of it.
-
-"Eight weeks passed away like this, and I had written about
-Abbots and Archery and Armour and Architecture and Attica, and
-hoped with diligence that I might get on to the B's before very
-long. It cost me something in foolscap, and I had pretty nearly
-filled a shelf with my writings. And then suddenly the whole
-business came to an end."
-
-"To an end?"
-
-"Yes, sir. And no later than this morning. I went to my work as
-usual at ten o'clock, but the door was shut and locked, with a
-little square of cardboard hammered on to the middle of the
-panel with a tack. Here it is, and you can read for yourself."
-
-He held up a piece of white cardboard about the size of a sheet
-of note-paper. It read in this fashion:
-
-                  THE RED-HEADED LEAGUE
-
-                           IS
-
-                        DISSOLVED.
-
-                     October 9, 1890.
-
-Sherlock Holmes and I surveyed this curt announcement and the
-rueful face behind it, until the comical side of the affair so
-completely overtopped every other consideration that we both
-burst out into a roar of laughter.
-
-"I cannot see that there is anything very funny," cried our
-client, flushing up to the roots of his flaming head. "If you can
-do nothing better than laugh at me, I can go elsewhere."
-
-"No, no," cried Holmes, shoving him back into the chair from
-which he had half risen. "I really wouldn't miss your case for
-the world. It is most refreshingly unusual. But there is, if you
-will excuse my saying so, something just a little funny about it.
-Pray what steps did you take when you found the card upon the
-door?"
-
-"I was staggered, sir. I did not know what to do. Then I called
-at the offices round, but none of them seemed to know anything
-about it. Finally, I went to the landlord, who is an accountant
-living on the ground-floor, and I asked him if he could tell me
-what had become of the Red-headed League. He said that he had
-never heard of any such body. Then I asked him who Mr. Duncan
-Ross was. He answered that the name was new to him.
-
-"'Well,' said I, 'the gentleman at No. 4.'
-
-"'What, the red-headed man?'
-
-"'Yes.'
-
-"'Oh,' said he, 'his name was William Morris. He was a solicitor
-and was using my room as a temporary convenience until his new
-premises were ready. He moved out yesterday.'
-
-"'Where could I find him?'
-
-"'Oh, at his new offices. He did tell me the address. Yes, 17
-King Edward Street, near St. Paul's.'
-
-"I started off, Mr. Holmes, but when I got to that address it was
-a manufactory of artificial knee-caps, and no one in it had ever
-heard of either Mr. William Morris or Mr. Duncan Ross."
-
-"And what did you do then?" asked Holmes.
-
-"I went home to Saxe-Coburg Square, and I took the advice of my
-assistant. But he could not help me in any way. He could only say
-that if I waited I should hear by post. But that was not quite
-good enough, Mr. Holmes. I did not wish to lose such a place
-without a struggle, so, as I had heard that you were good enough
-to give advice to poor folk who were in need of it, I came right
-away to you."
-
-"And you did very wisely," said Holmes. "Your case is an
-exceedingly remarkable one, and I shall be happy to look into it.
-From what you have told me I think that it is possible that
-graver issues hang from it than might at first sight appear."
-
-"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
-pound a week."
-
-"As far as you are personally concerned," remarked Holmes, "I do
-not see that you have any grievance against this extraordinary
-league. On the contrary, you are, as I understand, richer by some
-30 pounds, to say nothing of the minute knowledge which you have
-gained on every subject which comes under the letter A. You have
-lost nothing by them."
-
-"No, sir. But I want to find out about them, and who they are,
-and what their object was in playing this prank--if it was a
-prank--upon me. It was a pretty expensive joke for them, for it
-cost them two and thirty pounds."
-
-"We shall endeavour to clear up these points for you. And, first,
-one or two questions, Mr. Wilson. This assistant of yours who
-first called your attention to the advertisement--how long had he
-been with you?"
-
-"About a month then."
-
-"How did he come?"
-
-"In answer to an advertisement."
-
-"Was he the only applicant?"
-
-"No, I had a dozen."
-
-"Why did you pick him?"
-
-"Because he was handy and would come cheap."
-
-"At half-wages, in fact."
-
-"Yes."
-
-"What is he like, this Vincent Spaulding?"
-
-"Small, stout-built, very quick in his ways, no hair on his face,
-though he's not short of thirty. Has a white splash of acid upon
-his forehead."
-
-Holmes sat up in his chair in considerable excitement. "I thought
-as much," said he. "Have you ever observed that his ears are
-pierced for earrings?"
-
-"Yes, sir. He told me that a gipsy had done it for him when he
-was a lad."
-
-"Hum!" said Holmes, sinking back in deep thought. "He is still
-with you?"
-
-"Oh, yes, sir; I have only just left him."
-
-"And has your business been attended to in your absence?"
-
-"Nothing to complain of, sir. There's never very much to do of a
-morning."
-
-"That will do, Mr. Wilson. I shall be happy to give you an
-opinion upon the subject in the course of a day or two. To-day is
-Saturday, and I hope that by Monday we may come to a conclusion."
-
-"Well, Watson," said Holmes when our visitor had left us, "what
-do you make of it all?"
-
-"I make nothing of it," I answered frankly. "It is a most
-mysterious business."
-
-"As a rule," said Holmes, "the more bizarre a thing is the less
-mysterious it proves to be. It is your commonplace, featureless
-crimes which are really puzzling, just as a commonplace face is
-the most difficult to identify. But I must be prompt over this
-matter."
-
-"What are you going to do, then?" I asked.
-
-"To smoke," he answered. "It is quite a three pipe problem, and I
-beg that you won't speak to me for fifty minutes." He curled
-himself up in his chair, with his thin knees drawn up to his
-hawk-like nose, and there he sat with his eyes closed and his
-black clay pipe thrusting out like the bill of some strange bird.
-I had come to the conclusion that he had dropped asleep, and
-indeed was nodding myself, when he suddenly sprang out of his
-chair with the gesture of a man who has made up his mind and put
-his pipe down upon the mantelpiece.
-
-"Sarasate plays at the St. James's Hall this afternoon," he
-remarked. "What do you think, Watson? Could your patients spare
-you for a few hours?"
-
-"I have nothing to do to-day. My practice is never very
-absorbing."
-
-"Then put on your hat and come. I am going through the City
-first, and we can have some lunch on the way. I observe that
-there is a good deal of German music on the programme, which is
-rather more to my taste than Italian or French. It is
-introspective, and I want to introspect. Come along!"
-
-We travelled by the Underground as far as Aldersgate; and a short
-walk took us to Saxe-Coburg Square, the scene of the singular
-story which we had listened to in the morning. It was a poky,
-little, shabby-genteel place, where four lines of dingy
-two-storied brick houses looked out into a small railed-in
-enclosure, where a lawn of weedy grass and a few clumps of faded
-laurel-bushes made a hard fight against a smoke-laden and
-uncongenial atmosphere. Three gilt balls and a brown board with
-"JABEZ WILSON" in white letters, upon a corner house, announced
-the place where our red-headed client carried on his business.
-Sherlock Holmes stopped in front of it with his head on one side
-and looked it all over, with his eyes shining brightly between
-puckered lids. Then he walked slowly up the street, and then down
-again to the corner, still looking keenly at the houses. Finally
-he returned to the pawnbroker's, and, having thumped vigorously
-upon the pavement with his stick two or three times, he went up
-to the door and knocked. It was instantly opened by a
-bright-looking, clean-shaven young fellow, who asked him to step
-in.
-
-"Thank you," said Holmes, "I only wished to ask you how you would
-go from here to the Strand."
-
-"Third right, fourth left," answered the assistant promptly,
-closing the door.
-
-"Smart fellow, that," observed Holmes as we walked away. "He is,
-in my judgment, the fourth smartest man in London, and for daring
-I am not sure that he has not a claim to be third. I have known
-something of him before."
-
-"Evidently," said I, "Mr. Wilson's assistant counts for a good
-deal in this mystery of the Red-headed League. I am sure that you
-inquired your way merely in order that you might see him."
-
-"Not him."
-
-"What then?"
-
-"The knees of his trousers."
-
-"And what did you see?"
-
-"What I expected to see."
-
-"Why did you beat the pavement?"
-
-"My dear doctor, this is a time for observation, not for talk. We
-are spies in an enemy's country. We know something of Saxe-Coburg
-Square. Let us now explore the parts which lie behind it."
-
-The road in which we found ourselves as we turned round the
-corner from the retired Saxe-Coburg Square presented as great a
-contrast to it as the front of a picture does to the back. It was
-one of the main arteries which conveyed the traffic of the City
-to the north and west. The roadway was blocked with the immense
-stream of commerce flowing in a double tide inward and outward,
-while the footpaths were black with the hurrying swarm of
-pedestrians. It was difficult to realise as we looked at the line
-of fine shops and stately business premises that they really
-abutted on the other side upon the faded and stagnant square
-which we had just quitted.
-
-"Let me see," said Holmes, standing at the corner and glancing
-along the line, "I should like just to remember the order of the
-houses here. It is a hobby of mine to have an exact knowledge of
-London. There is Mortimer's, the tobacconist, the little
-newspaper shop, the Coburg branch of the City and Suburban Bank,
-the Vegetarian Restaurant, and McFarlane's carriage-building
-depot. That carries us right on to the other block. And now,
-Doctor, we've done our work, so it's time we had some play. A
-sandwich and a cup of coffee, and then off to violin-land, where
-all is sweetness and delicacy and harmony, and there are no
-red-headed clients to vex us with their conundrums."
-
-My friend was an enthusiastic musician, being himself not only a
-very capable performer but a composer of no ordinary merit. All
-the afternoon he sat in the stalls wrapped in the most perfect
-happiness, gently waving his long, thin fingers in time to the
-music, while his gently smiling face and his languid, dreamy eyes
-were as unlike those of Holmes the sleuth-hound, Holmes the
-relentless, keen-witted, ready-handed criminal agent, as it was
-possible to conceive. In his singular character the dual nature
-alternately asserted itself, and his extreme exactness and
-astuteness represented, as I have often thought, the reaction
-against the poetic and contemplative mood which occasionally
-predominated in him. The swing of his nature took him from
-extreme languor to devouring energy; and, as I knew well, he was
-never so truly formidable as when, for days on end, he had been
-lounging in his armchair amid his improvisations and his
-black-letter editions. Then it was that the lust of the chase
-would suddenly come upon him, and that his brilliant reasoning
-power would rise to the level of intuition, until those who were
-unacquainted with his methods would look askance at him as on a
-man whose knowledge was not that of other mortals. When I saw him
-that afternoon so enwrapped in the music at St. James's Hall I
-felt that an evil time might be coming upon those whom he had set
-himself to hunt down.
-
-"You want to go home, no doubt, Doctor," he remarked as we
-emerged.
-
-"Yes, it would be as well."
-
-"And I have some business to do which will take some hours. This
-business at Coburg Square is serious."
-
-"Why serious?"
-
-"A considerable crime is in contemplation. I have every reason to
-believe that we shall be in time to stop it. But to-day being
-Saturday rather complicates matters. I shall want your help
-to-night."
-
-"At what time?"
-
-"Ten will be early enough."
-
-"I shall be at Baker Street at ten."
-
-"Very well. And, I say, Doctor, there may be some little danger,
-so kindly put your army revolver in your pocket." He waved his
-hand, turned on his heel, and disappeared in an instant among the
-crowd.
-
-I trust that I am not more dense than my neighbours, but I was
-always oppressed with a sense of my own stupidity in my dealings
-with Sherlock Holmes. Here I had heard what he had heard, I had
-seen what he had seen, and yet from his words it was evident that
-he saw clearly not only what had happened but what was about to
-happen, while to me the whole business was still confused and
-grotesque. As I drove home to my house in Kensington I thought
-over it all, from the extraordinary story of the red-headed
-copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
-Square, and the ominous words with which he had parted from me.
-What was this nocturnal expedition, and why should I go armed?
-Where were we going, and what were we to do? I had the hint from
-Holmes that this smooth-faced pawnbroker's assistant was a
-formidable man--a man who might play a deep game. I tried to
-puzzle it out, but gave it up in despair and set the matter aside
-until night should bring an explanation.
-
-It was a quarter-past nine when I started from home and made my
-way across the Park, and so through Oxford Street to Baker
-Street. Two hansoms were standing at the door, and as I entered
-the passage I heard the sound of voices from above. On entering
-his room I found Holmes in animated conversation with two men,
-one of whom I recognised as Peter Jones, the official police
-agent, while the other was a long, thin, sad-faced man, with a
-very shiny hat and oppressively respectable frock-coat.
-
-"Ha! Our party is complete," said Holmes, buttoning up his
-pea-jacket and taking his heavy hunting crop from the rack.
-"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
-introduce you to Mr. Merryweather, who is to be our companion in
-to-night's adventure."
-
-"We're hunting in couples again, Doctor, you see," said Jones in
-his consequential way. "Our friend here is a wonderful man for
-starting a chase. All he wants is an old dog to help him to do
-the running down."
-
-"I hope a wild goose may not prove to be the end of our chase,"
-observed Mr. Merryweather gloomily.
-
-"You may place considerable confidence in Mr. Holmes, sir," said
-the police agent loftily. "He has his own little methods, which
-are, if he won't mind my saying so, just a little too theoretical
-and fantastic, but he has the makings of a detective in him. It
-is not too much to say that once or twice, as in that business of
-the Sholto murder and the Agra treasure, he has been more nearly
-correct than the official force."
-
-"Oh, if you say so, Mr. Jones, it is all right," said the
-stranger with deference. "Still, I confess that I miss my rubber.
-It is the first Saturday night for seven-and-twenty years that I
-have not had my rubber."
-
-"I think you will find," said Sherlock Holmes, "that you will
-play for a higher stake to-night than you have ever done yet, and
-that the play will be more exciting. For you, Mr. Merryweather,
-the stake will be some 30,000 pounds; and for you, Jones, it will
-be the man upon whom you wish to lay your hands."
-
-"John Clay, the murderer, thief, smasher, and forger. He's a
-young man, Mr. Merryweather, but he is at the head of his
-profession, and I would rather have my bracelets on him than on
-any criminal in London. He's a remarkable man, is young John
-Clay. His grandfather was a royal duke, and he himself has been
-to Eton and Oxford. His brain is as cunning as his fingers, and
-though we meet signs of him at every turn, we never know where to
-find the man himself. He'll crack a crib in Scotland one week,
-and be raising money to build an orphanage in Cornwall the next.
-I've been on his track for years and have never set eyes on him
-yet."
-
-"I hope that I may have the pleasure of introducing you to-night.
-I've had one or two little turns also with Mr. John Clay, and I
-agree with you that he is at the head of his profession. It is
-past ten, however, and quite time that we started. If you two
-will take the first hansom, Watson and I will follow in the
-second."
-
-Sherlock Holmes was not very communicative during the long drive
-and lay back in the cab humming the tunes which he had heard in
-the afternoon. We rattled through an endless labyrinth of gas-lit
-streets until we emerged into Farrington Street.
-
-"We are close there now," my friend remarked. "This fellow
-Merryweather is a bank director, and personally interested in the
-matter. I thought it as well to have Jones with us also. He is
-not a bad fellow, though an absolute imbecile in his profession.
-He has one positive virtue. He is as brave as a bulldog and as
-tenacious as a lobster if he gets his claws upon anyone. Here we
-are, and they are waiting for us."
-
-We had reached the same crowded thoroughfare in which we had
-found ourselves in the morning. Our cabs were dismissed, and,
-following the guidance of Mr. Merryweather, we passed down a
-narrow passage and through a side door, which he opened for us.
-Within there was a small corridor, which ended in a very massive
-iron gate. This also was opened, and led down a flight of winding
-stone steps, which terminated at another formidable gate. Mr.
-Merryweather stopped to light a lantern, and then conducted us
-down a dark, earth-smelling passage, and so, after opening a
-third door, into a huge vault or cellar, which was piled all
-round with crates and massive boxes.
-
-"You are not very vulnerable from above," Holmes remarked as he
-held up the lantern and gazed about him.
-
-"Nor from below," said Mr. Merryweather, striking his stick upon
-the flags which lined the floor. "Why, dear me, it sounds quite
-hollow!" he remarked, looking up in surprise.
-
-"I must really ask you to be a little more quiet!" said Holmes
-severely. "You have already imperilled the whole success of our
-expedition. Might I beg that you would have the goodness to sit
-down upon one of those boxes, and not to interfere?"
-
-The solemn Mr. Merryweather perched himself upon a crate, with a
-very injured expression upon his face, while Holmes fell upon his
-knees upon the floor and, with the lantern and a magnifying lens,
-began to examine minutely the cracks between the stones. A few
-seconds sufficed to satisfy him, for he sprang to his feet again
-and put his glass in his pocket.
-
-"We have at least an hour before us," he remarked, "for they can
-hardly take any steps until the good pawnbroker is safely in bed.
-Then they will not lose a minute, for the sooner they do their
-work the longer time they will have for their escape. We are at
-present, Doctor--as no doubt you have divined--in the cellar of
-the City branch of one of the principal London banks. Mr.
-Merryweather is the chairman of directors, and he will explain to
-you that there are reasons why the more daring criminals of
-London should take a considerable interest in this cellar at
-present."
-
-"It is our French gold," whispered the director. "We have had
-several warnings that an attempt might be made upon it."
-
-"Your French gold?"
-
-"Yes. We had occasion some months ago to strengthen our resources
-and borrowed for that purpose 30,000 napoleons from the Bank of
-France. It has become known that we have never had occasion to
-unpack the money, and that it is still lying in our cellar. The
-crate upon which I sit contains 2,000 napoleons packed between
-layers of lead foil. Our reserve of bullion is much larger at
-present than is usually kept in a single branch office, and the
-directors have had misgivings upon the subject."
-
-"Which were very well justified," observed Holmes. "And now it is
-time that we arranged our little plans. I expect that within an
-hour matters will come to a head. In the meantime Mr.
-Merryweather, we must put the screen over that dark lantern."
-
-"And sit in the dark?"
-
-"I am afraid so. I had brought a pack of cards in my pocket, and
-I thought that, as we were a partie carrée, you might have your
-rubber after all. But I see that the enemy's preparations have
-gone so far that we cannot risk the presence of a light. And,
-first of all, we must choose our positions. These are daring men,
-and though we shall take them at a disadvantage, they may do us
-some harm unless we are careful. I shall stand behind this crate,
-and do you conceal yourselves behind those. Then, when I flash a
-light upon them, close in swiftly. If they fire, Watson, have no
-compunction about shooting them down."
-
-I placed my revolver, cocked, upon the top of the wooden case
-behind which I crouched. Holmes shot the slide across the front
-of his lantern and left us in pitch darkness--such an absolute
-darkness as I have never before experienced. The smell of hot
-metal remained to assure us that the light was still there, ready
-to flash out at a moment's notice. To me, with my nerves worked
-up to a pitch of expectancy, there was something depressing and
-subduing in the sudden gloom, and in the cold dank air of the
-vault.
-
-"They have but one retreat," whispered Holmes. "That is back
-through the house into Saxe-Coburg Square. I hope that you have
-done what I asked you, Jones?"
-
-"I have an inspector and two officers waiting at the front door."
-
-"Then we have stopped all the holes. And now we must be silent
-and wait."
-
-What a time it seemed! From comparing notes afterwards it was but
-an hour and a quarter, yet it appeared to me that the night must
-have almost gone and the dawn be breaking above us. My limbs
-were weary and stiff, for I feared to change my position; yet my
-nerves were worked up to the highest pitch of tension, and my
-hearing was so acute that I could not only hear the gentle
-breathing of my companions, but I could distinguish the deeper,
-heavier in-breath of the bulky Jones from the thin, sighing note
-of the bank director. From my position I could look over the case
-in the direction of the floor. Suddenly my eyes caught the glint
-of a light.
-
-At first it was but a lurid spark upon the stone pavement. Then
-it lengthened out until it became a yellow line, and then,
-without any warning or sound, a gash seemed to open and a hand
-appeared, a white, almost womanly hand, which felt about in the
-centre of the little area of light. For a minute or more the
-hand, with its writhing fingers, protruded out of the floor. Then
-it was withdrawn as suddenly as it appeared, and all was dark
-again save the single lurid spark which marked a chink between
-the stones.
-
-Its disappearance, however, was but momentary. With a rending,
-tearing sound, one of the broad, white stones turned over upon
-its side and left a square, gaping hole, through which streamed
-the light of a lantern. Over the edge there peeped a clean-cut,
-boyish face, which looked keenly about it, and then, with a hand
-on either side of the aperture, drew itself shoulder-high and
-waist-high, until one knee rested upon the edge. In another
-instant he stood at the side of the hole and was hauling after
-him a companion, lithe and small like himself, with a pale face
-and a shock of very red hair.
-
-"It's all clear," he whispered. "Have you the chisel and the
-bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
-
-Sherlock Holmes had sprung out and seized the intruder by the
-collar. The other dived down the hole, and I heard the sound of
-rending cloth as Jones clutched at his skirts. The light flashed
-upon the barrel of a revolver, but Holmes' hunting crop came
-down on the man's wrist, and the pistol clinked upon the stone
-floor.
-
-"It's no use, John Clay," said Holmes blandly. "You have no
-chance at all."
-
-"So I see," the other answered with the utmost coolness. "I fancy
-that my pal is all right, though I see you have got his
-coat-tails."
-
-"There are three men waiting for him at the door," said Holmes.
-
-"Oh, indeed! You seem to have done the thing very completely. I
-must compliment you."
-
-"And I you," Holmes answered. "Your red-headed idea was very new
-and effective."
-
-"You'll see your pal again presently," said Jones. "He's quicker
-at climbing down holes than I am. Just hold out while I fix the
-derbies."
-
-"I beg that you will not touch me with your filthy hands,"
-remarked our prisoner as the handcuffs clattered upon his wrists.
-"You may not be aware that I have royal blood in my veins. Have
-the goodness, also, when you address me always to say 'sir' and
-'please.'"
-
-"All right," said Jones with a stare and a snigger. "Well, would
-you please, sir, march upstairs, where we can get a cab to carry
-your Highness to the police-station?"
-
-"That is better," said John Clay serenely. He made a sweeping bow
-to the three of us and walked quietly off in the custody of the
-detective.
-
-"Really, Mr. Holmes," said Mr. Merryweather as we followed them
-from the cellar, "I do not know how the bank can thank you or
-repay you. There is no doubt that you have detected and defeated
-in the most complete manner one of the most determined attempts
-at bank robbery that have ever come within my experience."
-
-"I have had one or two little scores of my own to settle with Mr.
-John Clay," said Holmes. "I have been at some small expense over
-this matter, which I shall expect the bank to refund, but beyond
-that I am amply repaid by having had an experience which is in
-many ways unique, and by hearing the very remarkable narrative of
-the Red-headed League."
-
-
-"You see, Watson," he explained in the early hours of the morning
-as we sat over a glass of whisky and soda in Baker Street, "it
-was perfectly obvious from the first that the only possible
-object of this rather fantastic business of the advertisement of
-the League, and the copying of the 'Encyclopaedia,' must be to get
-this not over-bright pawnbroker out of the way for a number of
-hours every day. It was a curious way of managing it, but,
-really, it would be difficult to suggest a better. The method was
-no doubt suggested to Clay's ingenious mind by the colour of his
-accomplice's hair. The 4 pounds a week was a lure which must draw
-him, and what was it to them, who were playing for thousands?
-They put in the advertisement, one rogue has the temporary
-office, the other rogue incites the man to apply for it, and
-together they manage to secure his absence every morning in the
-week. From the time that I heard of the assistant having come for
-half wages, it was obvious to me that he had some strong motive
-for securing the situation."
-
-"But how could you guess what the motive was?"
-
-"Had there been women in the house, I should have suspected a
-mere vulgar intrigue. That, however, was out of the question. The
-man's business was a small one, and there was nothing in his
-house which could account for such elaborate preparations, and
-such an expenditure as they were at. It must, then, be something
-out of the house. What could it be? I thought of the assistant's
-fondness for photography, and his trick of vanishing into the
-cellar. The cellar! There was the end of this tangled clue. Then
-I made inquiries as to this mysterious assistant and found that I
-had to deal with one of the coolest and most daring criminals in
-London. He was doing something in the cellar--something which
-took many hours a day for months on end. What could it be, once
-more? I could think of nothing save that he was running a tunnel
-to some other building.
-
-"So far I had got when we went to visit the scene of action. I
-surprised you by beating upon the pavement with my stick. I was
-ascertaining whether the cellar stretched out in front or behind.
-It was not in front. Then I rang the bell, and, as I hoped, the
-assistant answered it. We have had some skirmishes, but we had
-never set eyes upon each other before. I hardly looked at his
-face. His knees were what I wished to see. You must yourself have
-remarked how worn, wrinkled, and stained they were. They spoke of
-those hours of burrowing. The only remaining point was what they
-were burrowing for. I walked round the corner, saw the City and
-Suburban Bank abutted on our friend's premises, and felt that I
-had solved my problem. When you drove home after the concert I
-called upon Scotland Yard and upon the chairman of the bank
-directors, with the result that you have seen."
-
-"And how could you tell that they would make their attempt
-to-night?" I asked.
-
-"Well, when they closed their League offices that was a sign that
-they cared no longer about Mr. Jabez Wilson's presence--in other
-words, that they had completed their tunnel. But it was essential
-that they should use it soon, as it might be discovered, or the
-bullion might be removed. Saturday would suit them better than
-any other day, as it would give them two days for their escape.
-For all these reasons I expected them to come to-night."
-
-"You reasoned it out beautifully," I exclaimed in unfeigned
-admiration. "It is so long a chain, and yet every link rings
-true."
-
-"It saved me from ennui," he answered, yawning. "Alas! I already
-feel it closing in upon me. My life is spent in one long effort
-to escape from the commonplaces of existence. These little
-problems help me to do so."
-
-"And you are a benefactor of the race," said I.
-
-He shrugged his shoulders. "Well, perhaps, after all, it is of
-some little use," he remarked. "'L'homme c'est rien--l'oeuvre
-c'est tout,' as Gustave Flaubert wrote to George Sand."
-
-
-
-ADVENTURE III. A CASE OF IDENTITY
-
-"My dear fellow," said Sherlock Holmes as we sat on either side
-of the fire in his lodgings at Baker Street, "life is infinitely
-stranger than anything which the mind of man could invent. We
-would not dare to conceive the things which are really mere
-commonplaces of existence. If we could fly out of that window
-hand in hand, hover over this great city, gently remove the
-roofs, and peep in at the queer things which are going on, the
-strange coincidences, the plannings, the cross-purposes, the
-wonderful chains of events, working through generations, and
-leading to the most outré results, it would make all fiction with
-its conventionalities and foreseen conclusions most stale and
-unprofitable."
-
-"And yet I am not convinced of it," I answered. "The cases which
-come to light in the papers are, as a rule, bald enough, and
-vulgar enough. We have in our police reports realism pushed to
-its extreme limits, and yet the result is, it must be confessed,
-neither fascinating nor artistic."
-
-"A certain selection and discretion must be used in producing a
-realistic effect," remarked Holmes. "This is wanting in the
-police report, where more stress is laid, perhaps, upon the
-platitudes of the magistrate than upon the details, which to an
-observer contain the vital essence of the whole matter. Depend
-upon it, there is nothing so unnatural as the commonplace."
-
-I smiled and shook my head. "I can quite understand your thinking
-so," I said. "Of course, in your position of unofficial adviser
-and helper to everybody who is absolutely puzzled, throughout
-three continents, you are brought in contact with all that is
-strange and bizarre. But here"--I picked up the morning paper
-from the ground--"let us put it to a practical test. Here is the
-first heading upon which I come. 'A husband's cruelty to his
-wife.' There is half a column of print, but I know without
-reading it that it is all perfectly familiar to me. There is, of
-course, the other woman, the drink, the push, the blow, the
-bruise, the sympathetic sister or landlady. The crudest of
-writers could invent nothing more crude."
-
-"Indeed, your example is an unfortunate one for your argument,"
-said Holmes, taking the paper and glancing his eye down it. "This
-is the Dundas separation case, and, as it happens, I was engaged
-in clearing up some small points in connection with it. The
-husband was a teetotaler, there was no other woman, and the
-conduct complained of was that he had drifted into the habit of
-winding up every meal by taking out his false teeth and hurling
-them at his wife, which, you will allow, is not an action likely
-to occur to the imagination of the average story-teller. Take a
-pinch of snuff, Doctor, and acknowledge that I have scored over
-you in your example."
-
-He held out his snuffbox of old gold, with a great amethyst in
-the centre of the lid. Its splendour was in such contrast to his
-homely ways and simple life that I could not help commenting upon
-it.
-
-"Ah," said he, "I forgot that I had not seen you for some weeks.
-It is a little souvenir from the King of Bohemia in return for my
-assistance in the case of the Irene Adler papers."
-
-"And the ring?" I asked, glancing at a remarkable brilliant which
-sparkled upon his finger.
-
-"It was from the reigning family of Holland, though the matter in
-which I served them was of such delicacy that I cannot confide it
-even to you, who have been good enough to chronicle one or two of
-my little problems."
-
-"And have you any on hand just now?" I asked with interest.
-
-"Some ten or twelve, but none which present any feature of
-interest. They are important, you understand, without being
-interesting. Indeed, I have found that it is usually in
-unimportant matters that there is a field for the observation,
-and for the quick analysis of cause and effect which gives the
-charm to an investigation. The larger crimes are apt to be the
-simpler, for the bigger the crime the more obvious, as a rule, is
-the motive. In these cases, save for one rather intricate matter
-which has been referred to me from Marseilles, there is nothing
-which presents any features of interest. It is possible, however,
-that I may have something better before very many minutes are
-over, for this is one of my clients, or I am much mistaken."
-
-He had risen from his chair and was standing between the parted
-blinds gazing down into the dull neutral-tinted London street.
-Looking over his shoulder, I saw that on the pavement opposite
-there stood a large woman with a heavy fur boa round her neck,
-and a large curling red feather in a broad-brimmed hat which was
-tilted in a coquettish Duchess of Devonshire fashion over her
-ear. From under this great panoply she peeped up in a nervous,
-hesitating fashion at our windows, while her body oscillated
-backward and forward, and her fingers fidgeted with her glove
-buttons. Suddenly, with a plunge, as of the swimmer who leaves
-the bank, she hurried across the road, and we heard the sharp
-clang of the bell.
-
-"I have seen those symptoms before," said Holmes, throwing his
-cigarette into the fire. "Oscillation upon the pavement always
-means an affaire de coeur. She would like advice, but is not sure
-that the matter is not too delicate for communication. And yet
-even here we may discriminate. When a woman has been seriously
-wronged by a man she no longer oscillates, and the usual symptom
-is a broken bell wire. Here we may take it that there is a love
-matter, but that the maiden is not so much angry as perplexed, or
-grieved. But here she comes in person to resolve our doubts."
-
-As he spoke there was a tap at the door, and the boy in buttons
-entered to announce Miss Mary Sutherland, while the lady herself
-loomed behind his small black figure like a full-sailed
-merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
-her with the easy courtesy for which he was remarkable, and,
-having closed the door and bowed her into an armchair, he looked
-her over in the minute and yet abstracted fashion which was
-peculiar to him.
-
-"Do you not find," he said, "that with your short sight it is a
-little trying to do so much typewriting?"
-
-"I did at first," she answered, "but now I know where the letters
-are without looking." Then, suddenly realising the full purport
-of his words, she gave a violent start and looked up, with fear
-and astonishment upon her broad, good-humoured face. "You've
-heard about me, Mr. Holmes," she cried, "else how could you know
-all that?"
-
-"Never mind," said Holmes, laughing; "it is my business to know
-things. Perhaps I have trained myself to see what others
-overlook. If not, why should you come to consult me?"
-
-"I came to you, sir, because I heard of you from Mrs. Etherege,
-whose husband you found so easy when the police and everyone had
-given him up for dead. Oh, Mr. Holmes, I wish you would do as
-much for me. I'm not rich, but still I have a hundred a year in
-my own right, besides the little that I make by the machine, and
-I would give it all to know what has become of Mr. Hosmer Angel."
-
-"Why did you come away to consult me in such a hurry?" asked
-Sherlock Holmes, with his finger-tips together and his eyes to
-the ceiling.
-
-Again a startled look came over the somewhat vacuous face of Miss
-Mary Sutherland. "Yes, I did bang out of the house," she said,
-"for it made me angry to see the easy way in which Mr.
-Windibank--that is, my father--took it all. He would not go to
-the police, and he would not go to you, and so at last, as he
-would do nothing and kept on saying that there was no harm done,
-it made me mad, and I just on with my things and came right away
-to you."
-
-"Your father," said Holmes, "your stepfather, surely, since the
-name is different."
-
-"Yes, my stepfather. I call him father, though it sounds funny,
-too, for he is only five years and two months older than myself."
-
-"And your mother is alive?"
-
-"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
-Holmes, when she married again so soon after father's death, and
-a man who was nearly fifteen years younger than herself. Father
-was a plumber in the Tottenham Court Road, and he left a tidy
-business behind him, which mother carried on with Mr. Hardy, the
-foreman; but when Mr. Windibank came he made her sell the
-business, for he was very superior, being a traveller in wines.
-They got 4700 pounds for the goodwill and interest, which wasn't
-near as much as father could have got if he had been alive."
-
-I had expected to see Sherlock Holmes impatient under this
-rambling and inconsequential narrative, but, on the contrary, he
-had listened with the greatest concentration of attention.
-
-"Your own little income," he asked, "does it come out of the
-business?"
-
-"Oh, no, sir. It is quite separate and was left me by my uncle
-Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
-cent. Two thousand five hundred pounds was the amount, but I can
-only touch the interest."
-
-"You interest me extremely," said Holmes. "And since you draw so
-large a sum as a hundred a year, with what you earn into the
-bargain, you no doubt travel a little and indulge yourself in
-every way. I believe that a single lady can get on very nicely
-upon an income of about 60 pounds."
-
-"I could do with much less than that, Mr. Holmes, but you
-understand that as long as I live at home I don't wish to be a
-burden to them, and so they have the use of the money just while
-I am staying with them. Of course, that is only just for the
-time. Mr. Windibank draws my interest every quarter and pays it
-over to mother, and I find that I can do pretty well with what I
-earn at typewriting. It brings me twopence a sheet, and I can
-often do from fifteen to twenty sheets in a day."
-
-"You have made your position very clear to me," said Holmes.
-"This is my friend, Dr. Watson, before whom you can speak as
-freely as before myself. Kindly tell us now all about your
-connection with Mr. Hosmer Angel."
-
-A flush stole over Miss Sutherland's face, and she picked
-nervously at the fringe of her jacket. "I met him first at the
-gasfitters' ball," she said. "They used to send father tickets
-when he was alive, and then afterwards they remembered us, and
-sent them to mother. Mr. Windibank did not wish us to go. He
-never did wish us to go anywhere. He would get quite mad if I
-wanted so much as to join a Sunday-school treat. But this time I
-was set on going, and I would go; for what right had he to
-prevent? He said the folk were not fit for us to know, when all
-father's friends were to be there. And he said that I had nothing
-fit to wear, when I had my purple plush that I had never so much
-as taken out of the drawer. At last, when nothing else would do,
-he went off to France upon the business of the firm, but we went,
-mother and I, with Mr. Hardy, who used to be our foreman, and it
-was there I met Mr. Hosmer Angel."
-
-"I suppose," said Holmes, "that when Mr. Windibank came back from
-France he was very annoyed at your having gone to the ball."
-
-"Oh, well, he was very good about it. He laughed, I remember, and
-shrugged his shoulders, and said there was no use denying
-anything to a woman, for she would have her way."
-
-"I see. Then at the gasfitters' ball you met, as I understand, a
-gentleman called Mr. Hosmer Angel."
-
-"Yes, sir. I met him that night, and he called next day to ask if
-we had got home all safe, and after that we met him--that is to
-say, Mr. Holmes, I met him twice for walks, but after that father
-came back again, and Mr. Hosmer Angel could not come to the house
-any more."
-
-"No?"
-
-"Well, you know father didn't like anything of the sort. He
-wouldn't have any visitors if he could help it, and he used to
-say that a woman should be happy in her own family circle. But
-then, as I used to say to mother, a woman wants her own circle to
-begin with, and I had not got mine yet."
-
-"But how about Mr. Hosmer Angel? Did he make no attempt to see
-you?"
-
-"Well, father was going off to France again in a week, and Hosmer
-wrote and said that it would be safer and better not to see each
-other until he had gone. We could write in the meantime, and he
-used to write every day. I took the letters in in the morning, so
-there was no need for father to know."
-
-"Were you engaged to the gentleman at this time?"
-
-"Oh, yes, Mr. Holmes. We were engaged after the first walk that
-we took. Hosmer--Mr. Angel--was a cashier in an office in
-Leadenhall Street--and--"
-
-"What office?"
-
-"That's the worst of it, Mr. Holmes, I don't know."
-
-"Where did he live, then?"
-
-"He slept on the premises."
-
-"And you don't know his address?"
-
-"No--except that it was Leadenhall Street."
-
-"Where did you address your letters, then?"
-
-"To the Leadenhall Street Post Office, to be left till called
-for. He said that if they were sent to the office he would be
-chaffed by all the other clerks about having letters from a lady,
-so I offered to typewrite them, like he did his, but he wouldn't
-have that, for he said that when I wrote them they seemed to come
-from me, but when they were typewritten he always felt that the
-machine had come between us. That will just show you how fond he
-was of me, Mr. Holmes, and the little things that he would think
-of."
-
-"It was most suggestive," said Holmes. "It has long been an axiom
-of mine that the little things are infinitely the most important.
-Can you remember any other little things about Mr. Hosmer Angel?"
-
-"He was a very shy man, Mr. Holmes. He would rather walk with me
-in the evening than in the daylight, for he said that he hated to
-be conspicuous. Very retiring and gentlemanly he was. Even his
-voice was gentle. He'd had the quinsy and swollen glands when he
-was young, he told me, and it had left him with a weak throat,
-and a hesitating, whispering fashion of speech. He was always
-well dressed, very neat and plain, but his eyes were weak, just
-as mine are, and he wore tinted glasses against the glare."
-
-"Well, and what happened when Mr. Windibank, your stepfather,
-returned to France?"
-
-"Mr. Hosmer Angel came to the house again and proposed that we
-should marry before father came back. He was in dreadful earnest
-and made me swear, with my hands on the Testament, that whatever
-happened I would always be true to him. Mother said he was quite
-right to make me swear, and that it was a sign of his passion.
-Mother was all in his favour from the first and was even fonder
-of him than I was. Then, when they talked of marrying within the
-week, I began to ask about father; but they both said never to
-mind about father, but just to tell him afterwards, and mother
-said she would make it all right with him. I didn't quite like
-that, Mr. Holmes. It seemed funny that I should ask his leave, as
-he was only a few years older than me; but I didn't want to do
-anything on the sly, so I wrote to father at Bordeaux, where the
-company has its French offices, but the letter came back to me on
-the very morning of the wedding."
-
-"It missed him, then?"
-
-"Yes, sir; for he had started to England just before it arrived."
-
-"Ha! that was unfortunate. Your wedding was arranged, then, for
-the Friday. Was it to be in church?"
-
-"Yes, sir, but very quietly. It was to be at St. Saviour's, near
-King's Cross, and we were to have breakfast afterwards at the St.
-Pancras Hotel. Hosmer came for us in a hansom, but as there were
-two of us he put us both into it and stepped himself into a
-four-wheeler, which happened to be the only other cab in the
-street. We got to the church first, and when the four-wheeler
-drove up we waited for him to step out, but he never did, and
-when the cabman got down from the box and looked there was no one
-there! The cabman said that he could not imagine what had become
-of him, for he had seen him get in with his own eyes. That was
-last Friday, Mr. Holmes, and I have never seen or heard anything
-since then to throw any light upon what became of him."
-
-"It seems to me that you have been very shamefully treated," said
-Holmes.
-
-"Oh, no, sir! He was too good and kind to leave me so. Why, all
-the morning he was saying to me that, whatever happened, I was to
-be true; and that even if something quite unforeseen occurred to
-separate us, I was always to remember that I was pledged to him,
-and that he would claim his pledge sooner or later. It seemed
-strange talk for a wedding-morning, but what has happened since
-gives a meaning to it."
-
-"Most certainly it does. Your own opinion is, then, that some
-unforeseen catastrophe has occurred to him?"
-
-"Yes, sir. I believe that he foresaw some danger, or else he
-would not have talked so. And then I think that what he foresaw
-happened."
-
-"But you have no notion as to what it could have been?"
-
-"None."
-
-"One more question. How did your mother take the matter?"
-
-"She was angry, and said that I was never to speak of the matter
-again."
-
-"And your father? Did you tell him?"
-
-"Yes; and he seemed to think, with me, that something had
-happened, and that I should hear of Hosmer again. As he said,
-what interest could anyone have in bringing me to the doors of
-the church, and then leaving me? Now, if he had borrowed my
-money, or if he had married me and got my money settled on him,
-there might be some reason, but Hosmer was very independent about
-money and never would look at a shilling of mine. And yet, what
-could have happened? And why could he not write? Oh, it drives me
-half-mad to think of it, and I can't sleep a wink at night." She
-pulled a little handkerchief out of her muff and began to sob
-heavily into it.
-
-"I shall glance into the case for you," said Holmes, rising, "and
-I have no doubt that we shall reach some definite result. Let the
-weight of the matter rest upon me now, and do not let your mind
-dwell upon it further. Above all, try to let Mr. Hosmer Angel
-vanish from your memory, as he has done from your life."
-
-"Then you don't think I'll see him again?"
-
-"I fear not."
-
-"Then what has happened to him?"
-
-"You will leave that question in my hands. I should like an
-accurate description of him and any letters of his which you can
-spare."
-
-"I advertised for him in last Saturday's Chronicle," said she.
-"Here is the slip and here are four letters from him."
-
-"Thank you. And your address?"
-
-"No. 31 Lyon Place, Camberwell."
-
-"Mr. Angel's address you never had, I understand. Where is your
-father's place of business?"
-
-"He travels for Westhouse & Marbank, the great claret importers
-of Fenchurch Street."
-
-"Thank you. You have made your statement very clearly. You will
-leave the papers here, and remember the advice which I have given
-you. Let the whole incident be a sealed book, and do not allow it
-to affect your life."
-
-"You are very kind, Mr. Holmes, but I cannot do that. I shall be
-true to Hosmer. He shall find me ready when he comes back."
-
-For all the preposterous hat and the vacuous face, there was
-something noble in the simple faith of our visitor which
-compelled our respect. She laid her little bundle of papers upon
-the table and went her way, with a promise to come again whenever
-she might be summoned.
-
-Sherlock Holmes sat silent for a few minutes with his fingertips
-still pressed together, his legs stretched out in front of him,
-and his gaze directed upward to the ceiling. Then he took down
-from the rack the old and oily clay pipe, which was to him as a
-counsellor, and, having lit it, he leaned back in his chair, with
-the thick blue cloud-wreaths spinning up from him, and a look of
-infinite languor in his face.
-
-"Quite an interesting study, that maiden," he observed. "I found
-her more interesting than her little problem, which, by the way,
-is rather a trite one. You will find parallel cases, if you
-consult my index, in Andover in '77, and there was something of
-the sort at The Hague last year. Old as is the idea, however,
-there were one or two details which were new to me. But the
-maiden herself was most instructive."
-
-"You appeared to read a good deal upon her which was quite
-invisible to me," I remarked.
-
-"Not invisible but unnoticed, Watson. You did not know where to
-look, and so you missed all that was important. I can never bring
-you to realise the importance of sleeves, the suggestiveness of
-thumb-nails, or the great issues that may hang from a boot-lace.
-Now, what did you gather from that woman's appearance? Describe
-it."
-
-"Well, she had a slate-coloured, broad-brimmed straw hat, with a
-feather of a brickish red. Her jacket was black, with black beads
-sewn upon it, and a fringe of little black jet ornaments. Her
-dress was brown, rather darker than coffee colour, with a little
-purple plush at the neck and sleeves. Her gloves were greyish and
-were worn through at the right forefinger. Her boots I didn't
-observe. She had small round, hanging gold earrings, and a
-general air of being fairly well-to-do in a vulgar, comfortable,
-easy-going way."
-
-Sherlock Holmes clapped his hands softly together and chuckled.
-
-"'Pon my word, Watson, you are coming along wonderfully. You have
-really done very well indeed. It is true that you have missed
-everything of importance, but you have hit upon the method, and
-you have a quick eye for colour. Never trust to general
-impressions, my boy, but concentrate yourself upon details. My
-first glance is always at a woman's sleeve. In a man it is
-perhaps better first to take the knee of the trouser. As you
-observe, this woman had plush upon her sleeves, which is a most
-useful material for showing traces. The double line a little
-above the wrist, where the typewritist presses against the table,
-was beautifully defined. The sewing-machine, of the hand type,
-leaves a similar mark, but only on the left arm, and on the side
-of it farthest from the thumb, instead of being right across the
-broadest part, as this was. I then glanced at her face, and,
-observing the dint of a pince-nez at either side of her nose, I
-ventured a remark upon short sight and typewriting, which seemed
-to surprise her."
-
-"It surprised me."
-
-"But, surely, it was obvious. I was then much surprised and
-interested on glancing down to observe that, though the boots
-which she was wearing were not unlike each other, they were
-really odd ones; the one having a slightly decorated toe-cap, and
-the other a plain one. One was buttoned only in the two lower
-buttons out of five, and the other at the first, third, and
-fifth. Now, when you see that a young lady, otherwise neatly
-dressed, has come away from home with odd boots, half-buttoned,
-it is no great deduction to say that she came away in a hurry."
-
-"And what else?" I asked, keenly interested, as I always was, by
-my friend's incisive reasoning.
-
-"I noted, in passing, that she had written a note before leaving
-home but after being fully dressed. You observed that her right
-glove was torn at the forefinger, but you did not apparently see
-that both glove and finger were stained with violet ink. She had
-written in a hurry and dipped her pen too deep. It must have been
-this morning, or the mark would not remain clear upon the finger.
-All this is amusing, though rather elementary, but I must go back
-to business, Watson. Would you mind reading me the advertised
-description of Mr. Hosmer Angel?"
-
-I held the little printed slip to the light.
-
-"Missing," it said, "on the morning of the fourteenth, a gentleman
-named Hosmer Angel. About five ft. seven in. in height;
-strongly built, sallow complexion, black hair, a little bald in
-the centre, bushy, black side-whiskers and moustache; tinted
-glasses, slight infirmity of speech. Was dressed, when last seen,
-in black frock-coat faced with silk, black waistcoat, gold Albert
-chain, and grey Harris tweed trousers, with brown gaiters over
-elastic-sided boots. Known to have been employed in an office in
-Leadenhall Street. Anybody bringing--"
-
-"That will do," said Holmes. "As to the letters," he continued,
-glancing over them, "they are very commonplace. Absolutely no
-clue in them to Mr. Angel, save that he quotes Balzac once. There
-is one remarkable point, however, which will no doubt strike
-you."
-
-"They are typewritten," I remarked.
-
-"Not only that, but the signature is typewritten. Look at the
-neat little 'Hosmer Angel' at the bottom. There is a date, you
-see, but no superscription except Leadenhall Street, which is
-rather vague. The point about the signature is very suggestive--in
-fact, we may call it conclusive."
-
-"Of what?"
-
-"My dear fellow, is it possible you do not see how strongly it
-bears upon the case?"
-
-"I cannot say that I do unless it were that he wished to be able
-to deny his signature if an action for breach of promise were
-instituted."
-
-"No, that was not the point. However, I shall write two letters,
-which should settle the matter. One is to a firm in the City, the
-other is to the young lady's stepfather, Mr. Windibank, asking
-him whether he could meet us here at six o'clock tomorrow
-evening. It is just as well that we should do business with the
-male relatives. And now, Doctor, we can do nothing until the
-answers to those letters come, so we may put our little problem
-upon the shelf for the interim."
-
-I had had so many reasons to believe in my friend's subtle powers
-of reasoning and extraordinary energy in action that I felt that
-he must have some solid grounds for the assured and easy
-demeanour with which he treated the singular mystery which he had
-been called upon to fathom. Once only had I known him to fail, in
-the case of the King of Bohemia and of the Irene Adler
-photograph; but when I looked back to the weird business of the
-Sign of Four, and the extraordinary circumstances connected with
-the Study in Scarlet, I felt that it would be a strange tangle
-indeed which he could not unravel.
-
-I left him then, still puffing at his black clay pipe, with the
-conviction that when I came again on the next evening I would
-find that he held in his hands all the clues which would lead up
-to the identity of the disappearing bridegroom of Miss Mary
-Sutherland.
-
-A professional case of great gravity was engaging my own
-attention at the time, and the whole of next day I was busy at
-the bedside of the sufferer. It was not until close upon six
-o'clock that I found myself free and was able to spring into a
-hansom and drive to Baker Street, half afraid that I might be too
-late to assist at the dénouement of the little mystery. I found
-Sherlock Holmes alone, however, half asleep, with his long, thin
-form curled up in the recesses of his armchair. A formidable
-array of bottles and test-tubes, with the pungent cleanly smell
-of hydrochloric acid, told me that he had spent his day in the
-chemical work which was so dear to him.
-
-"Well, have you solved it?" I asked as I entered.
-
-"Yes. It was the bisulphate of baryta."
-
-"No, no, the mystery!" I cried.
-
-"Oh, that! I thought of the salt that I have been working upon.
-There was never any mystery in the matter, though, as I said
-yesterday, some of the details are of interest. The only drawback
-is that there is no law, I fear, that can touch the scoundrel."
-
-"Who was he, then, and what was his object in deserting Miss
-Sutherland?"
-
-The question was hardly out of my mouth, and Holmes had not yet
-opened his lips to reply, when we heard a heavy footfall in the
-passage and a tap at the door.
-
-"This is the girl's stepfather, Mr. James Windibank," said
-Holmes. "He has written to me to say that he would be here at
-six. Come in!"
-
-The man who entered was a sturdy, middle-sized fellow, some
-thirty years of age, clean-shaven, and sallow-skinned, with a
-bland, insinuating manner, and a pair of wonderfully sharp and
-penetrating grey eyes. He shot a questioning glance at each of
-us, placed his shiny top-hat upon the sideboard, and with a
-slight bow sidled down into the nearest chair.
-
-"Good-evening, Mr. James Windibank," said Holmes. "I think that
-this typewritten letter is from you, in which you made an
-appointment with me for six o'clock?"
-
-"Yes, sir. I am afraid that I am a little late, but I am not
-quite my own master, you know. I am sorry that Miss Sutherland
-has troubled you about this little matter, for I think it is far
-better not to wash linen of the sort in public. It was quite
-against my wishes that she came, but she is a very excitable,
-impulsive girl, as you may have noticed, and she is not easily
-controlled when she has made up her mind on a point. Of course, I
-did not mind you so much, as you are not connected with the
-official police, but it is not pleasant to have a family
-misfortune like this noised abroad. Besides, it is a useless
-expense, for how could you possibly find this Hosmer Angel?"
-
-"On the contrary," said Holmes quietly; "I have every reason to
-believe that I will succeed in discovering Mr. Hosmer Angel."
-
-Mr. Windibank gave a violent start and dropped his gloves. "I am
-delighted to hear it," he said.
-
-"It is a curious thing," remarked Holmes, "that a typewriter has
-really quite as much individuality as a man's handwriting. Unless
-they are quite new, no two of them write exactly alike. Some
-letters get more worn than others, and some wear only on one
-side. Now, you remark in this note of yours, Mr. Windibank, that
-in every case there is some little slurring over of the 'e,' and
-a slight defect in the tail of the 'r.' There are fourteen other
-characteristics, but those are the more obvious."
-
-"We do all our correspondence with this machine at the office,
-and no doubt it is a little worn," our visitor answered, glancing
-keenly at Holmes with his bright little eyes.
-
-"And now I will show you what is really a very interesting study,
-Mr. Windibank," Holmes continued. "I think of writing another
-little monograph some of these days on the typewriter and its
-relation to crime. It is a subject to which I have devoted some
-little attention. I have here four letters which purport to come
-from the missing man. They are all typewritten. In each case, not
-only are the 'e's' slurred and the 'r's' tailless, but you will
-observe, if you care to use my magnifying lens, that the fourteen
-other characteristics to which I have alluded are there as well."
-
-Mr. Windibank sprang out of his chair and picked up his hat. "I
-cannot waste time over this sort of fantastic talk, Mr. Holmes,"
-he said. "If you can catch the man, catch him, and let me know
-when you have done it."
-
-"Certainly," said Holmes, stepping over and turning the key in
-the door. "I let you know, then, that I have caught him!"
-
-"What! where?" shouted Mr. Windibank, turning white to his lips
-and glancing about him like a rat in a trap.
-
-"Oh, it won't do--really it won't," said Holmes suavely. "There
-is no possible getting out of it, Mr. Windibank. It is quite too
-transparent, and it was a very bad compliment when you said that
-it was impossible for me to solve so simple a question. That's
-right! Sit down and let us talk it over."
-
-Our visitor collapsed into a chair, with a ghastly face and a
-glitter of moisture on his brow. "It--it's not actionable," he
-stammered.
-
-"I am very much afraid that it is not. But between ourselves,
-Windibank, it was as cruel and selfish and heartless a trick in a
-petty way as ever came before me. Now, let me just run over the
-course of events, and you will contradict me if I go wrong."
-
-The man sat huddled up in his chair, with his head sunk upon his
-breast, like one who is utterly crushed. Holmes stuck his feet up
-on the corner of the mantelpiece and, leaning back with his hands
-in his pockets, began talking, rather to himself, as it seemed,
-than to us.
-
-"The man married a woman very much older than himself for her
-money," said he, "and he enjoyed the use of the money of the
-daughter as long as she lived with them. It was a considerable
-sum, for people in their position, and the loss of it would have
-made a serious difference. It was worth an effort to preserve it.
-The daughter was of a good, amiable disposition, but affectionate
-and warm-hearted in her ways, so that it was evident that with
-her fair personal advantages, and her little income, she would
-not be allowed to remain single long. Now her marriage would
-mean, of course, the loss of a hundred a year, so what does her
-stepfather do to prevent it? He takes the obvious course of
-keeping her at home and forbidding her to seek the company of
-people of her own age. But soon he found that that would not
-answer forever. She became restive, insisted upon her rights, and
-finally announced her positive intention of going to a certain
-ball. What does her clever stepfather do then? He conceives an
-idea more creditable to his head than to his heart. With the
-connivance and assistance of his wife he disguised himself,
-covered those keen eyes with tinted glasses, masked the face with
-a moustache and a pair of bushy whiskers, sunk that clear voice
-into an insinuating whisper, and doubly secure on account of the
-girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
-other lovers by making love himself."
-
-"It was only a joke at first," groaned our visitor. "We never
-thought that she would have been so carried away."
-
-"Very likely not. However that may be, the young lady was very
-decidedly carried away, and, having quite made up her mind that
-her stepfather was in France, the suspicion of treachery never
-for an instant entered her mind. She was flattered by the
-gentleman's attentions, and the effect was increased by the
-loudly expressed admiration of her mother. Then Mr. Angel began
-to call, for it was obvious that the matter should be pushed as
-far as it would go if a real effect were to be produced. There
-were meetings, and an engagement, which would finally secure the
-girl's affections from turning towards anyone else. But the
-deception could not be kept up forever. These pretended journeys
-to France were rather cumbrous. The thing to do was clearly to
-bring the business to an end in such a dramatic manner that it
-would leave a permanent impression upon the young lady's mind and
-prevent her from looking upon any other suitor for some time to
-come. Hence those vows of fidelity exacted upon a Testament, and
-hence also the allusions to a possibility of something happening
-on the very morning of the wedding. James Windibank wished Miss
-Sutherland to be so bound to Hosmer Angel, and so uncertain as to
-his fate, that for ten years to come, at any rate, she would not
-listen to another man. As far as the church door he brought her,
-and then, as he could go no farther, he conveniently vanished
-away by the old trick of stepping in at one door of a
-four-wheeler and out at the other. I think that was the chain of
-events, Mr. Windibank!"
-
-Our visitor had recovered something of his assurance while Holmes
-had been talking, and he rose from his chair now with a cold
-sneer upon his pale face.
-
-"It may be so, or it may not, Mr. Holmes," said he, "but if you
-are so very sharp you ought to be sharp enough to know that it is
-you who are breaking the law now, and not me. I have done nothing
-actionable from the first, but as long as you keep that door
-locked you lay yourself open to an action for assault and illegal
-constraint."
-
-"The law cannot, as you say, touch you," said Holmes, unlocking
-and throwing open the door, "yet there never was a man who
-deserved punishment more. If the young lady has a brother or a
-friend, he ought to lay a whip across your shoulders. By Jove!"
-he continued, flushing up at the sight of the bitter sneer upon
-the man's face, "it is not part of my duties to my client, but
-here's a hunting crop handy, and I think I shall just treat
-myself to--" He took two swift steps to the whip, but before he
-could grasp it there was a wild clatter of steps upon the stairs,
-the heavy hall door banged, and from the window we could see Mr.
-James Windibank running at the top of his speed down the road.
-
-"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
-threw himself down into his chair once more. "That fellow will
-rise from crime to crime until he does something very bad, and
-ends on a gallows. The case has, in some respects, been not
-entirely devoid of interest."
-
-"I cannot now entirely see all the steps of your reasoning," I
-remarked.
-
-"Well, of course it was obvious from the first that this Mr.
-Hosmer Angel must have some strong object for his curious
-conduct, and it was equally clear that the only man who really
-profited by the incident, as far as we could see, was the
-stepfather. Then the fact that the two men were never together,
-but that the one always appeared when the other was away, was
-suggestive. So were the tinted spectacles and the curious voice,
-which both hinted at a disguise, as did the bushy whiskers. My
-suspicions were all confirmed by his peculiar action in
-typewriting his signature, which, of course, inferred that his
-handwriting was so familiar to her that she would recognise even
-the smallest sample of it. You see all these isolated facts,
-together with many minor ones, all pointed in the same
-direction."
-
-"And how did you verify them?"
-
-"Having once spotted my man, it was easy to get corroboration. I
-knew the firm for which this man worked. Having taken the printed
-description. I eliminated everything from it which could be the
-result of a disguise--the whiskers, the glasses, the voice, and I
-sent it to the firm, with a request that they would inform me
-whether it answered to the description of any of their
-travellers. I had already noticed the peculiarities of the
-typewriter, and I wrote to the man himself at his business
-address asking him if he would come here. As I expected, his
-reply was typewritten and revealed the same trivial but
-characteristic defects. The same post brought me a letter from
-Westhouse & Marbank, of Fenchurch Street, to say that the
-description tallied in every respect with that of their employé,
-James Windibank. Voilà tout!"
-
-"And Miss Sutherland?"
-
-"If I tell her she will not believe me. You may remember the old
-Persian saying, 'There is danger for him who taketh the tiger
-cub, and danger also for whoso snatches a delusion from a woman.'
-There is as much sense in Hafiz as in Horace, and as much
-knowledge of the world."
-
-
-
-ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
-
-We were seated at breakfast one morning, my wife and I, when the
-maid brought in a telegram. It was from Sherlock Holmes and ran
-in this way:
-
-"Have you a couple of days to spare? Have just been wired for from
-the west of England in connection with Boscombe Valley tragedy.
-Shall be glad if you will come with me. Air and scenery perfect.
-Leave Paddington by the 11:15."
-
-"What do you say, dear?" said my wife, looking across at me.
-"Will you go?"
-
-"I really don't know what to say. I have a fairly long list at
-present."
-
-"Oh, Anstruther would do your work for you. You have been looking
-a little pale lately. I think that the change would do you good,
-and you are always so interested in Mr. Sherlock Holmes' cases."
-
-"I should be ungrateful if I were not, seeing what I gained
-through one of them," I answered. "But if I am to go, I must pack
-at once, for I have only half an hour."
-
-My experience of camp life in Afghanistan had at least had the
-effect of making me a prompt and ready traveller. My wants were
-few and simple, so that in less than the time stated I was in a
-cab with my valise, rattling away to Paddington Station. Sherlock
-Holmes was pacing up and down the platform, his tall, gaunt
-figure made even gaunter and taller by his long grey
-travelling-cloak and close-fitting cloth cap.
-
-"It is really very good of you to come, Watson," said he. "It
-makes a considerable difference to me, having someone with me on
-whom I can thoroughly rely. Local aid is always either worthless
-or else biassed. If you will keep the two corner seats I shall
-get the tickets."
-
-We had the carriage to ourselves save for an immense litter of
-papers which Holmes had brought with him. Among these he rummaged
-and read, with intervals of note-taking and of meditation, until
-we were past Reading. Then he suddenly rolled them all into a
-gigantic ball and tossed them up onto the rack.
-
-"Have you heard anything of the case?" he asked.
-
-"Not a word. I have not seen a paper for some days."
-
-"The London press has not had very full accounts. I have just
-been looking through all the recent papers in order to master the
-particulars. It seems, from what I gather, to be one of those
-simple cases which are so extremely difficult."
-
-"That sounds a little paradoxical."
-
-"But it is profoundly true. Singularity is almost invariably a
-clue. The more featureless and commonplace a crime is, the more
-difficult it is to bring it home. In this case, however, they
-have established a very serious case against the son of the
-murdered man."
-
-"It is a murder, then?"
-
-"Well, it is conjectured to be so. I shall take nothing for
-granted until I have the opportunity of looking personally into
-it. I will explain the state of things to you, as far as I have
-been able to understand it, in a very few words.
-
-"Boscombe Valley is a country district not very far from Ross, in
-Herefordshire. The largest landed proprietor in that part is a
-Mr. John Turner, who made his money in Australia and returned
-some years ago to the old country. One of the farms which he
-held, that of Hatherley, was let to Mr. Charles McCarthy, who was
-also an ex-Australian. The men had known each other in the
-colonies, so that it was not unnatural that when they came to
-settle down they should do so as near each other as possible.
-Turner was apparently the richer man, so McCarthy became his
-tenant but still remained, it seems, upon terms of perfect
-equality, as they were frequently together. McCarthy had one son,
-a lad of eighteen, and Turner had an only daughter of the same
-age, but neither of them had wives living. They appear to have
-avoided the society of the neighbouring English families and to
-have led retired lives, though both the McCarthys were fond of
-sport and were frequently seen at the race-meetings of the
-neighbourhood. McCarthy kept two servants--a man and a girl.
-Turner had a considerable household, some half-dozen at the
-least. That is as much as I have been able to gather about the
-families. Now for the facts.
-
-"On June 3rd, that is, on Monday last, McCarthy left his house at
-Hatherley about three in the afternoon and walked down to the
-Boscombe Pool, which is a small lake formed by the spreading out
-of the stream which runs down the Boscombe Valley. He had been
-out with his serving-man in the morning at Ross, and he had told
-the man that he must hurry, as he had an appointment of
-importance to keep at three. From that appointment he never came
-back alive.
-
-"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
-mile, and two people saw him as he passed over this ground. One
-was an old woman, whose name is not mentioned, and the other was
-William Crowder, a game-keeper in the employ of Mr. Turner. Both
-these witnesses depose that Mr. McCarthy was walking alone. The
-game-keeper adds that within a few minutes of his seeing Mr.
-McCarthy pass he had seen his son, Mr. James McCarthy, going the
-same way with a gun under his arm. To the best of his belief, the
-father was actually in sight at the time, and the son was
-following him. He thought no more of the matter until he heard in
-the evening of the tragedy that had occurred.
-
-"The two McCarthys were seen after the time when William Crowder,
-the game-keeper, lost sight of them. The Boscombe Pool is thickly
-wooded round, with just a fringe of grass and of reeds round the
-edge. A girl of fourteen, Patience Moran, who is the daughter of
-the lodge-keeper of the Boscombe Valley estate, was in one of the
-woods picking flowers. She states that while she was there she
-saw, at the border of the wood and close by the lake, Mr.
-McCarthy and his son, and that they appeared to be having a
-violent quarrel. She heard Mr. McCarthy the elder using very
-strong language to his son, and she saw the latter raise up his
-hand as if to strike his father. She was so frightened by their
-violence that she ran away and told her mother when she reached
-home that she had left the two McCarthys quarrelling near
-Boscombe Pool, and that she was afraid that they were going to
-fight. She had hardly said the words when young Mr. McCarthy came
-running up to the lodge to say that he had found his father dead
-in the wood, and to ask for the help of the lodge-keeper. He was
-much excited, without either his gun or his hat, and his right
-hand and sleeve were observed to be stained with fresh blood. On
-following him they found the dead body stretched out upon the
-grass beside the pool. The head had been beaten in by repeated
-blows of some heavy and blunt weapon. The injuries were such as
-might very well have been inflicted by the butt-end of his son's
-gun, which was found lying on the grass within a few paces of the
-body. Under these circumstances the young man was instantly
-arrested, and a verdict of 'wilful murder' having been returned
-at the inquest on Tuesday, he was on Wednesday brought before the
-magistrates at Ross, who have referred the case to the next
-Assizes. Those are the main facts of the case as they came out
-before the coroner and the police-court."
-
-"I could hardly imagine a more damning case," I remarked. "If
-ever circumstantial evidence pointed to a criminal it does so
-here."
-
-"Circumstantial evidence is a very tricky thing," answered Holmes
-thoughtfully. "It may seem to point very straight to one thing,
-but if you shift your own point of view a little, you may find it
-pointing in an equally uncompromising manner to something
-entirely different. It must be confessed, however, that the case
-looks exceedingly grave against the young man, and it is very
-possible that he is indeed the culprit. There are several people
-in the neighbourhood, however, and among them Miss Turner, the
-daughter of the neighbouring landowner, who believe in his
-innocence, and who have retained Lestrade, whom you may recollect
-in connection with the Study in Scarlet, to work out the case in
-his interest. Lestrade, being rather puzzled, has referred the
-case to me, and hence it is that two middle-aged gentlemen are
-flying westward at fifty miles an hour instead of quietly
-digesting their breakfasts at home."
-
-"I am afraid," said I, "that the facts are so obvious that you
-will find little credit to be gained out of this case."
-
-"There is nothing more deceptive than an obvious fact," he
-answered, laughing. "Besides, we may chance to hit upon some
-other obvious facts which may have been by no means obvious to
-Mr. Lestrade. You know me too well to think that I am boasting
-when I say that I shall either confirm or destroy his theory by
-means which he is quite incapable of employing, or even of
-understanding. To take the first example to hand, I very clearly
-perceive that in your bedroom the window is upon the right-hand
-side, and yet I question whether Mr. Lestrade would have noted
-even so self-evident a thing as that."
-
-"How on earth--"
-
-"My dear fellow, I know you well. I know the military neatness
-which characterises you. You shave every morning, and in this
-season you shave by the sunlight; but since your shaving is less
-and less complete as we get farther back on the left side, until
-it becomes positively slovenly as we get round the angle of the
-jaw, it is surely very clear that that side is less illuminated
-than the other. I could not imagine a man of your habits looking
-at himself in an equal light and being satisfied with such a
-result. I only quote this as a trivial example of observation and
-inference. Therein lies my métier, and it is just possible that
-it may be of some service in the investigation which lies before
-us. There are one or two minor points which were brought out in
-the inquest, and which are worth considering."
-
-"What are they?"
-
-"It appears that his arrest did not take place at once, but after
-the return to Hatherley Farm. On the inspector of constabulary
-informing him that he was a prisoner, he remarked that he was not
-surprised to hear it, and that it was no more than his deserts.
-This observation of his had the natural effect of removing any
-traces of doubt which might have remained in the minds of the
-coroner's jury."
-
-"It was a confession," I ejaculated.
-
-"No, for it was followed by a protestation of innocence."
-
-"Coming on the top of such a damning series of events, it was at
-least a most suspicious remark."
-
-"On the contrary," said Holmes, "it is the brightest rift which I
-can at present see in the clouds. However innocent he might be,
-he could not be such an absolute imbecile as not to see that the
-circumstances were very black against him. Had he appeared
-surprised at his own arrest, or feigned indignation at it, I
-should have looked upon it as highly suspicious, because such
-surprise or anger would not be natural under the circumstances,
-and yet might appear to be the best policy to a scheming man. His
-frank acceptance of the situation marks him as either an innocent
-man, or else as a man of considerable self-restraint and
-firmness. As to his remark about his deserts, it was also not
-unnatural if you consider that he stood beside the dead body of
-his father, and that there is no doubt that he had that very day
-so far forgotten his filial duty as to bandy words with him, and
-even, according to the little girl whose evidence is so
-important, to raise his hand as if to strike him. The
-self-reproach and contrition which are displayed in his remark
-appear to me to be the signs of a healthy mind rather than of a
-guilty one."
-
-I shook my head. "Many men have been hanged on far slighter
-evidence," I remarked.
-
-"So they have. And many men have been wrongfully hanged."
-
-"What is the young man's own account of the matter?"
-
-"It is, I am afraid, not very encouraging to his supporters,
-though there are one or two points in it which are suggestive.
-You will find it here, and may read it for yourself."
-
-He picked out from his bundle a copy of the local Herefordshire
-paper, and having turned down the sheet he pointed out the
-paragraph in which the unfortunate young man had given his own
-statement of what had occurred. I settled myself down in the
-corner of the carriage and read it very carefully. It ran in this
-way:
-
-"Mr. James McCarthy, the only son of the deceased, was then called
-and gave evidence as follows: 'I had been away from home for
-three days at Bristol, and had only just returned upon the
-morning of last Monday, the 3rd. My father was absent from home at
-the time of my arrival, and I was informed by the maid that he
-had driven over to Ross with John Cobb, the groom. Shortly after
-my return I heard the wheels of his trap in the yard, and,
-looking out of my window, I saw him get out and walk rapidly out
-of the yard, though I was not aware in which direction he was
-going. I then took my gun and strolled out in the direction of
-the Boscombe Pool, with the intention of visiting the rabbit
-warren which is upon the other side. On my way I saw William
-Crowder, the game-keeper, as he had stated in his evidence; but
-he is mistaken in thinking that I was following my father. I had
-no idea that he was in front of me. When about a hundred yards
-from the pool I heard a cry of "Cooee!" which was a usual signal
-between my father and myself. I then hurried forward, and found
-him standing by the pool. He appeared to be much surprised at
-seeing me and asked me rather roughly what I was doing there. A
-conversation ensued which led to high words and almost to blows,
-for my father was a man of a very violent temper. Seeing that his
-passion was becoming ungovernable, I left him and returned
-towards Hatherley Farm. I had not gone more than 150 yards,
-however, when I heard a hideous outcry behind me, which caused me
-to run back again. I found my father expiring upon the ground,
-with his head terribly injured. I dropped my gun and held him in
-my arms, but he almost instantly expired. I knelt beside him for
-some minutes, and then made my way to Mr. Turner's lodge-keeper,
-his house being the nearest, to ask for assistance. I saw no one
-near my father when I returned, and I have no idea how he came by
-his injuries. He was not a popular man, being somewhat cold and
-forbidding in his manners, but he had, as far as I know, no
-active enemies. I know nothing further of the matter.'
-
-"The Coroner: Did your father make any statement to you before
-he died?
-
-"Witness: He mumbled a few words, but I could only catch some
-allusion to a rat.
-
-"The Coroner: What did you understand by that?
-
-"Witness: It conveyed no meaning to me. I thought that he was
-delirious.
-
-"The Coroner: What was the point upon which you and your father
-had this final quarrel?
-
-"Witness: I should prefer not to answer.
-
-"The Coroner: I am afraid that I must press it.
-
-"Witness: It is really impossible for me to tell you. I can
-assure you that it has nothing to do with the sad tragedy which
-followed.
-
-"The Coroner: That is for the court to decide. I need not point
-out to you that your refusal to answer will prejudice your case
-considerably in any future proceedings which may arise.
-
-"Witness: I must still refuse.
-
-"The Coroner: I understand that the cry of 'Cooee' was a common
-signal between you and your father?
-
-"Witness: It was.
-
-"The Coroner: How was it, then, that he uttered it before he saw
-you, and before he even knew that you had returned from Bristol?
-
-"Witness (with considerable confusion): I do not know.
-
-"A Juryman: Did you see nothing which aroused your suspicions
-when you returned on hearing the cry and found your father
-fatally injured?
-
-"Witness: Nothing definite.
-
-"The Coroner: What do you mean?
-
-"Witness: I was so disturbed and excited as I rushed out into
-the open, that I could think of nothing except of my father. Yet
-I have a vague impression that as I ran forward something lay
-upon the ground to the left of me. It seemed to me to be
-something grey in colour, a coat of some sort, or a plaid perhaps.
-When I rose from my father I looked round for it, but it was
-gone.
-
-"'Do you mean that it disappeared before you went for help?'
-
-"'Yes, it was gone.'
-
-"'You cannot say what it was?'
-
-"'No, I had a feeling something was there.'
-
-"'How far from the body?'
-
-"'A dozen yards or so.'
-
-"'And how far from the edge of the wood?'
-
-"'About the same.'
-
-"'Then if it was removed it was while you were within a dozen
-yards of it?'
-
-"'Yes, but with my back towards it.'
-
-"This concluded the examination of the witness."
-
-"I see," said I as I glanced down the column, "that the coroner
-in his concluding remarks was rather severe upon young McCarthy.
-He calls attention, and with reason, to the discrepancy about his
-father having signalled to him before seeing him, also to his
-refusal to give details of his conversation with his father, and
-his singular account of his father's dying words. They are all,
-as he remarks, very much against the son."
-
-Holmes laughed softly to himself and stretched himself out upon
-the cushioned seat. "Both you and the coroner have been at some
-pains," said he, "to single out the very strongest points in the
-young man's favour. Don't you see that you alternately give him
-credit for having too much imagination and too little? Too
-little, if he could not invent a cause of quarrel which would
-give him the sympathy of the jury; too much, if he evolved from
-his own inner consciousness anything so outré as a dying
-reference to a rat, and the incident of the vanishing cloth. No,
-sir, I shall approach this case from the point of view that what
-this young man says is true, and we shall see whither that
-hypothesis will lead us. And now here is my pocket Petrarch, and
-not another word shall I say of this case until we are on the
-scene of action. We lunch at Swindon, and I see that we shall be
-there in twenty minutes."
-
-It was nearly four o'clock when we at last, after passing through
-the beautiful Stroud Valley, and over the broad gleaming Severn,
-found ourselves at the pretty little country-town of Ross. A
-lean, ferret-like man, furtive and sly-looking, was waiting for
-us upon the platform. In spite of the light brown dustcoat and
-leather-leggings which he wore in deference to his rustic
-surroundings, I had no difficulty in recognising Lestrade, of
-Scotland Yard. With him we drove to the Hereford Arms where a
-room had already been engaged for us.
-
-"I have ordered a carriage," said Lestrade as we sat over a cup
-of tea. "I knew your energetic nature, and that you would not be
-happy until you had been on the scene of the crime."
-
-"It was very nice and complimentary of you," Holmes answered. "It
-is entirely a question of barometric pressure."
-
-Lestrade looked startled. "I do not quite follow," he said.
-
-"How is the glass? Twenty-nine, I see. No wind, and not a cloud
-in the sky. I have a caseful of cigarettes here which need
-smoking, and the sofa is very much superior to the usual country
-hotel abomination. I do not think that it is probable that I
-shall use the carriage to-night."
-
-Lestrade laughed indulgently. "You have, no doubt, already formed
-your conclusions from the newspapers," he said. "The case is as
-plain as a pikestaff, and the more one goes into it the plainer
-it becomes. Still, of course, one can't refuse a lady, and such a
-very positive one, too. She has heard of you, and would have your
-opinion, though I repeatedly told her that there was nothing
-which you could do which I had not already done. Why, bless my
-soul! here is her carriage at the door."
-
-He had hardly spoken before there rushed into the room one of the
-most lovely young women that I have ever seen in my life. Her
-violet eyes shining, her lips parted, a pink flush upon her
-cheeks, all thought of her natural reserve lost in her
-overpowering excitement and concern.
-
-"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
-other of us, and finally, with a woman's quick intuition,
-fastening upon my companion, "I am so glad that you have come. I
-have driven down to tell you so. I know that James didn't do it.
-I know it, and I want you to start upon your work knowing it,
-too. Never let yourself doubt upon that point. We have known each
-other since we were little children, and I know his faults as no
-one else does; but he is too tender-hearted to hurt a fly. Such a
-charge is absurd to anyone who really knows him."
-
-"I hope we may clear him, Miss Turner," said Sherlock Holmes.
-"You may rely upon my doing all that I can."
-
-"But you have read the evidence. You have formed some conclusion?
-Do you not see some loophole, some flaw? Do you not yourself
-think that he is innocent?"
-
-"I think that it is very probable."
-
-"There, now!" she cried, throwing back her head and looking
-defiantly at Lestrade. "You hear! He gives me hopes."
-
-Lestrade shrugged his shoulders. "I am afraid that my colleague
-has been a little quick in forming his conclusions," he said.
-
-"But he is right. Oh! I know that he is right. James never did
-it. And about his quarrel with his father, I am sure that the
-reason why he would not speak about it to the coroner was because
-I was concerned in it."
-
-"In what way?" asked Holmes.
-
-"It is no time for me to hide anything. James and his father had
-many disagreements about me. Mr. McCarthy was very anxious that
-there should be a marriage between us. James and I have always
-loved each other as brother and sister; but of course he is young
-and has seen very little of life yet, and--and--well, he
-naturally did not wish to do anything like that yet. So there
-were quarrels, and this, I am sure, was one of them."
-
-"And your father?" asked Holmes. "Was he in favour of such a
-union?"
-
-"No, he was averse to it also. No one but Mr. McCarthy was in
-favour of it." A quick blush passed over her fresh young face as
-Holmes shot one of his keen, questioning glances at her.
-
-"Thank you for this information," said he. "May I see your father
-if I call to-morrow?"
-
-"I am afraid the doctor won't allow it."
-
-"The doctor?"
-
-"Yes, have you not heard? Poor father has never been strong for
-years back, but this has broken him down completely. He has taken
-to his bed, and Dr. Willows says that he is a wreck and that his
-nervous system is shattered. Mr. McCarthy was the only man alive
-who had known dad in the old days in Victoria."
-
-"Ha! In Victoria! That is important."
-
-"Yes, at the mines."
-
-"Quite so; at the gold-mines, where, as I understand, Mr. Turner
-made his money."
-
-"Yes, certainly."
-
-"Thank you, Miss Turner. You have been of material assistance to
-me."
-
-"You will tell me if you have any news to-morrow. No doubt you
-will go to the prison to see James. Oh, if you do, Mr. Holmes, do
-tell him that I know him to be innocent."
-
-"I will, Miss Turner."
-
-"I must go home now, for dad is very ill, and he misses me so if
-I leave him. Good-bye, and God help you in your undertaking." She
-hurried from the room as impulsively as she had entered, and we
-heard the wheels of her carriage rattle off down the street.
-
-"I am ashamed of you, Holmes," said Lestrade with dignity after a
-few minutes' silence. "Why should you raise up hopes which you
-are bound to disappoint? I am not over-tender of heart, but I
-call it cruel."
-
-"I think that I see my way to clearing James McCarthy," said
-Holmes. "Have you an order to see him in prison?"
-
-"Yes, but only for you and me."
-
-"Then I shall reconsider my resolution about going out. We have
-still time to take a train to Hereford and see him to-night?"
-
-"Ample."
-
-"Then let us do so. Watson, I fear that you will find it very
-slow, but I shall only be away a couple of hours."
-
-I walked down to the station with them, and then wandered through
-the streets of the little town, finally returning to the hotel,
-where I lay upon the sofa and tried to interest myself in a
-yellow-backed novel. The puny plot of the story was so thin,
-however, when compared to the deep mystery through which we were
-groping, and I found my attention wander so continually from the
-action to the fact, that I at last flung it across the room and
-gave myself up entirely to a consideration of the events of the
-day. Supposing that this unhappy young man's story were
-absolutely true, then what hellish thing, what absolutely
-unforeseen and extraordinary calamity could have occurred between
-the time when he parted from his father, and the moment when,
-drawn back by his screams, he rushed into the glade? It was
-something terrible and deadly. What could it be? Might not the
-nature of the injuries reveal something to my medical instincts?
-I rang the bell and called for the weekly county paper, which
-contained a verbatim account of the inquest. In the surgeon's
-deposition it was stated that the posterior third of the left
-parietal bone and the left half of the occipital bone had been
-shattered by a heavy blow from a blunt weapon. I marked the spot
-upon my own head. Clearly such a blow must have been struck from
-behind. That was to some extent in favour of the accused, as when
-seen quarrelling he was face to face with his father. Still, it
-did not go for very much, for the older man might have turned his
-back before the blow fell. Still, it might be worth while to call
-Holmes' attention to it. Then there was the peculiar dying
-reference to a rat. What could that mean? It could not be
-delirium. A man dying from a sudden blow does not commonly become
-delirious. No, it was more likely to be an attempt to explain how
-he met his fate. But what could it indicate? I cudgelled my
-brains to find some possible explanation. And then the incident
-of the grey cloth seen by young McCarthy. If that were true the
-murderer must have dropped some part of his dress, presumably his
-overcoat, in his flight, and must have had the hardihood to
-return and to carry it away at the instant when the son was
-kneeling with his back turned not a dozen paces off. What a
-tissue of mysteries and improbabilities the whole thing was! I
-did not wonder at Lestrade's opinion, and yet I had so much faith
-in Sherlock Holmes' insight that I could not lose hope as long
-as every fresh fact seemed to strengthen his conviction of young
-McCarthy's innocence.
-
-It was late before Sherlock Holmes returned. He came back alone,
-for Lestrade was staying in lodgings in the town.
-
-"The glass still keeps very high," he remarked as he sat down.
-"It is of importance that it should not rain before we are able
-to go over the ground. On the other hand, a man should be at his
-very best and keenest for such nice work as that, and I did not
-wish to do it when fagged by a long journey. I have seen young
-McCarthy."
-
-"And what did you learn from him?"
-
-"Nothing."
-
-"Could he throw no light?"
-
-"None at all. I was inclined to think at one time that he knew
-who had done it and was screening him or her, but I am convinced
-now that he is as puzzled as everyone else. He is not a very
-quick-witted youth, though comely to look at and, I should think,
-sound at heart."
-
-"I cannot admire his taste," I remarked, "if it is indeed a fact
-that he was averse to a marriage with so charming a young lady as
-this Miss Turner."
-
-"Ah, thereby hangs a rather painful tale. This fellow is madly,
-insanely, in love with her, but some two years ago, when he was
-only a lad, and before he really knew her, for she had been away
-five years at a boarding-school, what does the idiot do but get
-into the clutches of a barmaid in Bristol and marry her at a
-registry office? No one knows a word of the matter, but you can
-imagine how maddening it must be to him to be upbraided for not
-doing what he would give his very eyes to do, but what he knows
-to be absolutely impossible. It was sheer frenzy of this sort
-which made him throw his hands up into the air when his father,
-at their last interview, was goading him on to propose to Miss
-Turner. On the other hand, he had no means of supporting himself,
-and his father, who was by all accounts a very hard man, would
-have thrown him over utterly had he known the truth. It was with
-his barmaid wife that he had spent the last three days in
-Bristol, and his father did not know where he was. Mark that
-point. It is of importance. Good has come out of evil, however,
-for the barmaid, finding from the papers that he is in serious
-trouble and likely to be hanged, has thrown him over utterly and
-has written to him to say that she has a husband already in the
-Bermuda Dockyard, so that there is really no tie between them. I
-think that that bit of news has consoled young McCarthy for all
-that he has suffered."
-
-"But if he is innocent, who has done it?"
-
-"Ah! who? I would call your attention very particularly to two
-points. One is that the murdered man had an appointment with
-someone at the pool, and that the someone could not have been his
-son, for his son was away, and he did not know when he would
-return. The second is that the murdered man was heard to cry
-'Cooee!' before he knew that his son had returned. Those are the
-crucial points upon which the case depends. And now let us talk
-about George Meredith, if you please, and we shall leave all
-minor matters until to-morrow."
-
-There was no rain, as Holmes had foretold, and the morning broke
-bright and cloudless. At nine o'clock Lestrade called for us with
-the carriage, and we set off for Hatherley Farm and the Boscombe
-Pool.
-
-"There is serious news this morning," Lestrade observed. "It is
-said that Mr. Turner, of the Hall, is so ill that his life is
-despaired of."
-
-"An elderly man, I presume?" said Holmes.
-
-"About sixty; but his constitution has been shattered by his life
-abroad, and he has been in failing health for some time. This
-business has had a very bad effect upon him. He was an old friend
-of McCarthy's, and, I may add, a great benefactor to him, for I
-have learned that he gave him Hatherley Farm rent free."
-
-"Indeed! That is interesting," said Holmes.
-
-"Oh, yes! In a hundred other ways he has helped him. Everybody
-about here speaks of his kindness to him."
-
-"Really! Does it not strike you as a little singular that this
-McCarthy, who appears to have had little of his own, and to have
-been under such obligations to Turner, should still talk of
-marrying his son to Turner's daughter, who is, presumably,
-heiress to the estate, and that in such a very cocksure manner,
-as if it were merely a case of a proposal and all else would
-follow? It is the more strange, since we know that Turner himself
-was averse to the idea. The daughter told us as much. Do you not
-deduce something from that?"
-
-"We have got to the deductions and the inferences," said
-Lestrade, winking at me. "I find it hard enough to tackle facts,
-Holmes, without flying away after theories and fancies."
-
-"You are right," said Holmes demurely; "you do find it very hard
-to tackle the facts."
-
-"Anyhow, I have grasped one fact which you seem to find it
-difficult to get hold of," replied Lestrade with some warmth.
-
-"And that is--"
-
-"That McCarthy senior met his death from McCarthy junior and that
-all theories to the contrary are the merest moonshine."
-
-"Well, moonshine is a brighter thing than fog," said Holmes,
-laughing. "But I am very much mistaken if this is not Hatherley
-Farm upon the left."
-
-"Yes, that is it." It was a widespread, comfortable-looking
-building, two-storied, slate-roofed, with great yellow blotches
-of lichen upon the grey walls. The drawn blinds and the smokeless
-chimneys, however, gave it a stricken look, as though the weight
-of this horror still lay heavy upon it. We called at the door,
-when the maid, at Holmes' request, showed us the boots which her
-master wore at the time of his death, and also a pair of the
-son's, though not the pair which he had then had. Having measured
-these very carefully from seven or eight different points, Holmes
-desired to be led to the court-yard, from which we all followed
-the winding track which led to Boscombe Pool.
-
-Sherlock Holmes was transformed when he was hot upon such a scent
-as this. Men who had only known the quiet thinker and logician of
-Baker Street would have failed to recognise him. His face flushed
-and darkened. His brows were drawn into two hard black lines,
-while his eyes shone out from beneath them with a steely glitter.
-His face was bent downward, his shoulders bowed, his lips
-compressed, and the veins stood out like whipcord in his long,
-sinewy neck. His nostrils seemed to dilate with a purely animal
-lust for the chase, and his mind was so absolutely concentrated
-upon the matter before him that a question or remark fell
-unheeded upon his ears, or, at the most, only provoked a quick,
-impatient snarl in reply. Swiftly and silently he made his way
-along the track which ran through the meadows, and so by way of
-the woods to the Boscombe Pool. It was damp, marshy ground, as is
-all that district, and there were marks of many feet, both upon
-the path and amid the short grass which bounded it on either
-side. Sometimes Holmes would hurry on, sometimes stop dead, and
-once he made quite a little detour into the meadow. Lestrade and
-I walked behind him, the detective indifferent and contemptuous,
-while I watched my friend with the interest which sprang from the
-conviction that every one of his actions was directed towards a
-definite end.
-
-The Boscombe Pool, which is a little reed-girt sheet of water
-some fifty yards across, is situated at the boundary between the
-Hatherley Farm and the private park of the wealthy Mr. Turner.
-Above the woods which lined it upon the farther side we could see
-the red, jutting pinnacles which marked the site of the rich
-landowner's dwelling. On the Hatherley side of the pool the woods
-grew very thick, and there was a narrow belt of sodden grass
-twenty paces across between the edge of the trees and the reeds
-which lined the lake. Lestrade showed us the exact spot at which
-the body had been found, and, indeed, so moist was the ground,
-that I could plainly see the traces which had been left by the
-fall of the stricken man. To Holmes, as I could see by his eager
-face and peering eyes, very many other things were to be read
-upon the trampled grass. He ran round, like a dog who is picking
-up a scent, and then turned upon my companion.
-
-"What did you go into the pool for?" he asked.
-
-"I fished about with a rake. I thought there might be some weapon
-or other trace. But how on earth--"
-
-"Oh, tut, tut! I have no time! That left foot of yours with its
-inward twist is all over the place. A mole could trace it, and
-there it vanishes among the reeds. Oh, how simple it would all
-have been had I been here before they came like a herd of buffalo
-and wallowed all over it. Here is where the party with the
-lodge-keeper came, and they have covered all tracks for six or
-eight feet round the body. But here are three separate tracks of
-the same feet." He drew out a lens and lay down upon his
-waterproof to have a better view, talking all the time rather to
-himself than to us. "These are young McCarthy's feet. Twice he
-was walking, and once he ran swiftly, so that the soles are
-deeply marked and the heels hardly visible. That bears out his
-story. He ran when he saw his father on the ground. Then here are
-the father's feet as he paced up and down. What is this, then? It
-is the butt-end of the gun as the son stood listening. And this?
-Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
-unusual boots! They come, they go, they come again--of course
-that was for the cloak. Now where did they come from?" He ran up
-and down, sometimes losing, sometimes finding the track until we
-were well within the edge of the wood and under the shadow of a
-great beech, the largest tree in the neighbourhood. Holmes traced
-his way to the farther side of this and lay down once more upon
-his face with a little cry of satisfaction. For a long time he
-remained there, turning over the leaves and dried sticks,
-gathering up what seemed to me to be dust into an envelope and
-examining with his lens not only the ground but even the bark of
-the tree as far as he could reach. A jagged stone was lying among
-the moss, and this also he carefully examined and retained. Then
-he followed a pathway through the wood until he came to the
-highroad, where all traces were lost.
-
-"It has been a case of considerable interest," he remarked,
-returning to his natural manner. "I fancy that this grey house on
-the right must be the lodge. I think that I will go in and have a
-word with Moran, and perhaps write a little note. Having done
-that, we may drive back to our luncheon. You may walk to the cab,
-and I shall be with you presently."
-
-It was about ten minutes before we regained our cab and drove
-back into Ross, Holmes still carrying with him the stone which he
-had picked up in the wood.
-
-"This may interest you, Lestrade," he remarked, holding it out.
-"The murder was done with it."
-
-"I see no marks."
-
-"There are none."
-
-"How do you know, then?"
-
-"The grass was growing under it. It had only lain there a few
-days. There was no sign of a place whence it had been taken. It
-corresponds with the injuries. There is no sign of any other
-weapon."
-
-"And the murderer?"
-
-"Is a tall man, left-handed, limps with the right leg, wears
-thick-soled shooting-boots and a grey cloak, smokes Indian
-cigars, uses a cigar-holder, and carries a blunt pen-knife in his
-pocket. There are several other indications, but these may be
-enough to aid us in our search."
-
-Lestrade laughed. "I am afraid that I am still a sceptic," he
-said. "Theories are all very well, but we have to deal with a
-hard-headed British jury."
-
-"Nous verrons," answered Holmes calmly. "You work your own
-method, and I shall work mine. I shall be busy this afternoon,
-and shall probably return to London by the evening train."
-
-"And leave your case unfinished?"
-
-"No, finished."
-
-"But the mystery?"
-
-"It is solved."
-
-"Who was the criminal, then?"
-
-"The gentleman I describe."
-
-"But who is he?"
-
-"Surely it would not be difficult to find out. This is not such a
-populous neighbourhood."
-
-Lestrade shrugged his shoulders. "I am a practical man," he said,
-"and I really cannot undertake to go about the country looking
-for a left-handed gentleman with a game leg. I should become the
-laughing-stock of Scotland Yard."
-
-"All right," said Holmes quietly. "I have given you the chance.
-Here are your lodgings. Good-bye. I shall drop you a line before
-I leave."
-
-Having left Lestrade at his rooms, we drove to our hotel, where
-we found lunch upon the table. Holmes was silent and buried in
-thought with a pained expression upon his face, as one who finds
-himself in a perplexing position.
-
-"Look here, Watson," he said when the cloth was cleared "just sit
-down in this chair and let me preach to you for a little. I don't
-know quite what to do, and I should value your advice. Light a
-cigar and let me expound."
-
- "Pray do so."
-
-"Well, now, in considering this case there are two points about
-young McCarthy's narrative which struck us both instantly,
-although they impressed me in his favour and you against him. One
-was the fact that his father should, according to his account,
-cry 'Cooee!' before seeing him. The other was his singular dying
-reference to a rat. He mumbled several words, you understand, but
-that was all that caught the son's ear. Now from this double
-point our research must commence, and we will begin it by
-presuming that what the lad says is absolutely true."
-
-"What of this 'Cooee!' then?"
-
-"Well, obviously it could not have been meant for the son. The
-son, as far as he knew, was in Bristol. It was mere chance that
-he was within earshot. The 'Cooee!' was meant to attract the
-attention of whoever it was that he had the appointment with. But
-'Cooee' is a distinctly Australian cry, and one which is used
-between Australians. There is a strong presumption that the
-person whom McCarthy expected to meet him at Boscombe Pool was
-someone who had been in Australia."
-
-"What of the rat, then?"
-
-Sherlock Holmes took a folded paper from his pocket and flattened
-it out on the table. "This is a map of the Colony of Victoria,"
-he said. "I wired to Bristol for it last night." He put his hand
-over part of the map. "What do you read?"
-
-"ARAT," I read.
-
-"And now?" He raised his hand.
-
-"BALLARAT."
-
-"Quite so. That was the word the man uttered, and of which his
-son only caught the last two syllables. He was trying to utter
-the name of his murderer. So and so, of Ballarat."
-
-"It is wonderful!" I exclaimed.
-
-"It is obvious. And now, you see, I had narrowed the field down
-considerably. The possession of a grey garment was a third point
-which, granting the son's statement to be correct, was a
-certainty. We have come now out of mere vagueness to the definite
-conception of an Australian from Ballarat with a grey cloak."
-
-"Certainly."
-
-"And one who was at home in the district, for the pool can only
-be approached by the farm or by the estate, where strangers could
-hardly wander."
-
-"Quite so."
-
-"Then comes our expedition of to-day. By an examination of the
-ground I gained the trifling details which I gave to that
-imbecile Lestrade, as to the personality of the criminal."
-
-"But how did you gain them?"
-
-"You know my method. It is founded upon the observation of
-trifles."
-
-"His height I know that you might roughly judge from the length
-of his stride. His boots, too, might be told from their traces."
-
-"Yes, they were peculiar boots."
-
-"But his lameness?"
-
-"The impression of his right foot was always less distinct than
-his left. He put less weight upon it. Why? Because he limped--he
-was lame."
-
-"But his left-handedness."
-
-"You were yourself struck by the nature of the injury as recorded
-by the surgeon at the inquest. The blow was struck from
-immediately behind, and yet was upon the left side. Now, how can
-that be unless it were by a left-handed man? He had stood behind
-that tree during the interview between the father and son. He had
-even smoked there. I found the ash of a cigar, which my special
-knowledge of tobacco ashes enables me to pronounce as an Indian
-cigar. I have, as you know, devoted some attention to this, and
-written a little monograph on the ashes of 140 different
-varieties of pipe, cigar, and cigarette tobacco. Having found the
-ash, I then looked round and discovered the stump among the moss
-where he had tossed it. It was an Indian cigar, of the variety
-which are rolled in Rotterdam."
-
-"And the cigar-holder?"
-
-"I could see that the end had not been in his mouth. Therefore he
-used a holder. The tip had been cut off, not bitten off, but the
-cut was not a clean one, so I deduced a blunt pen-knife."
-
-"Holmes," I said, "you have drawn a net round this man from which
-he cannot escape, and you have saved an innocent human life as
-truly as if you had cut the cord which was hanging him. I see the
-direction in which all this points. The culprit is--"
-
-"Mr. John Turner," cried the hotel waiter, opening the door of
-our sitting-room, and ushering in a visitor.
-
-The man who entered was a strange and impressive figure. His
-slow, limping step and bowed shoulders gave the appearance of
-decrepitude, and yet his hard, deep-lined, craggy features, and
-his enormous limbs showed that he was possessed of unusual
-strength of body and of character. His tangled beard, grizzled
-hair, and outstanding, drooping eyebrows combined to give an air
-of dignity and power to his appearance, but his face was of an
-ashen white, while his lips and the corners of his nostrils were
-tinged with a shade of blue. It was clear to me at a glance that
-he was in the grip of some deadly and chronic disease.
-
-"Pray sit down on the sofa," said Holmes gently. "You had my
-note?"
-
-"Yes, the lodge-keeper brought it up. You said that you wished to
-see me here to avoid scandal."
-
-"I thought people would talk if I went to the Hall."
-
-"And why did you wish to see me?" He looked across at my
-companion with despair in his weary eyes, as though his question
-was already answered.
-
-"Yes," said Holmes, answering the look rather than the words. "It
-is so. I know all about McCarthy."
-
-The old man sank his face in his hands. "God help me!" he cried.
-"But I would not have let the young man come to harm. I give you
-my word that I would have spoken out if it went against him at
-the Assizes."
-
-"I am glad to hear you say so," said Holmes gravely.
-
-"I would have spoken now had it not been for my dear girl. It
-would break her heart--it will break her heart when she hears
-that I am arrested."
-
-"It may not come to that," said Holmes.
-
-"What?"
-
-"I am no official agent. I understand that it was your daughter
-who required my presence here, and I am acting in her interests.
-Young McCarthy must be got off, however."
-
-"I am a dying man," said old Turner. "I have had diabetes for
-years. My doctor says it is a question whether I shall live a
-month. Yet I would rather die under my own roof than in a gaol."
-
-Holmes rose and sat down at the table with his pen in his hand
-and a bundle of paper before him. "Just tell us the truth," he
-said. "I shall jot down the facts. You will sign it, and Watson
-here can witness it. Then I could produce your confession at the
-last extremity to save young McCarthy. I promise you that I shall
-not use it unless it is absolutely needed."
-
-"It's as well," said the old man; "it's a question whether I
-shall live to the Assizes, so it matters little to me, but I
-should wish to spare Alice the shock. And now I will make the
-thing clear to you; it has been a long time in the acting, but
-will not take me long to tell.
-
-"You didn't know this dead man, McCarthy. He was a devil
-incarnate. I tell you that. God keep you out of the clutches of
-such a man as he. His grip has been upon me these twenty years,
-and he has blasted my life. I'll tell you first how I came to be
-in his power.
-
-"It was in the early '60's at the diggings. I was a young chap
-then, hot-blooded and reckless, ready to turn my hand at
-anything; I got among bad companions, took to drink, had no luck
-with my claim, took to the bush, and in a word became what you
-would call over here a highway robber. There were six of us, and
-we had a wild, free life of it, sticking up a station from time
-to time, or stopping the wagons on the road to the diggings.
-Black Jack of Ballarat was the name I went under, and our party
-is still remembered in the colony as the Ballarat Gang.
-
-"One day a gold convoy came down from Ballarat to Melbourne, and
-we lay in wait for it and attacked it. There were six troopers
-and six of us, so it was a close thing, but we emptied four of
-their saddles at the first volley. Three of our boys were killed,
-however, before we got the swag. I put my pistol to the head of
-the wagon-driver, who was this very man McCarthy. I wish to the
-Lord that I had shot him then, but I spared him, though I saw his
-wicked little eyes fixed on my face, as though to remember every
-feature. We got away with the gold, became wealthy men, and made
-our way over to England without being suspected. There I parted
-from my old pals and determined to settle down to a quiet and
-respectable life. I bought this estate, which chanced to be in
-the market, and I set myself to do a little good with my money,
-to make up for the way in which I had earned it. I married, too,
-and though my wife died young she left me my dear little Alice.
-Even when she was just a baby her wee hand seemed to lead me down
-the right path as nothing else had ever done. In a word, I turned
-over a new leaf and did my best to make up for the past. All was
-going well when McCarthy laid his grip upon me.
-
-"I had gone up to town about an investment, and I met him in
-Regent Street with hardly a coat to his back or a boot to his
-foot.
-
-"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
-as good as a family to you. There's two of us, me and my son, and
-you can have the keeping of us. If you don't--it's a fine,
-law-abiding country is England, and there's always a policeman
-within hail.'
-
-"Well, down they came to the west country, there was no shaking
-them off, and there they have lived rent free on my best land
-ever since. There was no rest for me, no peace, no forgetfulness;
-turn where I would, there was his cunning, grinning face at my
-elbow. It grew worse as Alice grew up, for he soon saw I was more
-afraid of her knowing my past than of the police. Whatever he
-wanted he must have, and whatever it was I gave him without
-question, land, money, houses, until at last he asked a thing
-which I could not give. He asked for Alice.
-
-"His son, you see, had grown up, and so had my girl, and as I was
-known to be in weak health, it seemed a fine stroke to him that
-his lad should step into the whole property. But there I was
-firm. I would not have his cursed stock mixed with mine; not that
-I had any dislike to the lad, but his blood was in him, and that
-was enough. I stood firm. McCarthy threatened. I braved him to do
-his worst. We were to meet at the pool midway between our houses
-to talk it over.
-
-"When I went down there I found him talking with his son, so I
-smoked a cigar and waited behind a tree until he should be alone.
-But as I listened to his talk all that was black and bitter in
-me seemed to come uppermost. He was urging his son to marry my
-daughter with as little regard for what she might think as if she
-were a slut from off the streets. It drove me mad to think that I
-and all that I held most dear should be in the power of such a
-man as this. Could I not snap the bond? I was already a dying and
-a desperate man. Though clear of mind and fairly strong of limb,
-I knew that my own fate was sealed. But my memory and my girl!
-Both could be saved if I could but silence that foul tongue. I
-did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
-I have led a life of martyrdom to atone for it. But that my girl
-should be entangled in the same meshes which held me was more
-than I could suffer. I struck him down with no more compunction
-than if he had been some foul and venomous beast. His cry brought
-back his son; but I had gained the cover of the wood, though I
-was forced to go back to fetch the cloak which I had dropped in
-my flight. That is the true story, gentlemen, of all that
-occurred."
-
-"Well, it is not for me to judge you," said Holmes as the old man
-signed the statement which had been drawn out. "I pray that we
-may never be exposed to such a temptation."
-
-"I pray not, sir. And what do you intend to do?"
-
-"In view of your health, nothing. You are yourself aware that you
-will soon have to answer for your deed at a higher court than the
-Assizes. I will keep your confession, and if McCarthy is
-condemned I shall be forced to use it. If not, it shall never be
-seen by mortal eye; and your secret, whether you be alive or
-dead, shall be safe with us."
-
-"Farewell, then," said the old man solemnly. "Your own deathbeds,
-when they come, will be the easier for the thought of the peace
-which you have given to mine." Tottering and shaking in all his
-giant frame, he stumbled slowly from the room.
-
-"God help us!" said Holmes after a long silence. "Why does fate
-play such tricks with poor, helpless worms? I never hear of such
-a case as this that I do not think of Baxter's words, and say,
-'There, but for the grace of God, goes Sherlock Holmes.'"
-
-James McCarthy was acquitted at the Assizes on the strength of a
-number of objections which had been drawn out by Holmes and
-submitted to the defending counsel. Old Turner lived for seven
-months after our interview, but he is now dead; and there is
-every prospect that the son and daughter may come to live happily
-together in ignorance of the black cloud which rests upon their
-past.
-
-
-
-ADVENTURE V. THE FIVE ORANGE PIPS
-
-When I glance over my notes and records of the Sherlock Holmes
-cases between the years '82 and '90, I am faced by so many which
-present strange and interesting features that it is no easy
-matter to know which to choose and which to leave. Some, however,
-have already gained publicity through the papers, and others have
-not offered a field for those peculiar qualities which my friend
-possessed in so high a degree, and which it is the object of
-these papers to illustrate. Some, too, have baffled his
-analytical skill, and would be, as narratives, beginnings without
-an ending, while others have been but partially cleared up, and
-have their explanations founded rather upon conjecture and
-surmise than on that absolute logical proof which was so dear to
-him. There is, however, one of these last which was so remarkable
-in its details and so startling in its results that I am tempted
-to give some account of it in spite of the fact that there are
-points in connection with it which never have been, and probably
-never will be, entirely cleared up.
-
-The year '87 furnished us with a long series of cases of greater
-or less interest, of which I retain the records. Among my
-headings under this one twelve months I find an account of the
-adventure of the Paradol Chamber, of the Amateur Mendicant
-Society, who held a luxurious club in the lower vault of a
-furniture warehouse, of the facts connected with the loss of the
-British barque "Sophy Anderson", of the singular adventures of the
-Grice Patersons in the island of Uffa, and finally of the
-Camberwell poisoning case. In the latter, as may be remembered,
-Sherlock Holmes was able, by winding up the dead man's watch, to
-prove that it had been wound up two hours before, and that
-therefore the deceased had gone to bed within that time--a
-deduction which was of the greatest importance in clearing up the
-case. All these I may sketch out at some future date, but none of
-them present such singular features as the strange train of
-circumstances which I have now taken up my pen to describe.
-
-It was in the latter days of September, and the equinoctial gales
-had set in with exceptional violence. All day the wind had
-screamed and the rain had beaten against the windows, so that
-even here in the heart of great, hand-made London we were forced
-to raise our minds for the instant from the routine of life and
-to recognise the presence of those great elemental forces which
-shriek at mankind through the bars of his civilisation, like
-untamed beasts in a cage. As evening drew in, the storm grew
-higher and louder, and the wind cried and sobbed like a child in
-the chimney. Sherlock Holmes sat moodily at one side of the
-fireplace cross-indexing his records of crime, while I at the
-other was deep in one of Clark Russell's fine sea-stories until
-the howl of the gale from without seemed to blend with the text,
-and the splash of the rain to lengthen out into the long swash of
-the sea waves. My wife was on a visit to her mother's, and for a
-few days I was a dweller once more in my old quarters at Baker
-Street.
-
-"Why," said I, glancing up at my companion, "that was surely the
-bell. Who could come to-night? Some friend of yours, perhaps?"
-
-"Except yourself I have none," he answered. "I do not encourage
-visitors."
-
-"A client, then?"
-
-"If so, it is a serious case. Nothing less would bring a man out
-on such a day and at such an hour. But I take it that it is more
-likely to be some crony of the landlady's."
-
-Sherlock Holmes was wrong in his conjecture, however, for there
-came a step in the passage and a tapping at the door. He
-stretched out his long arm to turn the lamp away from himself and
-towards the vacant chair upon which a newcomer must sit.
-
-"Come in!" said he.
-
-The man who entered was young, some two-and-twenty at the
-outside, well-groomed and trimly clad, with something of
-refinement and delicacy in his bearing. The streaming umbrella
-which he held in his hand, and his long shining waterproof told
-of the fierce weather through which he had come. He looked about
-him anxiously in the glare of the lamp, and I could see that his
-face was pale and his eyes heavy, like those of a man who is
-weighed down with some great anxiety.
-
-"I owe you an apology," he said, raising his golden pince-nez to
-his eyes. "I trust that I am not intruding. I fear that I have
-brought some traces of the storm and rain into your snug
-chamber."
-
-"Give me your coat and umbrella," said Holmes. "They may rest
-here on the hook and will be dry presently. You have come up from
-the south-west, I see."
-
-"Yes, from Horsham."
-
-"That clay and chalk mixture which I see upon your toe caps is
-quite distinctive."
-
-"I have come for advice."
-
-"That is easily got."
-
-"And help."
-
-"That is not always so easy."
-
-"I have heard of you, Mr. Holmes. I heard from Major Prendergast
-how you saved him in the Tankerville Club scandal."
-
-"Ah, of course. He was wrongfully accused of cheating at cards."
-
-"He said that you could solve anything."
-
-"He said too much."
-
-"That you are never beaten."
-
-"I have been beaten four times--three times by men, and once by a
-woman."
-
-"But what is that compared with the number of your successes?"
-
-"It is true that I have been generally successful."
-
-"Then you may be so with me."
-
-"I beg that you will draw your chair up to the fire and favour me
-with some details as to your case."
-
-"It is no ordinary one."
-
-"None of those which come to me are. I am the last court of
-appeal."
-
-"And yet I question, sir, whether, in all your experience, you
-have ever listened to a more mysterious and inexplicable chain of
-events than those which have happened in my own family."
-
-"You fill me with interest," said Holmes. "Pray give us the
-essential facts from the commencement, and I can afterwards
-question you as to those details which seem to me to be most
-important."
-
-The young man pulled his chair up and pushed his wet feet out
-towards the blaze.
-
-"My name," said he, "is John Openshaw, but my own affairs have,
-as far as I can understand, little to do with this awful
-business. It is a hereditary matter; so in order to give you an
-idea of the facts, I must go back to the commencement of the
-affair.
-
-"You must know that my grandfather had two sons--my uncle Elias
-and my father Joseph. My father had a small factory at Coventry,
-which he enlarged at the time of the invention of bicycling. He
-was a patentee of the Openshaw unbreakable tire, and his business
-met with such success that he was able to sell it and to retire
-upon a handsome competence.
-
-"My uncle Elias emigrated to America when he was a young man and
-became a planter in Florida, where he was reported to have done
-very well. At the time of the war he fought in Jackson's army,
-and afterwards under Hood, where he rose to be a colonel. When
-Lee laid down his arms my uncle returned to his plantation, where
-he remained for three or four years. About 1869 or 1870 he came
-back to Europe and took a small estate in Sussex, near Horsham.
-He had made a very considerable fortune in the States, and his
-reason for leaving them was his aversion to the negroes, and his
-dislike of the Republican policy in extending the franchise to
-them. He was a singular man, fierce and quick-tempered, very
-foul-mouthed when he was angry, and of a most retiring
-disposition. During all the years that he lived at Horsham, I
-doubt if ever he set foot in the town. He had a garden and two or
-three fields round his house, and there he would take his
-exercise, though very often for weeks on end he would never leave
-his room. He drank a great deal of brandy and smoked very
-heavily, but he would see no society and did not want any
-friends, not even his own brother.
-
-"He didn't mind me; in fact, he took a fancy to me, for at the
-time when he saw me first I was a youngster of twelve or so. This
-would be in the year 1878, after he had been eight or nine years
-in England. He begged my father to let me live with him and he
-was very kind to me in his way. When he was sober he used to be
-fond of playing backgammon and draughts with me, and he would
-make me his representative both with the servants and with the
-tradespeople, so that by the time that I was sixteen I was quite
-master of the house. I kept all the keys and could go where I
-liked and do what I liked, so long as I did not disturb him in
-his privacy. There was one singular exception, however, for he
-had a single room, a lumber-room up among the attics, which was
-invariably locked, and which he would never permit either me or
-anyone else to enter. With a boy's curiosity I have peeped
-through the keyhole, but I was never able to see more than such a
-collection of old trunks and bundles as would be expected in such
-a room.
-
-"One day--it was in March, 1883--a letter with a foreign stamp
-lay upon the table in front of the colonel's plate. It was not a
-common thing for him to receive letters, for his bills were all
-paid in ready money, and he had no friends of any sort. 'From
-India!' said he as he took it up, 'Pondicherry postmark! What can
-this be?' Opening it hurriedly, out there jumped five little
-dried orange pips, which pattered down upon his plate. I began to
-laugh at this, but the laugh was struck from my lips at the sight
-of his face. His lip had fallen, his eyes were protruding, his
-skin the colour of putty, and he glared at the envelope which he
-still held in his trembling hand, 'K. K. K.!' he shrieked, and
-then, 'My God, my God, my sins have overtaken me!'
-
-"'What is it, uncle?' I cried.
-
-"'Death,' said he, and rising from the table he retired to his
-room, leaving me palpitating with horror. I took up the envelope
-and saw scrawled in red ink upon the inner flap, just above the
-gum, the letter K three times repeated. There was nothing else
-save the five dried pips. What could be the reason of his
-overpowering terror? I left the breakfast-table, and as I
-ascended the stair I met him coming down with an old rusty key,
-which must have belonged to the attic, in one hand, and a small
-brass box, like a cashbox, in the other.
-
-"'They may do what they like, but I'll checkmate them still,'
-said he with an oath. 'Tell Mary that I shall want a fire in my
-room to-day, and send down to Fordham, the Horsham lawyer.'
-
-"I did as he ordered, and when the lawyer arrived I was asked to
-step up to the room. The fire was burning brightly, and in the
-grate there was a mass of black, fluffy ashes, as of burned
-paper, while the brass box stood open and empty beside it. As I
-glanced at the box I noticed, with a start, that upon the lid was
-printed the treble K which I had read in the morning upon the
-envelope.
-
-"'I wish you, John,' said my uncle, 'to witness my will. I leave
-my estate, with all its advantages and all its disadvantages, to
-my brother, your father, whence it will, no doubt, descend to
-you. If you can enjoy it in peace, well and good! If you find you
-cannot, take my advice, my boy, and leave it to your deadliest
-enemy. I am sorry to give you such a two-edged thing, but I can't
-say what turn things are going to take. Kindly sign the paper
-where Mr. Fordham shows you.'
-
-"I signed the paper as directed, and the lawyer took it away with
-him. The singular incident made, as you may think, the deepest
-impression upon me, and I pondered over it and turned it every
-way in my mind without being able to make anything of it. Yet I
-could not shake off the vague feeling of dread which it left
-behind, though the sensation grew less keen as the weeks passed
-and nothing happened to disturb the usual routine of our lives. I
-could see a change in my uncle, however. He drank more than ever,
-and he was less inclined for any sort of society. Most of his
-time he would spend in his room, with the door locked upon the
-inside, but sometimes he would emerge in a sort of drunken frenzy
-and would burst out of the house and tear about the garden with a
-revolver in his hand, screaming out that he was afraid of no man,
-and that he was not to be cooped up, like a sheep in a pen, by
-man or devil. When these hot fits were over, however, he would
-rush tumultuously in at the door and lock and bar it behind him,
-like a man who can brazen it out no longer against the terror
-which lies at the roots of his soul. At such times I have seen
-his face, even on a cold day, glisten with moisture, as though it
-were new raised from a basin.
-
-"Well, to come to an end of the matter, Mr. Holmes, and not to
-abuse your patience, there came a night when he made one of those
-drunken sallies from which he never came back. We found him, when
-we went to search for him, face downward in a little
-green-scummed pool, which lay at the foot of the garden. There
-was no sign of any violence, and the water was but two feet deep,
-so that the jury, having regard to his known eccentricity,
-brought in a verdict of 'suicide.' But I, who knew how he winced
-from the very thought of death, had much ado to persuade myself
-that he had gone out of his way to meet it. The matter passed,
-however, and my father entered into possession of the estate, and
-of some 14,000 pounds, which lay to his credit at the bank."
-
-"One moment," Holmes interposed, "your statement is, I foresee,
-one of the most remarkable to which I have ever listened. Let me
-have the date of the reception by your uncle of the letter, and
-the date of his supposed suicide."
-
-"The letter arrived on March 10, 1883. His death was seven weeks
-later, upon the night of May 2nd."
-
-"Thank you. Pray proceed."
-
-"When my father took over the Horsham property, he, at my
-request, made a careful examination of the attic, which had been
-always locked up. We found the brass box there, although its
-contents had been destroyed. On the inside of the cover was a
-paper label, with the initials of K. K. K. repeated upon it, and
-'Letters, memoranda, receipts, and a register' written beneath.
-These, we presume, indicated the nature of the papers which had
-been destroyed by Colonel Openshaw. For the rest, there was
-nothing of much importance in the attic save a great many
-scattered papers and note-books bearing upon my uncle's life in
-America. Some of them were of the war time and showed that he had
-done his duty well and had borne the repute of a brave soldier.
-Others were of a date during the reconstruction of the Southern
-states, and were mostly concerned with politics, for he had
-evidently taken a strong part in opposing the carpet-bag
-politicians who had been sent down from the North.
-
-"Well, it was the beginning of '84 when my father came to live at
-Horsham, and all went as well as possible with us until the
-January of '85. On the fourth day after the new year I heard my
-father give a sharp cry of surprise as we sat together at the
-breakfast-table. There he was, sitting with a newly opened
-envelope in one hand and five dried orange pips in the
-outstretched palm of the other one. He had always laughed at what
-he called my cock-and-bull story about the colonel, but he looked
-very scared and puzzled now that the same thing had come upon
-himself.
-
-"'Why, what on earth does this mean, John?' he stammered.
-
-"My heart had turned to lead. 'It is K. K. K.,' said I.
-
-"He looked inside the envelope. 'So it is,' he cried. 'Here are
-the very letters. But what is this written above them?'
-
-"'Put the papers on the sundial,' I read, peeping over his
-shoulder.
-
-"'What papers? What sundial?' he asked.
-
-"'The sundial in the garden. There is no other,' said I; 'but the
-papers must be those that are destroyed.'
-
-"'Pooh!' said he, gripping hard at his courage. 'We are in a
-civilised land here, and we can't have tomfoolery of this kind.
-Where does the thing come from?'
-
-"'From Dundee,' I answered, glancing at the postmark.
-
-"'Some preposterous practical joke,' said he. 'What have I to do
-with sundials and papers? I shall take no notice of such
-nonsense.'
-
-"'I should certainly speak to the police,' I said.
-
-"'And be laughed at for my pains. Nothing of the sort.'
-
-"'Then let me do so?'
-
-"'No, I forbid you. I won't have a fuss made about such
-nonsense.'
-
-"It was in vain to argue with him, for he was a very obstinate
-man. I went about, however, with a heart which was full of
-forebodings.
-
-"On the third day after the coming of the letter my father went
-from home to visit an old friend of his, Major Freebody, who is
-in command of one of the forts upon Portsdown Hill. I was glad
-that he should go, for it seemed to me that he was farther from
-danger when he was away from home. In that, however, I was in
-error. Upon the second day of his absence I received a telegram
-from the major, imploring me to come at once. My father had
-fallen over one of the deep chalk-pits which abound in the
-neighbourhood, and was lying senseless, with a shattered skull. I
-hurried to him, but he passed away without having ever recovered
-his consciousness. He had, as it appears, been returning from
-Fareham in the twilight, and as the country was unknown to him,
-and the chalk-pit unfenced, the jury had no hesitation in
-bringing in a verdict of 'death from accidental causes.'
-Carefully as I examined every fact connected with his death, I
-was unable to find anything which could suggest the idea of
-murder. There were no signs of violence, no footmarks, no
-robbery, no record of strangers having been seen upon the roads.
-And yet I need not tell you that my mind was far from at ease,
-and that I was well-nigh certain that some foul plot had been
-woven round him.
-
-"In this sinister way I came into my inheritance. You will ask me
-why I did not dispose of it? I answer, because I was well
-convinced that our troubles were in some way dependent upon an
-incident in my uncle's life, and that the danger would be as
-pressing in one house as in another.
-
-"It was in January, '85, that my poor father met his end, and two
-years and eight months have elapsed since then. During that time
-I have lived happily at Horsham, and I had begun to hope that
-this curse had passed away from the family, and that it had ended
-with the last generation. I had begun to take comfort too soon,
-however; yesterday morning the blow fell in the very shape in
-which it had come upon my father."
-
-The young man took from his waistcoat a crumpled envelope, and
-turning to the table he shook out upon it five little dried
-orange pips.
-
-"This is the envelope," he continued. "The postmark is
-London--eastern division. Within are the very words which were
-upon my father's last message: 'K. K. K.'; and then 'Put the
-papers on the sundial.'"
-
-"What have you done?" asked Holmes.
-
-"Nothing."
-
-"Nothing?"
-
-"To tell the truth"--he sank his face into his thin, white
-hands--"I have felt helpless. I have felt like one of those poor
-rabbits when the snake is writhing towards it. I seem to be in
-the grasp of some resistless, inexorable evil, which no foresight
-and no precautions can guard against."
-
-"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
-lost. Nothing but energy can save you. This is no time for
-despair."
-
-"I have seen the police."
-
-"Ah!"
-
-"But they listened to my story with a smile. I am convinced that
-the inspector has formed the opinion that the letters are all
-practical jokes, and that the deaths of my relations were really
-accidents, as the jury stated, and were not to be connected with
-the warnings."
-
-Holmes shook his clenched hands in the air. "Incredible
-imbecility!" he cried.
-
-"They have, however, allowed me a policeman, who may remain in
-the house with me."
-
-"Has he come with you to-night?"
-
-"No. His orders were to stay in the house."
-
-Again Holmes raved in the air.
-
-"Why did you come to me," he cried, "and, above all, why did you
-not come at once?"
-
-"I did not know. It was only to-day that I spoke to Major
-Prendergast about my troubles and was advised by him to come to
-you."
-
-"It is really two days since you had the letter. We should have
-acted before this. You have no further evidence, I suppose, than
-that which you have placed before us--no suggestive detail which
-might help us?"
-
-"There is one thing," said John Openshaw. He rummaged in his coat
-pocket, and, drawing out a piece of discoloured, blue-tinted
-paper, he laid it out upon the table. "I have some remembrance,"
-said he, "that on the day when my uncle burned the papers I
-observed that the small, unburned margins which lay amid the
-ashes were of this particular colour. I found this single sheet
-upon the floor of his room, and I am inclined to think that it
-may be one of the papers which has, perhaps, fluttered out from
-among the others, and in that way has escaped destruction. Beyond
-the mention of pips, I do not see that it helps us much. I think
-myself that it is a page from some private diary. The writing is
-undoubtedly my uncle's."
-
-Holmes moved the lamp, and we both bent over the sheet of paper,
-which showed by its ragged edge that it had indeed been torn from
-a book. It was headed, "March, 1869," and beneath were the
-following enigmatical notices:
-
-"4th. Hudson came. Same old platform.
-
-"7th. Set the pips on McCauley, Paramore, and
-      John Swain, of St. Augustine.
-
-"9th. McCauley cleared.
-
-"10th. John Swain cleared.
-
-"12th. Visited Paramore. All well."
-
-"Thank you!" said Holmes, folding up the paper and returning it
-to our visitor. "And now you must on no account lose another
-instant. We cannot spare time even to discuss what you have told
-me. You must get home instantly and act."
-
-"What shall I do?"
-
-"There is but one thing to do. It must be done at once. You must
-put this piece of paper which you have shown us into the brass
-box which you have described. You must also put in a note to say
-that all the other papers were burned by your uncle, and that
-this is the only one which remains. You must assert that in such
-words as will carry conviction with them. Having done this, you
-must at once put the box out upon the sundial, as directed. Do
-you understand?"
-
-"Entirely."
-
-"Do not think of revenge, or anything of the sort, at present. I
-think that we may gain that by means of the law; but we have our
-web to weave, while theirs is already woven. The first
-consideration is to remove the pressing danger which threatens
-you. The second is to clear up the mystery and to punish the
-guilty parties."
-
-"I thank you," said the young man, rising and pulling on his
-overcoat. "You have given me fresh life and hope. I shall
-certainly do as you advise."
-
-"Do not lose an instant. And, above all, take care of yourself in
-the meanwhile, for I do not think that there can be a doubt that
-you are threatened by a very real and imminent danger. How do you
-go back?"
-
-"By train from Waterloo."
-
-"It is not yet nine. The streets will be crowded, so I trust that
-you may be in safety. And yet you cannot guard yourself too
-closely."
-
-"I am armed."
-
-"That is well. To-morrow I shall set to work upon your case."
-
-"I shall see you at Horsham, then?"
-
-"No, your secret lies in London. It is there that I shall seek
-it."
-
-"Then I shall call upon you in a day, or in two days, with news
-as to the box and the papers. I shall take your advice in every
-particular." He shook hands with us and took his leave. Outside
-the wind still screamed and the rain splashed and pattered
-against the windows. This strange, wild story seemed to have come
-to us from amid the mad elements--blown in upon us like a sheet
-of sea-weed in a gale--and now to have been reabsorbed by them
-once more.
-
-Sherlock Holmes sat for some time in silence, with his head sunk
-forward and his eyes bent upon the red glow of the fire. Then he
-lit his pipe, and leaning back in his chair he watched the blue
-smoke-rings as they chased each other up to the ceiling.
-
-"I think, Watson," he remarked at last, "that of all our cases we
-have had none more fantastic than this."
-
-"Save, perhaps, the Sign of Four."
-
-"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
-to me to be walking amid even greater perils than did the
-Sholtos."
-
-"But have you," I asked, "formed any definite conception as to
-what these perils are?"
-
-"There can be no question as to their nature," he answered.
-
-"Then what are they? Who is this K. K. K., and why does he pursue
-this unhappy family?"
-
-Sherlock Holmes closed his eyes and placed his elbows upon the
-arms of his chair, with his finger-tips together. "The ideal
-reasoner," he remarked, "would, when he had once been shown a
-single fact in all its bearings, deduce from it not only all the
-chain of events which led up to it but also all the results which
-would follow from it. As Cuvier could correctly describe a whole
-animal by the contemplation of a single bone, so the observer who
-has thoroughly understood one link in a series of incidents
-should be able to accurately state all the other ones, both
-before and after. We have not yet grasped the results which the
-reason alone can attain to. Problems may be solved in the study
-which have baffled all those who have sought a solution by the
-aid of their senses. To carry the art, however, to its highest
-pitch, it is necessary that the reasoner should be able to
-utilise all the facts which have come to his knowledge; and this
-in itself implies, as you will readily see, a possession of all
-knowledge, which, even in these days of free education and
-encyclopaedias, is a somewhat rare accomplishment. It is not so
-impossible, however, that a man should possess all knowledge
-which is likely to be useful to him in his work, and this I have
-endeavoured in my case to do. If I remember rightly, you on one
-occasion, in the early days of our friendship, defined my limits
-in a very precise fashion."
-
-"Yes," I answered, laughing. "It was a singular document.
-Philosophy, astronomy, and politics were marked at zero, I
-remember. Botany variable, geology profound as regards the
-mud-stains from any region within fifty miles of town, chemistry
-eccentric, anatomy unsystematic, sensational literature and crime
-records unique, violin-player, boxer, swordsman, lawyer, and
-self-poisoner by cocaine and tobacco. Those, I think, were the
-main points of my analysis."
-
-Holmes grinned at the last item. "Well," he said, "I say now, as
-I said then, that a man should keep his little brain-attic
-stocked with all the furniture that he is likely to use, and the
-rest he can put away in the lumber-room of his library, where he
-can get it if he wants it. Now, for such a case as the one which
-has been submitted to us to-night, we need certainly to muster
-all our resources. Kindly hand me down the letter K of the
-'American Encyclopaedia' which stands upon the shelf beside you.
-Thank you. Now let us consider the situation and see what may be
-deduced from it. In the first place, we may start with a strong
-presumption that Colonel Openshaw had some very strong reason for
-leaving America. Men at his time of life do not change all their
-habits and exchange willingly the charming climate of Florida for
-the lonely life of an English provincial town. His extreme love
-of solitude in England suggests the idea that he was in fear of
-someone or something, so we may assume as a working hypothesis
-that it was fear of someone or something which drove him from
-America. As to what it was he feared, we can only deduce that by
-considering the formidable letters which were received by himself
-and his successors. Did you remark the postmarks of those
-letters?"
-
-"The first was from Pondicherry, the second from Dundee, and the
-third from London."
-
-"From East London. What do you deduce from that?"
-
-"They are all seaports. That the writer was on board of a ship."
-
-"Excellent. We have already a clue. There can be no doubt that
-the probability--the strong probability--is that the writer was
-on board of a ship. And now let us consider another point. In the
-case of Pondicherry, seven weeks elapsed between the threat and
-its fulfilment, in Dundee it was only some three or four days.
-Does that suggest anything?"
-
-"A greater distance to travel."
-
-"But the letter had also a greater distance to come."
-
-"Then I do not see the point."
-
-"There is at least a presumption that the vessel in which the man
-or men are is a sailing-ship. It looks as if they always send
-their singular warning or token before them when starting upon
-their mission. You see how quickly the deed followed the sign
-when it came from Dundee. If they had come from Pondicherry in a
-steamer they would have arrived almost as soon as their letter.
-But, as a matter of fact, seven weeks elapsed. I think that those
-seven weeks represented the difference between the mail-boat which
-brought the letter and the sailing vessel which brought the
-writer."
-
-"It is possible."
-
-"More than that. It is probable. And now you see the deadly
-urgency of this new case, and why I urged young Openshaw to
-caution. The blow has always fallen at the end of the time which
-it would take the senders to travel the distance. But this one
-comes from London, and therefore we cannot count upon delay."
-
-"Good God!" I cried. "What can it mean, this relentless
-persecution?"
-
-"The papers which Openshaw carried are obviously of vital
-importance to the person or persons in the sailing-ship. I think
-that it is quite clear that there must be more than one of them.
-A single man could not have carried out two deaths in such a way
-as to deceive a coroner's jury. There must have been several in
-it, and they must have been men of resource and determination.
-Their papers they mean to have, be the holder of them who it may.
-In this way you see K. K. K. ceases to be the initials of an
-individual and becomes the badge of a society."
-
-"But of what society?"
-
-"Have you never--" said Sherlock Holmes, bending forward and
-sinking his voice--"have you never heard of the Ku Klux Klan?"
-
-"I never have."
-
-Holmes turned over the leaves of the book upon his knee. "Here it
-is," said he presently:
-
-"'Ku Klux Klan. A name derived from the fanciful resemblance to
-the sound produced by cocking a rifle. This terrible secret
-society was formed by some ex-Confederate soldiers in the
-Southern states after the Civil War, and it rapidly formed local
-branches in different parts of the country, notably in Tennessee,
-Louisiana, the Carolinas, Georgia, and Florida. Its power was
-used for political purposes, principally for the terrorising of
-the negro voters and the murdering and driving from the country
-of those who were opposed to its views. Its outrages were usually
-preceded by a warning sent to the marked man in some fantastic
-but generally recognised shape--a sprig of oak-leaves in some
-parts, melon seeds or orange pips in others. On receiving this
-the victim might either openly abjure his former ways, or might
-fly from the country. If he braved the matter out, death would
-unfailingly come upon him, and usually in some strange and
-unforeseen manner. So perfect was the organisation of the
-society, and so systematic its methods, that there is hardly a
-case upon record where any man succeeded in braving it with
-impunity, or in which any of its outrages were traced home to the
-perpetrators. For some years the organisation flourished in spite
-of the efforts of the United States government and of the better
-classes of the community in the South. Eventually, in the year
-1869, the movement rather suddenly collapsed, although there have
-been sporadic outbreaks of the same sort since that date.'
-
-"You will observe," said Holmes, laying down the volume, "that
-the sudden breaking up of the society was coincident with the
-disappearance of Openshaw from America with their papers. It may
-well have been cause and effect. It is no wonder that he and his
-family have some of the more implacable spirits upon their track.
-You can understand that this register and diary may implicate
-some of the first men in the South, and that there may be many
-who will not sleep easy at night until it is recovered."
-
-"Then the page we have seen--"
-
-"Is such as we might expect. It ran, if I remember right, 'sent
-the pips to A, B, and C'--that is, sent the society's warning to
-them. Then there are successive entries that A and B cleared, or
-left the country, and finally that C was visited, with, I fear, a
-sinister result for C. Well, I think, Doctor, that we may let
-some light into this dark place, and I believe that the only
-chance young Openshaw has in the meantime is to do what I have
-told him. There is nothing more to be said or to be done
-to-night, so hand me over my violin and let us try to forget for
-half an hour the miserable weather and the still more miserable
-ways of our fellow-men."
-
-
-It had cleared in the morning, and the sun was shining with a
-subdued brightness through the dim veil which hangs over the
-great city. Sherlock Holmes was already at breakfast when I came
-down.
-
-"You will excuse me for not waiting for you," said he; "I have, I
-foresee, a very busy day before me in looking into this case of
-young Openshaw's."
-
-"What steps will you take?" I asked.
-
-"It will very much depend upon the results of my first inquiries.
-I may have to go down to Horsham, after all."
-
-"You will not go there first?"
-
-"No, I shall commence with the City. Just ring the bell and the
-maid will bring up your coffee."
-
-As I waited, I lifted the unopened newspaper from the table and
-glanced my eye over it. It rested upon a heading which sent a
-chill to my heart.
-
-"Holmes," I cried, "you are too late."
-
-"Ah!" said he, laying down his cup, "I feared as much. How was it
-done?" He spoke calmly, but I could see that he was deeply moved.
-
-"My eye caught the name of Openshaw, and the heading 'Tragedy
-Near Waterloo Bridge.' Here is the account:
-
-"Between nine and ten last night Police-Constable Cook, of the H
-Division, on duty near Waterloo Bridge, heard a cry for help and
-a splash in the water. The night, however, was extremely dark and
-stormy, so that, in spite of the help of several passers-by, it
-was quite impossible to effect a rescue. The alarm, however, was
-given, and, by the aid of the water-police, the body was
-eventually recovered. It proved to be that of a young gentleman
-whose name, as it appears from an envelope which was found in his
-pocket, was John Openshaw, and whose residence is near Horsham.
-It is conjectured that he may have been hurrying down to catch
-the last train from Waterloo Station, and that in his haste and
-the extreme darkness he missed his path and walked over the edge
-of one of the small landing-places for river steamboats. The body
-exhibited no traces of violence, and there can be no doubt that
-the deceased had been the victim of an unfortunate accident,
-which should have the effect of calling the attention of the
-authorities to the condition of the riverside landing-stages."
-
-We sat in silence for some minutes, Holmes more depressed and
-shaken than I had ever seen him.
-
-"That hurts my pride, Watson," he said at last. "It is a petty
-feeling, no doubt, but it hurts my pride. It becomes a personal
-matter with me now, and, if God sends me health, I shall set my
-hand upon this gang. That he should come to me for help, and that
-I should send him away to his death--!" He sprang from his chair
-and paced about the room in uncontrollable agitation, with a
-flush upon his sallow cheeks and a nervous clasping and
-unclasping of his long thin hands.
-
-"They must be cunning devils," he exclaimed at last. "How could
-they have decoyed him down there? The Embankment is not on the
-direct line to the station. The bridge, no doubt, was too
-crowded, even on such a night, for their purpose. Well, Watson,
-we shall see who will win in the long run. I am going out now!"
-
-"To the police?"
-
-"No; I shall be my own police. When I have spun the web they may
-take the flies, but not before."
-
-All day I was engaged in my professional work, and it was late in
-the evening before I returned to Baker Street. Sherlock Holmes
-had not come back yet. It was nearly ten o'clock before he
-entered, looking pale and worn. He walked up to the sideboard,
-and tearing a piece from the loaf he devoured it voraciously,
-washing it down with a long draught of water.
-
-"You are hungry," I remarked.
-
-"Starving. It had escaped my memory. I have had nothing since
-breakfast."
-
-"Nothing?"
-
-"Not a bite. I had no time to think of it."
-
-"And how have you succeeded?"
-
-"Well."
-
-"You have a clue?"
-
-"I have them in the hollow of my hand. Young Openshaw shall not
-long remain unavenged. Why, Watson, let us put their own devilish
-trade-mark upon them. It is well thought of!"
-
-"What do you mean?"
-
-He took an orange from the cupboard, and tearing it to pieces he
-squeezed out the pips upon the table. Of these he took five and
-thrust them into an envelope. On the inside of the flap he wrote
-"S. H. for J. O." Then he sealed it and addressed it to "Captain
-James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
-
-"That will await him when he enters port," said he, chuckling.
-"It may give him a sleepless night. He will find it as sure a
-precursor of his fate as Openshaw did before him."
-
-"And who is this Captain Calhoun?"
-
-"The leader of the gang. I shall have the others, but he first."
-
-"How did you trace it, then?"
-
-He took a large sheet of paper from his pocket, all covered with
-dates and names.
-
-"I have spent the whole day," said he, "over Lloyd's registers
-and files of the old papers, following the future career of every
-vessel which touched at Pondicherry in January and February in
-'83. There were thirty-six ships of fair tonnage which were
-reported there during those months. Of these, one, the 'Lone Star,'
-instantly attracted my attention, since, although it was reported
-as having cleared from London, the name is that which is given to
-one of the states of the Union."
-
-"Texas, I think."
-
-"I was not and am not sure which; but I knew that the ship must
-have an American origin."
-
-"What then?"
-
-"I searched the Dundee records, and when I found that the barque
-'Lone Star' was there in January, '85, my suspicion became a
-certainty. I then inquired as to the vessels which lay at present
-in the port of London."
-
-"Yes?"
-
-"The 'Lone Star' had arrived here last week. I went down to the
-Albert Dock and found that she had been taken down the river by
-the early tide this morning, homeward bound to Savannah. I wired
-to Gravesend and learned that she had passed some time ago, and
-as the wind is easterly I have no doubt that she is now past the
-Goodwins and not very far from the Isle of Wight."
-
-"What will you do, then?"
-
-"Oh, I have my hand upon him. He and the two mates, are as I
-learn, the only native-born Americans in the ship. The others are
-Finns and Germans. I know, also, that they were all three away
-from the ship last night. I had it from the stevedore who has
-been loading their cargo. By the time that their sailing-ship
-reaches Savannah the mail-boat will have carried this letter, and
-the cable will have informed the police of Savannah that these
-three gentlemen are badly wanted here upon a charge of murder."
-
-There is ever a flaw, however, in the best laid of human plans,
-and the murderers of John Openshaw were never to receive the
-orange pips which would show them that another, as cunning and as
-resolute as themselves, was upon their track. Very long and very
-severe were the equinoctial gales that year. We waited long for
-news of the "Lone Star" of Savannah, but none ever reached us. We
-did at last hear that somewhere far out in the Atlantic a
-shattered stern-post of a boat was seen swinging in the trough
-of a wave, with the letters "L. S." carved upon it, and that is
-all which we shall ever know of the fate of the "Lone Star."
-
-
-
-ADVENTURE VI. THE MAN WITH THE TWISTED LIP
-
-Isa Whitney, brother of the late Elias Whitney, D.D., Principal
-of the Theological College of St. George's, was much addicted to
-opium. The habit grew upon him, as I understand, from some
-foolish freak when he was at college; for having read De
-Quincey's description of his dreams and sensations, he had
-drenched his tobacco with laudanum in an attempt to produce the
-same effects. He found, as so many more have done, that the
-practice is easier to attain than to get rid of, and for many
-years he continued to be a slave to the drug, an object of
-mingled horror and pity to his friends and relatives. I can see
-him now, with yellow, pasty face, drooping lids, and pin-point
-pupils, all huddled in a chair, the wreck and ruin of a noble
-man.
-
-One night--it was in June, '89--there came a ring to my bell,
-about the hour when a man gives his first yawn and glances at the
-clock. I sat up in my chair, and my wife laid her needle-work
-down in her lap and made a little face of disappointment.
-
-"A patient!" said she. "You'll have to go out."
-
-I groaned, for I was newly come back from a weary day.
-
-We heard the door open, a few hurried words, and then quick steps
-upon the linoleum. Our own door flew open, and a lady, clad in
-some dark-coloured stuff, with a black veil, entered the room.
-
-"You will excuse my calling so late," she began, and then,
-suddenly losing her self-control, she ran forward, threw her arms
-about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
-such trouble!" she cried; "I do so want a little help."
-
-"Why," said my wife, pulling up her veil, "it is Kate Whitney.
-How you startled me, Kate! I had not an idea who you were when
-you came in."
-
-"I didn't know what to do, so I came straight to you." That was
-always the way. Folk who were in grief came to my wife like birds
-to a light-house.
-
-"It was very sweet of you to come. Now, you must have some wine
-and water, and sit here comfortably and tell us all about it. Or
-should you rather that I sent James off to bed?"
-
-"Oh, no, no! I want the doctor's advice and help, too. It's about
-Isa. He has not been home for two days. I am so frightened about
-him!"
-
-It was not the first time that she had spoken to us of her
-husband's trouble, to me as a doctor, to my wife as an old friend
-and school companion. We soothed and comforted her by such words
-as we could find. Did she know where her husband was? Was it
-possible that we could bring him back to her?
-
-It seems that it was. She had the surest information that of late
-he had, when the fit was on him, made use of an opium den in the
-farthest east of the City. Hitherto his orgies had always been
-confined to one day, and he had come back, twitching and
-shattered, in the evening. But now the spell had been upon him
-eight-and-forty hours, and he lay there, doubtless among the
-dregs of the docks, breathing in the poison or sleeping off the
-effects. There he was to be found, she was sure of it, at the Bar
-of Gold, in Upper Swandam Lane. But what was she to do? How could
-she, a young and timid woman, make her way into such a place and
-pluck her husband out from among the ruffians who surrounded him?
-
-There was the case, and of course there was but one way out of
-it. Might I not escort her to this place? And then, as a second
-thought, why should she come at all? I was Isa Whitney's medical
-adviser, and as such I had influence over him. I could manage it
-better if I were alone. I promised her on my word that I would
-send him home in a cab within two hours if he were indeed at the
-address which she had given me. And so in ten minutes I had left
-my armchair and cheery sitting-room behind me, and was speeding
-eastward in a hansom on a strange errand, as it seemed to me at
-the time, though the future only could show how strange it was to
-be.
-
-But there was no great difficulty in the first stage of my
-adventure. Upper Swandam Lane is a vile alley lurking behind the
-high wharves which line the north side of the river to the east
-of London Bridge. Between a slop-shop and a gin-shop, approached
-by a steep flight of steps leading down to a black gap like the
-mouth of a cave, I found the den of which I was in search.
-Ordering my cab to wait, I passed down the steps, worn hollow in
-the centre by the ceaseless tread of drunken feet; and by the
-light of a flickering oil-lamp above the door I found the latch
-and made my way into a long, low room, thick and heavy with the
-brown opium smoke, and terraced with wooden berths, like the
-forecastle of an emigrant ship.
-
-Through the gloom one could dimly catch a glimpse of bodies lying
-in strange fantastic poses, bowed shoulders, bent knees, heads
-thrown back, and chins pointing upward, with here and there a
-dark, lack-lustre eye turned upon the newcomer. Out of the black
-shadows there glimmered little red circles of light, now bright,
-now faint, as the burning poison waxed or waned in the bowls of
-the metal pipes. The most lay silent, but some muttered to
-themselves, and others talked together in a strange, low,
-monotonous voice, their conversation coming in gushes, and then
-suddenly tailing off into silence, each mumbling out his own
-thoughts and paying little heed to the words of his neighbour. At
-the farther end was a small brazier of burning charcoal, beside
-which on a three-legged wooden stool there sat a tall, thin old
-man, with his jaw resting upon his two fists, and his elbows upon
-his knees, staring into the fire.
-
-As I entered, a sallow Malay attendant had hurried up with a pipe
-for me and a supply of the drug, beckoning me to an empty berth.
-
-"Thank you. I have not come to stay," said I. "There is a friend
-of mine here, Mr. Isa Whitney, and I wish to speak with him."
-
-There was a movement and an exclamation from my right, and
-peering through the gloom, I saw Whitney, pale, haggard, and
-unkempt, staring out at me.
-
-"My God! It's Watson," said he. He was in a pitiable state of
-reaction, with every nerve in a twitter. "I say, Watson, what
-o'clock is it?"
-
-"Nearly eleven."
-
-"Of what day?"
-
-"Of Friday, June 19th."
-
-"Good heavens! I thought it was Wednesday. It is Wednesday. What
-d'you want to frighten a chap for?" He sank his face onto his
-arms and began to sob in a high treble key.
-
-"I tell you that it is Friday, man. Your wife has been waiting
-this two days for you. You should be ashamed of yourself!"
-
-"So I am. But you've got mixed, Watson, for I have only been here
-a few hours, three pipes, four pipes--I forget how many. But I'll
-go home with you. I wouldn't frighten Kate--poor little Kate.
-Give me your hand! Have you a cab?"
-
-"Yes, I have one waiting."
-
-"Then I shall go in it. But I must owe something. Find what I
-owe, Watson. I am all off colour. I can do nothing for myself."
-
-I walked down the narrow passage between the double row of
-sleepers, holding my breath to keep out the vile, stupefying
-fumes of the drug, and looking about for the manager. As I passed
-the tall man who sat by the brazier I felt a sudden pluck at my
-skirt, and a low voice whispered, "Walk past me, and then look
-back at me." The words fell quite distinctly upon my ear. I
-glanced down. They could only have come from the old man at my
-side, and yet he sat now as absorbed as ever, very thin, very
-wrinkled, bent with age, an opium pipe dangling down from between
-his knees, as though it had dropped in sheer lassitude from his
-fingers. I took two steps forward and looked back. It took all my
-self-control to prevent me from breaking out into a cry of
-astonishment. He had turned his back so that none could see him
-but I. His form had filled out, his wrinkles were gone, the dull
-eyes had regained their fire, and there, sitting by the fire and
-grinning at my surprise, was none other than Sherlock Holmes. He
-made a slight motion to me to approach him, and instantly, as he
-turned his face half round to the company once more, subsided
-into a doddering, loose-lipped senility.
-
-"Holmes!" I whispered, "what on earth are you doing in this den?"
-
-"As low as you can," he answered; "I have excellent ears. If you
-would have the great kindness to get rid of that sottish friend
-of yours I should be exceedingly glad to have a little talk with
-you."
-
-"I have a cab outside."
-
-"Then pray send him home in it. You may safely trust him, for he
-appears to be too limp to get into any mischief. I should
-recommend you also to send a note by the cabman to your wife to
-say that you have thrown in your lot with me. If you will wait
-outside, I shall be with you in five minutes."
-
-It was difficult to refuse any of Sherlock Holmes' requests, for
-they were always so exceedingly definite, and put forward with
-such a quiet air of mastery. I felt, however, that when Whitney
-was once confined in the cab my mission was practically
-accomplished; and for the rest, I could not wish anything better
-than to be associated with my friend in one of those singular
-adventures which were the normal condition of his existence. In a
-few minutes I had written my note, paid Whitney's bill, led him
-out to the cab, and seen him driven through the darkness. In a
-very short time a decrepit figure had emerged from the opium den,
-and I was walking down the street with Sherlock Holmes. For two
-streets he shuffled along with a bent back and an uncertain foot.
-Then, glancing quickly round, he straightened himself out and
-burst into a hearty fit of laughter.
-
-"I suppose, Watson," said he, "that you imagine that I have added
-opium-smoking to cocaine injections, and all the other little
-weaknesses on which you have favoured me with your medical
-views."
-
-"I was certainly surprised to find you there."
-
-"But not more so than I to find you."
-
-"I came to find a friend."
-
-"And I to find an enemy."
-
-"An enemy?"
-
-"Yes; one of my natural enemies, or, shall I say, my natural
-prey. Briefly, Watson, I am in the midst of a very remarkable
-inquiry, and I have hoped to find a clue in the incoherent
-ramblings of these sots, as I have done before now. Had I been
-recognised in that den my life would not have been worth an
-hour's purchase; for I have used it before now for my own
-purposes, and the rascally Lascar who runs it has sworn to have
-vengeance upon me. There is a trap-door at the back of that
-building, near the corner of Paul's Wharf, which could tell some
-strange tales of what has passed through it upon the moonless
-nights."
-
-"What! You do not mean bodies?"
-
-"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
-for every poor devil who has been done to death in that den. It
-is the vilest murder-trap on the whole riverside, and I fear that
-Neville St. Clair has entered it never to leave it more. But our
-trap should be here." He put his two forefingers between his
-teeth and whistled shrilly--a signal which was answered by a
-similar whistle from the distance, followed shortly by the rattle
-of wheels and the clink of horses' hoofs.
-
-"Now, Watson," said Holmes, as a tall dog-cart dashed up through
-the gloom, throwing out two golden tunnels of yellow light from
-its side lanterns. "You'll come with me, won't you?"
-
-"If I can be of use."
-
-"Oh, a trusty comrade is always of use; and a chronicler still
-more so. My room at The Cedars is a double-bedded one."
-
-"The Cedars?"
-
-"Yes; that is Mr. St. Clair's house. I am staying there while I
-conduct the inquiry."
-
-"Where is it, then?"
-
-"Near Lee, in Kent. We have a seven-mile drive before us."
-
-"But I am all in the dark."
-
-"Of course you are. You'll know all about it presently. Jump up
-here. All right, John; we shall not need you. Here's half a
-crown. Look out for me to-morrow, about eleven. Give her her
-head. So long, then!"
-
-He flicked the horse with his whip, and we dashed away through
-the endless succession of sombre and deserted streets, which
-widened gradually, until we were flying across a broad
-balustraded bridge, with the murky river flowing sluggishly
-beneath us. Beyond lay another dull wilderness of bricks and
-mortar, its silence broken only by the heavy, regular footfall of
-the policeman, or the songs and shouts of some belated party of
-revellers. A dull wrack was drifting slowly across the sky, and a
-star or two twinkled dimly here and there through the rifts of
-the clouds. Holmes drove in silence, with his head sunk upon his
-breast, and the air of a man who is lost in thought, while I sat
-beside him, curious to learn what this new quest might be which
-seemed to tax his powers so sorely, and yet afraid to break in
-upon the current of his thoughts. We had driven several miles,
-and were beginning to get to the fringe of the belt of suburban
-villas, when he shook himself, shrugged his shoulders, and lit up
-his pipe with the air of a man who has satisfied himself that he
-is acting for the best.
-
-"You have a grand gift of silence, Watson," said he. "It makes
-you quite invaluable as a companion. 'Pon my word, it is a great
-thing for me to have someone to talk to, for my own thoughts are
-not over-pleasant. I was wondering what I should say to this dear
-little woman to-night when she meets me at the door."
-
-"You forget that I know nothing about it."
-
-"I shall just have time to tell you the facts of the case before
-we get to Lee. It seems absurdly simple, and yet, somehow I can
-get nothing to go upon. There's plenty of thread, no doubt, but I
-can't get the end of it into my hand. Now, I'll state the case
-clearly and concisely to you, Watson, and maybe you can see a
-spark where all is dark to me."
-
-"Proceed, then."
-
-"Some years ago--to be definite, in May, 1884--there came to Lee
-a gentleman, Neville St. Clair by name, who appeared to have
-plenty of money. He took a large villa, laid out the grounds very
-nicely, and lived generally in good style. By degrees he made
-friends in the neighbourhood, and in 1887 he married the daughter
-of a local brewer, by whom he now has two children. He had no
-occupation, but was interested in several companies and went into
-town as a rule in the morning, returning by the 5:14 from Cannon
-Street every night. Mr. St. Clair is now thirty-seven years of
-age, is a man of temperate habits, a good husband, a very
-affectionate father, and a man who is popular with all who know
-him. I may add that his whole debts at the present moment, as far
-as we have been able to ascertain, amount to 88 pounds 10s., while
-he has 220 pounds standing to his credit in the Capital and
-Counties Bank. There is no reason, therefore, to think that money
-troubles have been weighing upon his mind.
-
-"Last Monday Mr. Neville St. Clair went into town rather earlier
-than usual, remarking before he started that he had two important
-commissions to perform, and that he would bring his little boy
-home a box of bricks. Now, by the merest chance, his wife
-received a telegram upon this same Monday, very shortly after his
-departure, to the effect that a small parcel of considerable
-value which she had been expecting was waiting for her at the
-offices of the Aberdeen Shipping Company. Now, if you are well up
-in your London, you will know that the office of the company is
-in Fresno Street, which branches out of Upper Swandam Lane, where
-you found me to-night. Mrs. St. Clair had her lunch, started for
-the City, did some shopping, proceeded to the company's office,
-got her packet, and found herself at exactly 4:35 walking through
-Swandam Lane on her way back to the station. Have you followed me
-so far?"
-
-"It is very clear."
-
-"If you remember, Monday was an exceedingly hot day, and Mrs. St.
-Clair walked slowly, glancing about in the hope of seeing a cab,
-as she did not like the neighbourhood in which she found herself.
-While she was walking in this way down Swandam Lane, she suddenly
-heard an ejaculation or cry, and was struck cold to see her
-husband looking down at her and, as it seemed to her, beckoning
-to her from a second-floor window. The window was open, and she
-distinctly saw his face, which she describes as being terribly
-agitated. He waved his hands frantically to her, and then
-vanished from the window so suddenly that it seemed to her that
-he had been plucked back by some irresistible force from behind.
-One singular point which struck her quick feminine eye was that
-although he wore some dark coat, such as he had started to town
-in, he had on neither collar nor necktie.
-
-"Convinced that something was amiss with him, she rushed down the
-steps--for the house was none other than the opium den in which
-you found me to-night--and running through the front room she
-attempted to ascend the stairs which led to the first floor. At
-the foot of the stairs, however, she met this Lascar scoundrel of
-whom I have spoken, who thrust her back and, aided by a Dane, who
-acts as assistant there, pushed her out into the street. Filled
-with the most maddening doubts and fears, she rushed down the
-lane and, by rare good-fortune, met in Fresno Street a number of
-constables with an inspector, all on their way to their beat. The
-inspector and two men accompanied her back, and in spite of the
-continued resistance of the proprietor, they made their way to
-the room in which Mr. St. Clair had last been seen. There was no
-sign of him there. In fact, in the whole of that floor there was
-no one to be found save a crippled wretch of hideous aspect, who,
-it seems, made his home there. Both he and the Lascar stoutly
-swore that no one else had been in the front room during the
-afternoon. So determined was their denial that the inspector was
-staggered, and had almost come to believe that Mrs. St. Clair had
-been deluded when, with a cry, she sprang at a small deal box
-which lay upon the table and tore the lid from it. Out there fell
-a cascade of children's bricks. It was the toy which he had
-promised to bring home.
-
-"This discovery, and the evident confusion which the cripple
-showed, made the inspector realise that the matter was serious.
-The rooms were carefully examined, and results all pointed to an
-abominable crime. The front room was plainly furnished as a
-sitting-room and led into a small bedroom, which looked out upon
-the back of one of the wharves. Between the wharf and the bedroom
-window is a narrow strip, which is dry at low tide but is covered
-at high tide with at least four and a half feet of water. The
-bedroom window was a broad one and opened from below. On
-examination traces of blood were to be seen upon the windowsill,
-and several scattered drops were visible upon the wooden floor of
-the bedroom. Thrust away behind a curtain in the front room were
-all the clothes of Mr. Neville St. Clair, with the exception of
-his coat. His boots, his socks, his hat, and his watch--all were
-there. There were no signs of violence upon any of these
-garments, and there were no other traces of Mr. Neville St.
-Clair. Out of the window he must apparently have gone for no
-other exit could be discovered, and the ominous bloodstains upon
-the sill gave little promise that he could save himself by
-swimming, for the tide was at its very highest at the moment of
-the tragedy.
-
-"And now as to the villains who seemed to be immediately
-implicated in the matter. The Lascar was known to be a man of the
-vilest antecedents, but as, by Mrs. St. Clair's story, he was
-known to have been at the foot of the stair within a very few
-seconds of her husband's appearance at the window, he could
-hardly have been more than an accessory to the crime. His defence
-was one of absolute ignorance, and he protested that he had no
-knowledge as to the doings of Hugh Boone, his lodger, and that he
-could not account in any way for the presence of the missing
-gentleman's clothes.
-
-"So much for the Lascar manager. Now for the sinister cripple who
-lives upon the second floor of the opium den, and who was
-certainly the last human being whose eyes rested upon Neville St.
-Clair. His name is Hugh Boone, and his hideous face is one which
-is familiar to every man who goes much to the City. He is a
-professional beggar, though in order to avoid the police
-regulations he pretends to a small trade in wax vestas. Some
-little distance down Threadneedle Street, upon the left-hand
-side, there is, as you may have remarked, a small angle in the
-wall. Here it is that this creature takes his daily seat,
-cross-legged with his tiny stock of matches on his lap, and as he
-is a piteous spectacle a small rain of charity descends into the
-greasy leather cap which lies upon the pavement beside him. I
-have watched the fellow more than once before ever I thought of
-making his professional acquaintance, and I have been surprised
-at the harvest which he has reaped in a short time. His
-appearance, you see, is so remarkable that no one can pass him
-without observing him. A shock of orange hair, a pale face
-disfigured by a horrible scar, which, by its contraction, has
-turned up the outer edge of his upper lip, a bulldog chin, and a
-pair of very penetrating dark eyes, which present a singular
-contrast to the colour of his hair, all mark him out from amid
-the common crowd of mendicants and so, too, does his wit, for he
-is ever ready with a reply to any piece of chaff which may be
-thrown at him by the passers-by. This is the man whom we now
-learn to have been the lodger at the opium den, and to have been
-the last man to see the gentleman of whom we are in quest."
-
-"But a cripple!" said I. "What could he have done single-handed
-against a man in the prime of life?"
-
-"He is a cripple in the sense that he walks with a limp; but in
-other respects he appears to be a powerful and well-nurtured man.
-Surely your medical experience would tell you, Watson, that
-weakness in one limb is often compensated for by exceptional
-strength in the others."
-
-"Pray continue your narrative."
-
-"Mrs. St. Clair had fainted at the sight of the blood upon the
-window, and she was escorted home in a cab by the police, as her
-presence could be of no help to them in their investigations.
-Inspector Barton, who had charge of the case, made a very careful
-examination of the premises, but without finding anything which
-threw any light upon the matter. One mistake had been made in not
-arresting Boone instantly, as he was allowed some few minutes
-during which he might have communicated with his friend the
-Lascar, but this fault was soon remedied, and he was seized and
-searched, without anything being found which could incriminate
-him. There were, it is true, some blood-stains upon his right
-shirt-sleeve, but he pointed to his ring-finger, which had been
-cut near the nail, and explained that the bleeding came from
-there, adding that he had been to the window not long before, and
-that the stains which had been observed there came doubtless from
-the same source. He denied strenuously having ever seen Mr.
-Neville St. Clair and swore that the presence of the clothes in
-his room was as much a mystery to him as to the police. As to
-Mrs. St. Clair's assertion that she had actually seen her husband
-at the window, he declared that she must have been either mad or
-dreaming. He was removed, loudly protesting, to the
-police-station, while the inspector remained upon the premises in
-the hope that the ebbing tide might afford some fresh clue.
-
-"And it did, though they hardly found upon the mud-bank what they
-had feared to find. It was Neville St. Clair's coat, and not
-Neville St. Clair, which lay uncovered as the tide receded. And
-what do you think they found in the pockets?"
-
-"I cannot imagine."
-
-"No, I don't think you would guess. Every pocket stuffed with
-pennies and half-pennies--421 pennies and 270 half-pennies. It
-was no wonder that it had not been swept away by the tide. But a
-human body is a different matter. There is a fierce eddy between
-the wharf and the house. It seemed likely enough that the
-weighted coat had remained when the stripped body had been sucked
-away into the river."
-
-"But I understand that all the other clothes were found in the
-room. Would the body be dressed in a coat alone?"
-
-"No, sir, but the facts might be met speciously enough. Suppose
-that this man Boone had thrust Neville St. Clair through the
-window, there is no human eye which could have seen the deed.
-What would he do then? It would of course instantly strike him
-that he must get rid of the tell-tale garments. He would seize
-the coat, then, and be in the act of throwing it out, when it
-would occur to him that it would swim and not sink. He has little
-time, for he has heard the scuffle downstairs when the wife tried
-to force her way up, and perhaps he has already heard from his
-Lascar confederate that the police are hurrying up the street.
-There is not an instant to be lost. He rushes to some secret
-hoard, where he has accumulated the fruits of his beggary, and he
-stuffs all the coins upon which he can lay his hands into the
-pockets to make sure of the coat's sinking. He throws it out, and
-would have done the same with the other garments had not he heard
-the rush of steps below, and only just had time to close the
-window when the police appeared."
-
-"It certainly sounds feasible."
-
-"Well, we will take it as a working hypothesis for want of a
-better. Boone, as I have told you, was arrested and taken to the
-station, but it could not be shown that there had ever before
-been anything against him. He had for years been known as a
-professional beggar, but his life appeared to have been a very
-quiet and innocent one. There the matter stands at present, and
-the questions which have to be solved--what Neville St. Clair was
-doing in the opium den, what happened to him when there, where is
-he now, and what Hugh Boone had to do with his disappearance--are
-all as far from a solution as ever. I confess that I cannot
-recall any case within my experience which looked at the first
-glance so simple and yet which presented such difficulties."
-
-While Sherlock Holmes had been detailing this singular series of
-events, we had been whirling through the outskirts of the great
-town until the last straggling houses had been left behind, and
-we rattled along with a country hedge upon either side of us.
-Just as he finished, however, we drove through two scattered
-villages, where a few lights still glimmered in the windows.
-
-"We are on the outskirts of Lee," said my companion. "We have
-touched on three English counties in our short drive, starting in
-Middlesex, passing over an angle of Surrey, and ending in Kent.
-See that light among the trees? That is The Cedars, and beside
-that lamp sits a woman whose anxious ears have already, I have
-little doubt, caught the clink of our horse's feet."
-
-"But why are you not conducting the case from Baker Street?" I
-asked.
-
-"Because there are many inquiries which must be made out here.
-Mrs. St. Clair has most kindly put two rooms at my disposal, and
-you may rest assured that she will have nothing but a welcome for
-my friend and colleague. I hate to meet her, Watson, when I have
-no news of her husband. Here we are. Whoa, there, whoa!"
-
-We had pulled up in front of a large villa which stood within its
-own grounds. A stable-boy had run out to the horse's head, and
-springing down, I followed Holmes up the small, winding
-gravel-drive which led to the house. As we approached, the door
-flew open, and a little blonde woman stood in the opening, clad
-in some sort of light mousseline de soie, with a touch of fluffy
-pink chiffon at her neck and wrists. She stood with her figure
-outlined against the flood of light, one hand upon the door, one
-half-raised in her eagerness, her body slightly bent, her head
-and face protruded, with eager eyes and parted lips, a standing
-question.
-
-"Well?" she cried, "well?" And then, seeing that there were two
-of us, she gave a cry of hope which sank into a groan as she saw
-that my companion shook his head and shrugged his shoulders.
-
-"No good news?"
-
-"None."
-
-"No bad?"
-
-"No."
-
-"Thank God for that. But come in. You must be weary, for you have
-had a long day."
-
-"This is my friend, Dr. Watson. He has been of most vital use to
-me in several of my cases, and a lucky chance has made it
-possible for me to bring him out and associate him with this
-investigation."
-
-"I am delighted to see you," said she, pressing my hand warmly.
-"You will, I am sure, forgive anything that may be wanting in our
-arrangements, when you consider the blow which has come so
-suddenly upon us."
-
-"My dear madam," said I, "I am an old campaigner, and if I were
-not I can very well see that no apology is needed. If I can be of
-any assistance, either to you or to my friend here, I shall be
-indeed happy."
-
-"Now, Mr. Sherlock Holmes," said the lady as we entered a
-well-lit dining-room, upon the table of which a cold supper had
-been laid out, "I should very much like to ask you one or two
-plain questions, to which I beg that you will give a plain
-answer."
-
-"Certainly, madam."
-
-"Do not trouble about my feelings. I am not hysterical, nor given
-to fainting. I simply wish to hear your real, real opinion."
-
-"Upon what point?"
-
-"In your heart of hearts, do you think that Neville is alive?"
-
-Sherlock Holmes seemed to be embarrassed by the question.
-"Frankly, now!" she repeated, standing upon the rug and looking
-keenly down at him as he leaned back in a basket-chair.
-
-"Frankly, then, madam, I do not."
-
-"You think that he is dead?"
-
-"I do."
-
-"Murdered?"
-
-"I don't say that. Perhaps."
-
-"And on what day did he meet his death?"
-
-"On Monday."
-
-"Then perhaps, Mr. Holmes, you will be good enough to explain how
-it is that I have received a letter from him to-day."
-
-Sherlock Holmes sprang out of his chair as if he had been
-galvanised.
-
-"What!" he roared.
-
-"Yes, to-day." She stood smiling, holding up a little slip of
-paper in the air.
-
-"May I see it?"
-
-"Certainly."
-
-He snatched it from her in his eagerness, and smoothing it out
-upon the table he drew over the lamp and examined it intently. I
-had left my chair and was gazing at it over his shoulder. The
-envelope was a very coarse one and was stamped with the Gravesend
-postmark and with the date of that very day, or rather of the day
-before, for it was considerably after midnight.
-
-"Coarse writing," murmured Holmes. "Surely this is not your
-husband's writing, madam."
-
-"No, but the enclosure is."
-
-"I perceive also that whoever addressed the envelope had to go
-and inquire as to the address."
-
-"How can you tell that?"
-
-"The name, you see, is in perfectly black ink, which has dried
-itself. The rest is of the greyish colour, which shows that
-blotting-paper has been used. If it had been written straight
-off, and then blotted, none would be of a deep black shade. This
-man has written the name, and there has then been a pause before
-he wrote the address, which can only mean that he was not
-familiar with it. It is, of course, a trifle, but there is
-nothing so important as trifles. Let us now see the letter. Ha!
-there has been an enclosure here!"
-
-"Yes, there was a ring. His signet-ring."
-
-"And you are sure that this is your husband's hand?"
-
-"One of his hands."
-
-"One?"
-
-"His hand when he wrote hurriedly. It is very unlike his usual
-writing, and yet I know it well."
-
-"'Dearest do not be frightened. All will come well. There is a
-huge error which it may take some little time to rectify.
-Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
-of a book, octavo size, no water-mark. Hum! Posted to-day in
-Gravesend by a man with a dirty thumb. Ha! And the flap has been
-gummed, if I am not very much in error, by a person who had been
-chewing tobacco. And you have no doubt that it is your husband's
-hand, madam?"
-
-"None. Neville wrote those words."
-
-"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
-the clouds lighten, though I should not venture to say that the
-danger is over."
-
-"But he must be alive, Mr. Holmes."
-
-"Unless this is a clever forgery to put us on the wrong scent.
-The ring, after all, proves nothing. It may have been taken from
-him."
-
-"No, no; it is, it is his very own writing!"
-
-"Very well. It may, however, have been written on Monday and only
-posted to-day."
-
-"That is possible."
-
-"If so, much may have happened between."
-
-"Oh, you must not discourage me, Mr. Holmes. I know that all is
-well with him. There is so keen a sympathy between us that I
-should know if evil came upon him. On the very day that I saw him
-last he cut himself in the bedroom, and yet I in the dining-room
-rushed upstairs instantly with the utmost certainty that
-something had happened. Do you think that I would respond to such
-a trifle and yet be ignorant of his death?"
-
-"I have seen too much not to know that the impression of a woman
-may be more valuable than the conclusion of an analytical
-reasoner. And in this letter you certainly have a very strong
-piece of evidence to corroborate your view. But if your husband
-is alive and able to write letters, why should he remain away
-from you?"
-
-"I cannot imagine. It is unthinkable."
-
-"And on Monday he made no remarks before leaving you?"
-
-"No."
-
-"And you were surprised to see him in Swandam Lane?"
-
-"Very much so."
-
-"Was the window open?"
-
-"Yes."
-
-"Then he might have called to you?"
-
-"He might."
-
-"He only, as I understand, gave an inarticulate cry?"
-
-"Yes."
-
-"A call for help, you thought?"
-
-"Yes. He waved his hands."
-
-"But it might have been a cry of surprise. Astonishment at the
-unexpected sight of you might cause him to throw up his hands?"
-
-"It is possible."
-
-"And you thought he was pulled back?"
-
-"He disappeared so suddenly."
-
-"He might have leaped back. You did not see anyone else in the
-room?"
-
-"No, but this horrible man confessed to having been there, and
-the Lascar was at the foot of the stairs."
-
-"Quite so. Your husband, as far as you could see, had his
-ordinary clothes on?"
-
-"But without his collar or tie. I distinctly saw his bare
-throat."
-
-"Had he ever spoken of Swandam Lane?"
-
-"Never."
-
-"Had he ever showed any signs of having taken opium?"
-
-"Never."
-
-"Thank you, Mrs. St. Clair. Those are the principal points about
-which I wished to be absolutely clear. We shall now have a little
-supper and then retire, for we may have a very busy day
-to-morrow."
-
-A large and comfortable double-bedded room had been placed at our
-disposal, and I was quickly between the sheets, for I was weary
-after my night of adventure. Sherlock Holmes was a man, however,
-who, when he had an unsolved problem upon his mind, would go for
-days, and even for a week, without rest, turning it over,
-rearranging his facts, looking at it from every point of view
-until he had either fathomed it or convinced himself that his
-data were insufficient. It was soon evident to me that he was now
-preparing for an all-night sitting. He took off his coat and
-waistcoat, put on a large blue dressing-gown, and then wandered
-about the room collecting pillows from his bed and cushions from
-the sofa and armchairs. With these he constructed a sort of
-Eastern divan, upon which he perched himself cross-legged, with
-an ounce of shag tobacco and a box of matches laid out in front
-of him. In the dim light of the lamp I saw him sitting there, an
-old briar pipe between his lips, his eyes fixed vacantly upon the
-corner of the ceiling, the blue smoke curling up from him,
-silent, motionless, with the light shining upon his strong-set
-aquiline features. So he sat as I dropped off to sleep, and so he
-sat when a sudden ejaculation caused me to wake up, and I found
-the summer sun shining into the apartment. The pipe was still
-between his lips, the smoke still curled upward, and the room was
-full of a dense tobacco haze, but nothing remained of the heap of
-shag which I had seen upon the previous night.
-
-"Awake, Watson?" he asked.
-
-"Yes."
-
-"Game for a morning drive?"
-
-"Certainly."
-
-"Then dress. No one is stirring yet, but I know where the
-stable-boy sleeps, and we shall soon have the trap out." He
-chuckled to himself as he spoke, his eyes twinkled, and he seemed
-a different man to the sombre thinker of the previous night.
-
-As I dressed I glanced at my watch. It was no wonder that no one
-was stirring. It was twenty-five minutes past four. I had hardly
-finished when Holmes returned with the news that the boy was
-putting in the horse.
-
-"I want to test a little theory of mine," said he, pulling on his
-boots. "I think, Watson, that you are now standing in the
-presence of one of the most absolute fools in Europe. I deserve
-to be kicked from here to Charing Cross. But I think I have the
-key of the affair now."
-
-"And where is it?" I asked, smiling.
-
-"In the bathroom," he answered. "Oh, yes, I am not joking," he
-continued, seeing my look of incredulity. "I have just been
-there, and I have taken it out, and I have got it in this
-Gladstone bag. Come on, my boy, and we shall see whether it will
-not fit the lock."
-
-We made our way downstairs as quietly as possible, and out into
-the bright morning sunshine. In the road stood our horse and
-trap, with the half-clad stable-boy waiting at the head. We both
-sprang in, and away we dashed down the London Road. A few country
-carts were stirring, bearing in vegetables to the metropolis, but
-the lines of villas on either side were as silent and lifeless as
-some city in a dream.
-
-"It has been in some points a singular case," said Holmes,
-flicking the horse on into a gallop. "I confess that I have been
-as blind as a mole, but it is better to learn wisdom late than
-never to learn it at all."
-
-In town the earliest risers were just beginning to look sleepily
-from their windows as we drove through the streets of the Surrey
-side. Passing down the Waterloo Bridge Road we crossed over the
-river, and dashing up Wellington Street wheeled sharply to the
-right and found ourselves in Bow Street. Sherlock Holmes was well
-known to the force, and the two constables at the door saluted
-him. One of them held the horse's head while the other led us in.
-
-"Who is on duty?" asked Holmes.
-
-"Inspector Bradstreet, sir."
-
-"Ah, Bradstreet, how are you?" A tall, stout official had come
-down the stone-flagged passage, in a peaked cap and frogged
-jacket. "I wish to have a quiet word with you, Bradstreet."
-"Certainly, Mr. Holmes. Step into my room here." It was a small,
-office-like room, with a huge ledger upon the table, and a
-telephone projecting from the wall. The inspector sat down at his
-desk.
-
-"What can I do for you, Mr. Holmes?"
-
-"I called about that beggarman, Boone--the one who was charged
-with being concerned in the disappearance of Mr. Neville St.
-Clair, of Lee."
-
-"Yes. He was brought up and remanded for further inquiries."
-
-"So I heard. You have him here?"
-
-"In the cells."
-
-"Is he quiet?"
-
-"Oh, he gives no trouble. But he is a dirty scoundrel."
-
-"Dirty?"
-
-"Yes, it is all we can do to make him wash his hands, and his
-face is as black as a tinker's. Well, when once his case has been
-settled, he will have a regular prison bath; and I think, if you
-saw him, you would agree with me that he needed it."
-
-"I should like to see him very much."
-
-"Would you? That is easily done. Come this way. You can leave
-your bag."
-
-"No, I think that I'll take it."
-
-"Very good. Come this way, if you please." He led us down a
-passage, opened a barred door, passed down a winding stair, and
-brought us to a whitewashed corridor with a line of doors on each
-side.
-
-"The third on the right is his," said the inspector. "Here it
-is!" He quietly shot back a panel in the upper part of the door
-and glanced through.
-
-"He is asleep," said he. "You can see him very well."
-
-We both put our eyes to the grating. The prisoner lay with his
-face towards us, in a very deep sleep, breathing slowly and
-heavily. He was a middle-sized man, coarsely clad as became his
-calling, with a coloured shirt protruding through the rent in his
-tattered coat. He was, as the inspector had said, extremely
-dirty, but the grime which covered his face could not conceal its
-repulsive ugliness. A broad wheal from an old scar ran right
-across it from eye to chin, and by its contraction had turned up
-one side of the upper lip, so that three teeth were exposed in a
-perpetual snarl. A shock of very bright red hair grew low over
-his eyes and forehead.
-
-"He's a beauty, isn't he?" said the inspector.
-
-"He certainly needs a wash," remarked Holmes. "I had an idea that
-he might, and I took the liberty of bringing the tools with me."
-He opened the Gladstone bag as he spoke, and took out, to my
-astonishment, a very large bath-sponge.
-
-"He! he! You are a funny one," chuckled the inspector.
-
-"Now, if you will have the great goodness to open that door very
-quietly, we will soon make him cut a much more respectable
-figure."
-
-"Well, I don't know why not," said the inspector. "He doesn't
-look a credit to the Bow Street cells, does he?" He slipped his
-key into the lock, and we all very quietly entered the cell. The
-sleeper half turned, and then settled down once more into a deep
-slumber. Holmes stooped to the water-jug, moistened his sponge,
-and then rubbed it twice vigorously across and down the
-prisoner's face.
-
-"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
-Lee, in the county of Kent."
-
-Never in my life have I seen such a sight. The man's face peeled
-off under the sponge like the bark from a tree. Gone was the
-coarse brown tint! Gone, too, was the horrid scar which had
-seamed it across, and the twisted lip which had given the
-repulsive sneer to the face! A twitch brought away the tangled
-red hair, and there, sitting up in his bed, was a pale,
-sad-faced, refined-looking man, black-haired and smooth-skinned,
-rubbing his eyes and staring about him with sleepy bewilderment.
-Then suddenly realising the exposure, he broke into a scream and
-threw himself down with his face to the pillow.
-
-"Great heavens!" cried the inspector, "it is, indeed, the missing
-man. I know him from the photograph."
-
-The prisoner turned with the reckless air of a man who abandons
-himself to his destiny. "Be it so," said he. "And pray what am I
-charged with?"
-
-"With making away with Mr. Neville St.-- Oh, come, you can't be
-charged with that unless they make a case of attempted suicide of
-it," said the inspector with a grin. "Well, I have been
-twenty-seven years in the force, but this really takes the cake."
-
-"If I am Mr. Neville St. Clair, then it is obvious that no crime
-has been committed, and that, therefore, I am illegally
-detained."
-
-"No crime, but a very great error has been committed," said
-Holmes. "You would have done better to have trusted your wife."
-
-"It was not the wife; it was the children," groaned the prisoner.
-"God help me, I would not have them ashamed of their father. My
-God! What an exposure! What can I do?"
-
-Sherlock Holmes sat down beside him on the couch and patted him
-kindly on the shoulder.
-
-"If you leave it to a court of law to clear the matter up," said
-he, "of course you can hardly avoid publicity. On the other hand,
-if you convince the police authorities that there is no possible
-case against you, I do not know that there is any reason that the
-details should find their way into the papers. Inspector
-Bradstreet would, I am sure, make notes upon anything which you
-might tell us and submit it to the proper authorities. The case
-would then never go into court at all."
-
-"God bless you!" cried the prisoner passionately. "I would have
-endured imprisonment, ay, even execution, rather than have left
-my miserable secret as a family blot to my children.
-
-"You are the first who have ever heard my story. My father was a
-schoolmaster in Chesterfield, where I received an excellent
-education. I travelled in my youth, took to the stage, and
-finally became a reporter on an evening paper in London. One day
-my editor wished to have a series of articles upon begging in the
-metropolis, and I volunteered to supply them. There was the point
-from which all my adventures started. It was only by trying
-begging as an amateur that I could get the facts upon which to
-base my articles. When an actor I had, of course, learned all the
-secrets of making up, and had been famous in the green-room for
-my skill. I took advantage now of my attainments. I painted my
-face, and to make myself as pitiable as possible I made a good
-scar and fixed one side of my lip in a twist by the aid of a
-small slip of flesh-coloured plaster. Then with a red head of
-hair, and an appropriate dress, I took my station in the business
-part of the city, ostensibly as a match-seller but really as a
-beggar. For seven hours I plied my trade, and when I returned
-home in the evening I found to my surprise that I had received no
-less than 26s. 4d.
-
-"I wrote my articles and thought little more of the matter until,
-some time later, I backed a bill for a friend and had a writ
-served upon me for 25 pounds. I was at my wit's end where to get
-the money, but a sudden idea came to me. I begged a fortnight's
-grace from the creditor, asked for a holiday from my employers,
-and spent the time in begging in the City under my disguise. In
-ten days I had the money and had paid the debt.
-
-"Well, you can imagine how hard it was to settle down to arduous
-work at 2 pounds a week when I knew that I could earn as much in
-a day by smearing my face with a little paint, laying my cap on
-the ground, and sitting still. It was a long fight between my
-pride and the money, but the dollars won at last, and I threw up
-reporting and sat day after day in the corner which I had first
-chosen, inspiring pity by my ghastly face and filling my pockets
-with coppers. Only one man knew my secret. He was the keeper of a
-low den in which I used to lodge in Swandam Lane, where I could
-every morning emerge as a squalid beggar and in the evenings
-transform myself into a well-dressed man about town. This fellow,
-a Lascar, was well paid by me for his rooms, so that I knew that
-my secret was safe in his possession.
-
-"Well, very soon I found that I was saving considerable sums of
-money. I do not mean that any beggar in the streets of London
-could earn 700 pounds a year--which is less than my average
-takings--but I had exceptional advantages in my power of making
-up, and also in a facility of repartee, which improved by
-practice and made me quite a recognised character in the City.
-All day a stream of pennies, varied by silver, poured in upon me,
-and it was a very bad day in which I failed to take 2 pounds.
-
-"As I grew richer I grew more ambitious, took a house in the
-country, and eventually married, without anyone having a
-suspicion as to my real occupation. My dear wife knew that I had
-business in the City. She little knew what.
-
-"Last Monday I had finished for the day and was dressing in my
-room above the opium den when I looked out of my window and saw,
-to my horror and astonishment, that my wife was standing in the
-street, with her eyes fixed full upon me. I gave a cry of
-surprise, threw up my arms to cover my face, and, rushing to my
-confidant, the Lascar, entreated him to prevent anyone from
-coming up to me. I heard her voice downstairs, but I knew that
-she could not ascend. Swiftly I threw off my clothes, pulled on
-those of a beggar, and put on my pigments and wig. Even a wife's
-eyes could not pierce so complete a disguise. But then it
-occurred to me that there might be a search in the room, and that
-the clothes might betray me. I threw open the window, reopening
-by my violence a small cut which I had inflicted upon myself in
-the bedroom that morning. Then I seized my coat, which was
-weighted by the coppers which I had just transferred to it from
-the leather bag in which I carried my takings. I hurled it out of
-the window, and it disappeared into the Thames. The other clothes
-would have followed, but at that moment there was a rush of
-constables up the stair, and a few minutes after I found, rather,
-I confess, to my relief, that instead of being identified as Mr.
-Neville St. Clair, I was arrested as his murderer.
-
-"I do not know that there is anything else for me to explain. I
-was determined to preserve my disguise as long as possible, and
-hence my preference for a dirty face. Knowing that my wife would
-be terribly anxious, I slipped off my ring and confided it to the
-Lascar at a moment when no constable was watching me, together
-with a hurried scrawl, telling her that she had no cause to
-fear."
-
-"That note only reached her yesterday," said Holmes.
-
-"Good God! What a week she must have spent!"
-
-"The police have watched this Lascar," said Inspector Bradstreet,
-"and I can quite understand that he might find it difficult to
-post a letter unobserved. Probably he handed it to some sailor
-customer of his, who forgot all about it for some days."
-
-"That was it," said Holmes, nodding approvingly; "I have no doubt
-of it. But have you never been prosecuted for begging?"
-
-"Many times; but what was a fine to me?"
-
-"It must stop here, however," said Bradstreet. "If the police are
-to hush this thing up, there must be no more of Hugh Boone."
-
-"I have sworn it by the most solemn oaths which a man can take."
-
-"In that case I think that it is probable that no further steps
-may be taken. But if you are found again, then all must come out.
-I am sure, Mr. Holmes, that we are very much indebted to you for
-having cleared the matter up. I wish I knew how you reach your
-results."
-
-"I reached this one," said my friend, "by sitting upon five
-pillows and consuming an ounce of shag. I think, Watson, that if
-we drive to Baker Street we shall just be in time for breakfast."
-
-
-
-VII. THE ADVENTURE OF THE BLUE CARBUNCLE
-
-I had called upon my friend Sherlock Holmes upon the second
-morning after Christmas, with the intention of wishing him the
-compliments of the season. He was lounging upon the sofa in a
-purple dressing-gown, a pipe-rack within his reach upon the
-right, and a pile of crumpled morning papers, evidently newly
-studied, near at hand. Beside the couch was a wooden chair, and
-on the angle of the back hung a very seedy and disreputable
-hard-felt hat, much the worse for wear, and cracked in several
-places. A lens and a forceps lying upon the seat of the chair
-suggested that the hat had been suspended in this manner for the
-purpose of examination.
-
-"You are engaged," said I; "perhaps I interrupt you."
-
-"Not at all. I am glad to have a friend with whom I can discuss
-my results. The matter is a perfectly trivial one"--he jerked his
-thumb in the direction of the old hat--"but there are points in
-connection with it which are not entirely devoid of interest and
-even of instruction."
-
-I seated myself in his armchair and warmed my hands before his
-crackling fire, for a sharp frost had set in, and the windows
-were thick with the ice crystals. "I suppose," I remarked, "that,
-homely as it looks, this thing has some deadly story linked on to
-it--that it is the clue which will guide you in the solution of
-some mystery and the punishment of some crime."
-
-"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
-those whimsical little incidents which will happen when you have
-four million human beings all jostling each other within the
-space of a few square miles. Amid the action and reaction of so
-dense a swarm of humanity, every possible combination of events
-may be expected to take place, and many a little problem will be
-presented which may be striking and bizarre without being
-criminal. We have already had experience of such."
-
-"So much so," I remarked, "that of the last six cases which I
-have added to my notes, three have been entirely free of any
-legal crime."
-
-"Precisely. You allude to my attempt to recover the Irene Adler
-papers, to the singular case of Miss Mary Sutherland, and to the
-adventure of the man with the twisted lip. Well, I have no doubt
-that this small matter will fall into the same innocent category.
-You know Peterson, the commissionaire?"
-
-"Yes."
-
-"It is to him that this trophy belongs."
-
-"It is his hat."
-
-"No, no, he found it. Its owner is unknown. I beg that you will
-look upon it not as a battered billycock but as an intellectual
-problem. And, first, as to how it came here. It arrived upon
-Christmas morning, in company with a good fat goose, which is, I
-have no doubt, roasting at this moment in front of Peterson's
-fire. The facts are these: about four o'clock on Christmas
-morning, Peterson, who, as you know, is a very honest fellow, was
-returning from some small jollification and was making his way
-homeward down Tottenham Court Road. In front of him he saw, in
-the gaslight, a tallish man, walking with a slight stagger, and
-carrying a white goose slung over his shoulder. As he reached the
-corner of Goodge Street, a row broke out between this stranger
-and a little knot of roughs. One of the latter knocked off the
-man's hat, on which he raised his stick to defend himself and,
-swinging it over his head, smashed the shop window behind him.
-Peterson had rushed forward to protect the stranger from his
-assailants; but the man, shocked at having broken the window, and
-seeing an official-looking person in uniform rushing towards him,
-dropped his goose, took to his heels, and vanished amid the
-labyrinth of small streets which lie at the back of Tottenham
-Court Road. The roughs had also fled at the appearance of
-Peterson, so that he was left in possession of the field of
-battle, and also of the spoils of victory in the shape of this
-battered hat and a most unimpeachable Christmas goose."
-
-"Which surely he restored to their owner?"
-
-"My dear fellow, there lies the problem. It is true that 'For
-Mrs. Henry Baker' was printed upon a small card which was tied to
-the bird's left leg, and it is also true that the initials 'H.
-B.' are legible upon the lining of this hat, but as there are
-some thousands of Bakers, and some hundreds of Henry Bakers in
-this city of ours, it is not easy to restore lost property to any
-one of them."
-
-"What, then, did Peterson do?"
-
-"He brought round both hat and goose to me on Christmas morning,
-knowing that even the smallest problems are of interest to me.
-The goose we retained until this morning, when there were signs
-that, in spite of the slight frost, it would be well that it
-should be eaten without unnecessary delay. Its finder has carried
-it off, therefore, to fulfil the ultimate destiny of a goose,
-while I continue to retain the hat of the unknown gentleman who
-lost his Christmas dinner."
-
-"Did he not advertise?"
-
-"No."
-
-"Then, what clue could you have as to his identity?"
-
-"Only as much as we can deduce."
-
-"From his hat?"
-
-"Precisely."
-
-"But you are joking. What can you gather from this old battered
-felt?"
-
-"Here is my lens. You know my methods. What can you gather
-yourself as to the individuality of the man who has worn this
-article?"
-
-I took the tattered object in my hands and turned it over rather
-ruefully. It was a very ordinary black hat of the usual round
-shape, hard and much the worse for wear. The lining had been of
-red silk, but was a good deal discoloured. There was no maker's
-name; but, as Holmes had remarked, the initials "H. B." were
-scrawled upon one side. It was pierced in the brim for a
-hat-securer, but the elastic was missing. For the rest, it was
-cracked, exceedingly dusty, and spotted in several places,
-although there seemed to have been some attempt to hide the
-discoloured patches by smearing them with ink.
-
-"I can see nothing," said I, handing it back to my friend.
-
-"On the contrary, Watson, you can see everything. You fail,
-however, to reason from what you see. You are too timid in
-drawing your inferences."
-
-"Then, pray tell me what it is that you can infer from this hat?"
-
-He picked it up and gazed at it in the peculiar introspective
-fashion which was characteristic of him. "It is perhaps less
-suggestive than it might have been," he remarked, "and yet there
-are a few inferences which are very distinct, and a few others
-which represent at least a strong balance of probability. That
-the man was highly intellectual is of course obvious upon the
-face of it, and also that he was fairly well-to-do within the
-last three years, although he has now fallen upon evil days. He
-had foresight, but has less now than formerly, pointing to a
-moral retrogression, which, when taken with the decline of his
-fortunes, seems to indicate some evil influence, probably drink,
-at work upon him. This may account also for the obvious fact that
-his wife has ceased to love him."
-
-"My dear Holmes!"
-
-"He has, however, retained some degree of self-respect," he
-continued, disregarding my remonstrance. "He is a man who leads a
-sedentary life, goes out little, is out of training entirely, is
-middle-aged, has grizzled hair which he has had cut within the
-last few days, and which he anoints with lime-cream. These are
-the more patent facts which are to be deduced from his hat. Also,
-by the way, that it is extremely improbable that he has gas laid
-on in his house."
-
-"You are certainly joking, Holmes."
-
-"Not in the least. Is it possible that even now, when I give you
-these results, you are unable to see how they are attained?"
-
-"I have no doubt that I am very stupid, but I must confess that I
-am unable to follow you. For example, how did you deduce that
-this man was intellectual?"
-
-For answer Holmes clapped the hat upon his head. It came right
-over the forehead and settled upon the bridge of his nose. "It is
-a question of cubic capacity," said he; "a man with so large a
-brain must have something in it."
-
-"The decline of his fortunes, then?"
-
-"This hat is three years old. These flat brims curled at the edge
-came in then. It is a hat of the very best quality. Look at the
-band of ribbed silk and the excellent lining. If this man could
-afford to buy so expensive a hat three years ago, and has had no
-hat since, then he has assuredly gone down in the world."
-
-"Well, that is clear enough, certainly. But how about the
-foresight and the moral retrogression?"
-
-Sherlock Holmes laughed. "Here is the foresight," said he putting
-his finger upon the little disc and loop of the hat-securer.
-"They are never sold upon hats. If this man ordered one, it is a
-sign of a certain amount of foresight, since he went out of his
-way to take this precaution against the wind. But since we see
-that he has broken the elastic and has not troubled to replace
-it, it is obvious that he has less foresight now than formerly,
-which is a distinct proof of a weakening nature. On the other
-hand, he has endeavoured to conceal some of these stains upon the
-felt by daubing them with ink, which is a sign that he has not
-entirely lost his self-respect."
-
-"Your reasoning is certainly plausible."
-
-"The further points, that he is middle-aged, that his hair is
-grizzled, that it has been recently cut, and that he uses
-lime-cream, are all to be gathered from a close examination of the
-lower part of the lining. The lens discloses a large number of
-hair-ends, clean cut by the scissors of the barber. They all
-appear to be adhesive, and there is a distinct odour of
-lime-cream. This dust, you will observe, is not the gritty, grey
-dust of the street but the fluffy brown dust of the house,
-showing that it has been hung up indoors most of the time, while
-the marks of moisture upon the inside are proof positive that the
-wearer perspired very freely, and could therefore, hardly be in
-the best of training."
-
-"But his wife--you said that she had ceased to love him."
-
-"This hat has not been brushed for weeks. When I see you, my dear
-Watson, with a week's accumulation of dust upon your hat, and
-when your wife allows you to go out in such a state, I shall fear
-that you also have been unfortunate enough to lose your wife's
-affection."
-
-"But he might be a bachelor."
-
-"Nay, he was bringing home the goose as a peace-offering to his
-wife. Remember the card upon the bird's leg."
-
-"You have an answer to everything. But how on earth do you deduce
-that the gas is not laid on in his house?"
-
-"One tallow stain, or even two, might come by chance; but when I
-see no less than five, I think that there can be little doubt
-that the individual must be brought into frequent contact with
-burning tallow--walks upstairs at night probably with his hat in
-one hand and a guttering candle in the other. Anyhow, he never
-got tallow-stains from a gas-jet. Are you satisfied?"
-
-"Well, it is very ingenious," said I, laughing; "but since, as
-you said just now, there has been no crime committed, and no harm
-done save the loss of a goose, all this seems to be rather a
-waste of energy."
-
-Sherlock Holmes had opened his mouth to reply, when the door flew
-open, and Peterson, the commissionaire, rushed into the apartment
-with flushed cheeks and the face of a man who is dazed with
-astonishment.
-
-"The goose, Mr. Holmes! The goose, sir!" he gasped.
-
-"Eh? What of it, then? Has it returned to life and flapped off
-through the kitchen window?" Holmes twisted himself round upon
-the sofa to get a fairer view of the man's excited face.
-
-"See here, sir! See what my wife found in its crop!" He held out
-his hand and displayed upon the centre of the palm a brilliantly
-scintillating blue stone, rather smaller than a bean in size, but
-of such purity and radiance that it twinkled like an electric
-point in the dark hollow of his hand.
-
-Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
-he, "this is treasure trove indeed. I suppose you know what you
-have got?"
-
-"A diamond, sir? A precious stone. It cuts into glass as though
-it were putty."
-
-"It's more than a precious stone. It is the precious stone."
-
-"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
-
-"Precisely so. I ought to know its size and shape, seeing that I
-have read the advertisement about it in The Times every day
-lately. It is absolutely unique, and its value can only be
-conjectured, but the reward offered of 1000 pounds is certainly
-not within a twentieth part of the market price."
-
-"A thousand pounds! Great Lord of mercy!" The commissionaire
-plumped down into a chair and stared from one to the other of us.
-
-"That is the reward, and I have reason to know that there are
-sentimental considerations in the background which would induce
-the Countess to part with half her fortune if she could but
-recover the gem."
-
-"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
-remarked.
-
-"Precisely so, on December 22nd, just five days ago. John Horner,
-a plumber, was accused of having abstracted it from the lady's
-jewel-case. The evidence against him was so strong that the case
-has been referred to the Assizes. I have some account of the
-matter here, I believe." He rummaged amid his newspapers,
-glancing over the dates, until at last he smoothed one out,
-doubled it over, and read the following paragraph:
-
-"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
-brought up upon the charge of having upon the 22nd inst.,
-abstracted from the jewel-case of the Countess of Morcar the
-valuable gem known as the blue carbuncle. James Ryder,
-upper-attendant at the hotel, gave his evidence to the effect
-that he had shown Horner up to the dressing-room of the Countess
-of Morcar upon the day of the robbery in order that he might
-solder the second bar of the grate, which was loose. He had
-remained with Horner some little time, but had finally been
-called away. On returning, he found that Horner had disappeared,
-that the bureau had been forced open, and that the small morocco
-casket in which, as it afterwards transpired, the Countess was
-accustomed to keep her jewel, was lying empty upon the
-dressing-table. Ryder instantly gave the alarm, and Horner was
-arrested the same evening; but the stone could not be found
-either upon his person or in his rooms. Catherine Cusack, maid to
-the Countess, deposed to having heard Ryder's cry of dismay on
-discovering the robbery, and to having rushed into the room,
-where she found matters as described by the last witness.
-Inspector Bradstreet, B division, gave evidence as to the arrest
-of Horner, who struggled frantically, and protested his innocence
-in the strongest terms. Evidence of a previous conviction for
-robbery having been given against the prisoner, the magistrate
-refused to deal summarily with the offence, but referred it to
-the Assizes. Horner, who had shown signs of intense emotion
-during the proceedings, fainted away at the conclusion and was
-carried out of court."
-
-"Hum! So much for the police-court," said Holmes thoughtfully,
-tossing aside the paper. "The question for us now to solve is the
-sequence of events leading from a rifled jewel-case at one end to
-the crop of a goose in Tottenham Court Road at the other. You
-see, Watson, our little deductions have suddenly assumed a much
-more important and less innocent aspect. Here is the stone; the
-stone came from the goose, and the goose came from Mr. Henry
-Baker, the gentleman with the bad hat and all the other
-characteristics with which I have bored you. So now we must set
-ourselves very seriously to finding this gentleman and
-ascertaining what part he has played in this little mystery. To
-do this, we must try the simplest means first, and these lie
-undoubtedly in an advertisement in all the evening papers. If
-this fail, I shall have recourse to other methods."
-
-"What will you say?"
-
-"Give me a pencil and that slip of paper. Now, then: 'Found at
-the corner of Goodge Street, a goose and a black felt hat. Mr.
-Henry Baker can have the same by applying at 6:30 this evening at
-221B, Baker Street.' That is clear and concise."
-
-"Very. But will he see it?"
-
-"Well, he is sure to keep an eye on the papers, since, to a poor
-man, the loss was a heavy one. He was clearly so scared by his
-mischance in breaking the window and by the approach of Peterson
-that he thought of nothing but flight, but since then he must
-have bitterly regretted the impulse which caused him to drop his
-bird. Then, again, the introduction of his name will cause him to
-see it, for everyone who knows him will direct his attention to
-it. Here you are, Peterson, run down to the advertising agency
-and have this put in the evening papers."
-
-"In which, sir?"
-
-"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
-Standard, Echo, and any others that occur to you."
-
-"Very well, sir. And this stone?"
-
-"Ah, yes, I shall keep the stone. Thank you. And, I say,
-Peterson, just buy a goose on your way back and leave it here
-with me, for we must have one to give to this gentleman in place
-of the one which your family is now devouring."
-
-When the commissionaire had gone, Holmes took up the stone and
-held it against the light. "It's a bonny thing," said he. "Just
-see how it glints and sparkles. Of course it is a nucleus and
-focus of crime. Every good stone is. They are the devil's pet
-baits. In the larger and older jewels every facet may stand for a
-bloody deed. This stone is not yet twenty years old. It was found
-in the banks of the Amoy River in southern China and is remarkable
-in having every characteristic of the carbuncle, save that it is
-blue in shade instead of ruby red. In spite of its youth, it has
-already a sinister history. There have been two murders, a
-vitriol-throwing, a suicide, and several robberies brought about
-for the sake of this forty-grain weight of crystallised charcoal.
-Who would think that so pretty a toy would be a purveyor to the
-gallows and the prison? I'll lock it up in my strong box now and
-drop a line to the Countess to say that we have it."
-
-"Do you think that this man Horner is innocent?"
-
-"I cannot tell."
-
-"Well, then, do you imagine that this other one, Henry Baker, had
-anything to do with the matter?"
-
-"It is, I think, much more likely that Henry Baker is an
-absolutely innocent man, who had no idea that the bird which he
-was carrying was of considerably more value than if it were made
-of solid gold. That, however, I shall determine by a very simple
-test if we have an answer to our advertisement."
-
-"And you can do nothing until then?"
-
-"Nothing."
-
-"In that case I shall continue my professional round. But I shall
-come back in the evening at the hour you have mentioned, for I
-should like to see the solution of so tangled a business."
-
-"Very glad to see you. I dine at seven. There is a woodcock, I
-believe. By the way, in view of recent occurrences, perhaps I
-ought to ask Mrs. Hudson to examine its crop."
-
-I had been delayed at a case, and it was a little after half-past
-six when I found myself in Baker Street once more. As I
-approached the house I saw a tall man in a Scotch bonnet with a
-coat which was buttoned up to his chin waiting outside in the
-bright semicircle which was thrown from the fanlight. Just as I
-arrived the door was opened, and we were shown up together to
-Holmes' room.
-
-"Mr. Henry Baker, I believe," said he, rising from his armchair
-and greeting his visitor with the easy air of geniality which he
-could so readily assume. "Pray take this chair by the fire, Mr.
-Baker. It is a cold night, and I observe that your circulation is
-more adapted for summer than for winter. Ah, Watson, you have
-just come at the right time. Is that your hat, Mr. Baker?"
-
-"Yes, sir, that is undoubtedly my hat."
-
-He was a large man with rounded shoulders, a massive head, and a
-broad, intelligent face, sloping down to a pointed beard of
-grizzled brown. A touch of red in nose and cheeks, with a slight
-tremor of his extended hand, recalled Holmes' surmise as to his
-habits. His rusty black frock-coat was buttoned right up in
-front, with the collar turned up, and his lank wrists protruded
-from his sleeves without a sign of cuff or shirt. He spoke in a
-slow staccato fashion, choosing his words with care, and gave the
-impression generally of a man of learning and letters who had had
-ill-usage at the hands of fortune.
-
-"We have retained these things for some days," said Holmes,
-"because we expected to see an advertisement from you giving your
-address. I am at a loss to know now why you did not advertise."
-
-Our visitor gave a rather shamefaced laugh. "Shillings have not
-been so plentiful with me as they once were," he remarked. "I had
-no doubt that the gang of roughs who assaulted me had carried off
-both my hat and the bird. I did not care to spend more money in a
-hopeless attempt at recovering them."
-
-"Very naturally. By the way, about the bird, we were compelled to
-eat it."
-
-"To eat it!" Our visitor half rose from his chair in his
-excitement.
-
-"Yes, it would have been of no use to anyone had we not done so.
-But I presume that this other goose upon the sideboard, which is
-about the same weight and perfectly fresh, will answer your
-purpose equally well?"
-
-"Oh, certainly, certainly," answered Mr. Baker with a sigh of
-relief.
-
-"Of course, we still have the feathers, legs, crop, and so on of
-your own bird, so if you wish--"
-
-The man burst into a hearty laugh. "They might be useful to me as
-relics of my adventure," said he, "but beyond that I can hardly
-see what use the disjecta membra of my late acquaintance are
-going to be to me. No, sir, I think that, with your permission, I
-will confine my attentions to the excellent bird which I perceive
-upon the sideboard."
-
-Sherlock Holmes glanced sharply across at me with a slight shrug
-of his shoulders.
-
-"There is your hat, then, and there your bird," said he. "By the
-way, would it bore you to tell me where you got the other one
-from? I am somewhat of a fowl fancier, and I have seldom seen a
-better grown goose."
-
-"Certainly, sir," said Baker, who had risen and tucked his newly
-gained property under his arm. "There are a few of us who
-frequent the Alpha Inn, near the Museum--we are to be found in
-the Museum itself during the day, you understand. This year our
-good host, Windigate by name, instituted a goose club, by which,
-on consideration of some few pence every week, we were each to
-receive a bird at Christmas. My pence were duly paid, and the
-rest is familiar to you. I am much indebted to you, sir, for a
-Scotch bonnet is fitted neither to my years nor my gravity." With
-a comical pomposity of manner he bowed solemnly to both of us and
-strode off upon his way.
-
-"So much for Mr. Henry Baker," said Holmes when he had closed the
-door behind him. "It is quite certain that he knows nothing
-whatever about the matter. Are you hungry, Watson?"
-
-"Not particularly."
-
-"Then I suggest that we turn our dinner into a supper and follow
-up this clue while it is still hot."
-
-"By all means."
-
-It was a bitter night, so we drew on our ulsters and wrapped
-cravats about our throats. Outside, the stars were shining coldly
-in a cloudless sky, and the breath of the passers-by blew out
-into smoke like so many pistol shots. Our footfalls rang out
-crisply and loudly as we swung through the doctors' quarter,
-Wimpole Street, Harley Street, and so through Wigmore Street into
-Oxford Street. In a quarter of an hour we were in Bloomsbury at
-the Alpha Inn, which is a small public-house at the corner of one
-of the streets which runs down into Holborn. Holmes pushed open
-the door of the private bar and ordered two glasses of beer from
-the ruddy-faced, white-aproned landlord.
-
-"Your beer should be excellent if it is as good as your geese,"
-said he.
-
-"My geese!" The man seemed surprised.
-
-"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
-who was a member of your goose club."
-
-"Ah! yes, I see. But you see, sir, them's not our geese."
-
-"Indeed! Whose, then?"
-
-"Well, I got the two dozen from a salesman in Covent Garden."
-
-"Indeed? I know some of them. Which was it?"
-
-"Breckinridge is his name."
-
-"Ah! I don't know him. Well, here's your good health landlord,
-and prosperity to your house. Good-night."
-
-"Now for Mr. Breckinridge," he continued, buttoning up his coat
-as we came out into the frosty air. "Remember, Watson that though
-we have so homely a thing as a goose at one end of this chain, we
-have at the other a man who will certainly get seven years' penal
-servitude unless we can establish his innocence. It is possible
-that our inquiry may but confirm his guilt; but, in any case, we
-have a line of investigation which has been missed by the police,
-and which a singular chance has placed in our hands. Let us
-follow it out to the bitter end. Faces to the south, then, and
-quick march!"
-
-We passed across Holborn, down Endell Street, and so through a
-zigzag of slums to Covent Garden Market. One of the largest
-stalls bore the name of Breckinridge upon it, and the proprietor
-a horsey-looking man, with a sharp face and trim side-whiskers was
-helping a boy to put up the shutters.
-
-"Good-evening. It's a cold night," said Holmes.
-
-The salesman nodded and shot a questioning glance at my
-companion.
-
-"Sold out of geese, I see," continued Holmes, pointing at the
-bare slabs of marble.
-
-"Let you have five hundred to-morrow morning."
-
-"That's no good."
-
-"Well, there are some on the stall with the gas-flare."
-
-"Ah, but I was recommended to you."
-
-"Who by?"
-
-"The landlord of the Alpha."
-
-"Oh, yes; I sent him a couple of dozen."
-
-"Fine birds they were, too. Now where did you get them from?"
-
-To my surprise the question provoked a burst of anger from the
-salesman.
-
-"Now, then, mister," said he, with his head cocked and his arms
-akimbo, "what are you driving at? Let's have it straight, now."
-
-"It is straight enough. I should like to know who sold you the
-geese which you supplied to the Alpha."
-
-"Well then, I shan't tell you. So now!"
-
-"Oh, it is a matter of no importance; but I don't know why you
-should be so warm over such a trifle."
-
-"Warm! You'd be as warm, maybe, if you were as pestered as I am.
-When I pay good money for a good article there should be an end
-of the business; but it's 'Where are the geese?' and 'Who did you
-sell the geese to?' and 'What will you take for the geese?' One
-would think they were the only geese in the world, to hear the
-fuss that is made over them."
-
-"Well, I have no connection with any other people who have been
-making inquiries," said Holmes carelessly. "If you won't tell us
-the bet is off, that is all. But I'm always ready to back my
-opinion on a matter of fowls, and I have a fiver on it that the
-bird I ate is country bred."
-
-"Well, then, you've lost your fiver, for it's town bred," snapped
-the salesman.
-
-"It's nothing of the kind."
-
-"I say it is."
-
-"I don't believe it."
-
-"D'you think you know more about fowls than I, who have handled
-them ever since I was a nipper? I tell you, all those birds that
-went to the Alpha were town bred."
-
-"You'll never persuade me to believe that."
-
-"Will you bet, then?"
-
-"It's merely taking your money, for I know that I am right. But
-I'll have a sovereign on with you, just to teach you not to be
-obstinate."
-
-The salesman chuckled grimly. "Bring me the books, Bill," said
-he.
-
-The small boy brought round a small thin volume and a great
-greasy-backed one, laying them out together beneath the hanging
-lamp.
-
-"Now then, Mr. Cocksure," said the salesman, "I thought that I
-was out of geese, but before I finish you'll find that there is
-still one left in my shop. You see this little book?"
-
-"Well?"
-
-"That's the list of the folk from whom I buy. D'you see? Well,
-then, here on this page are the country folk, and the numbers
-after their names are where their accounts are in the big ledger.
-Now, then! You see this other page in red ink? Well, that is a
-list of my town suppliers. Now, look at that third name. Just
-read it out to me."
-
-"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
-
-"Quite so. Now turn that up in the ledger."
-
-Holmes turned to the page indicated. "Here you are, 'Mrs.
-Oakshott, 117, Brixton Road, egg and poultry supplier.'"
-
-"Now, then, what's the last entry?"
-
-"'December 22nd. Twenty-four geese at 7s. 6d.'"
-
-"Quite so. There you are. And underneath?"
-
-"'Sold to Mr. Windigate of the Alpha, at 12s.'"
-
-"What have you to say now?"
-
-Sherlock Holmes looked deeply chagrined. He drew a sovereign from
-his pocket and threw it down upon the slab, turning away with the
-air of a man whose disgust is too deep for words. A few yards off
-he stopped under a lamp-post and laughed in the hearty, noiseless
-fashion which was peculiar to him.
-
-"When you see a man with whiskers of that cut and the 'Pink 'un'
-protruding out of his pocket, you can always draw him by a bet,"
-said he. "I daresay that if I had put 100 pounds down in front of
-him, that man would not have given me such complete information
-as was drawn from him by the idea that he was doing me on a
-wager. Well, Watson, we are, I fancy, nearing the end of our
-quest, and the only point which remains to be determined is
-whether we should go on to this Mrs. Oakshott to-night, or
-whether we should reserve it for to-morrow. It is clear from what
-that surly fellow said that there are others besides ourselves
-who are anxious about the matter, and I should--"
-
-His remarks were suddenly cut short by a loud hubbub which broke
-out from the stall which we had just left. Turning round we saw a
-little rat-faced fellow standing in the centre of the circle of
-yellow light which was thrown by the swinging lamp, while
-Breckinridge, the salesman, framed in the door of his stall, was
-shaking his fists fiercely at the cringing figure.
-
-"I've had enough of you and your geese," he shouted. "I wish you
-were all at the devil together. If you come pestering me any more
-with your silly talk I'll set the dog at you. You bring Mrs.
-Oakshott here and I'll answer her, but what have you to do with
-it? Did I buy the geese off you?"
-
-"No; but one of them was mine all the same," whined the little
-man.
-
-"Well, then, ask Mrs. Oakshott for it."
-
-"She told me to ask you."
-
-"Well, you can ask the King of Proosia, for all I care. I've had
-enough of it. Get out of this!" He rushed fiercely forward, and
-the inquirer flitted away into the darkness.
-
-"Ha! this may save us a visit to Brixton Road," whispered Holmes.
-"Come with me, and we will see what is to be made of this
-fellow." Striding through the scattered knots of people who
-lounged round the flaring stalls, my companion speedily overtook
-the little man and touched him upon the shoulder. He sprang
-round, and I could see in the gas-light that every vestige of
-colour had been driven from his face.
-
-"Who are you, then? What do you want?" he asked in a quavering
-voice.
-
-"You will excuse me," said Holmes blandly, "but I could not help
-overhearing the questions which you put to the salesman just now.
-I think that I could be of assistance to you."
-
-"You? Who are you? How could you know anything of the matter?"
-
-"My name is Sherlock Holmes. It is my business to know what other
-people don't know."
-
-"But you can know nothing of this?"
-
-"Excuse me, I know everything of it. You are endeavouring to
-trace some geese which were sold by Mrs. Oakshott, of Brixton
-Road, to a salesman named Breckinridge, by him in turn to Mr.
-Windigate, of the Alpha, and by him to his club, of which Mr.
-Henry Baker is a member."
-
-"Oh, sir, you are the very man whom I have longed to meet," cried
-the little fellow with outstretched hands and quivering fingers.
-"I can hardly explain to you how interested I am in this matter."
-
-Sherlock Holmes hailed a four-wheeler which was passing. "In that
-case we had better discuss it in a cosy room rather than in this
-wind-swept market-place," said he. "But pray tell me, before we
-go farther, who it is that I have the pleasure of assisting."
-
-The man hesitated for an instant. "My name is John Robinson," he
-answered with a sidelong glance.
-
-"No, no; the real name," said Holmes sweetly. "It is always
-awkward doing business with an alias."
-
-A flush sprang to the white cheeks of the stranger. "Well then,"
-said he, "my real name is James Ryder."
-
-"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
-step into the cab, and I shall soon be able to tell you
-everything which you would wish to know."
-
-The little man stood glancing from one to the other of us with
-half-frightened, half-hopeful eyes, as one who is not sure
-whether he is on the verge of a windfall or of a catastrophe.
-Then he stepped into the cab, and in half an hour we were back in
-the sitting-room at Baker Street. Nothing had been said during
-our drive, but the high, thin breathing of our new companion, and
-the claspings and unclaspings of his hands, spoke of the nervous
-tension within him.
-
-"Here we are!" said Holmes cheerily as we filed into the room.
-"The fire looks very seasonable in this weather. You look cold,
-Mr. Ryder. Pray take the basket-chair. I will just put on my
-slippers before we settle this little matter of yours. Now, then!
-You want to know what became of those geese?"
-
-"Yes, sir."
-
-"Or rather, I fancy, of that goose. It was one bird, I imagine in
-which you were interested--white, with a black bar across the
-tail."
-
-Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
-me where it went to?"
-
-"It came here."
-
-"Here?"
-
-"Yes, and a most remarkable bird it proved. I don't wonder that
-you should take an interest in it. It laid an egg after it was
-dead--the bonniest, brightest little blue egg that ever was seen.
-I have it here in my museum."
-
-Our visitor staggered to his feet and clutched the mantelpiece
-with his right hand. Holmes unlocked his strong-box and held up
-the blue carbuncle, which shone out like a star, with a cold,
-brilliant, many-pointed radiance. Ryder stood glaring with a
-drawn face, uncertain whether to claim or to disown it.
-
-"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
-you'll be into the fire! Give him an arm back into his chair,
-Watson. He's not got blood enough to go in for felony with
-impunity. Give him a dash of brandy. So! Now he looks a little
-more human. What a shrimp it is, to be sure!"
-
-For a moment he had staggered and nearly fallen, but the brandy
-brought a tinge of colour into his cheeks, and he sat staring
-with frightened eyes at his accuser.
-
-"I have almost every link in my hands, and all the proofs which I
-could possibly need, so there is little which you need tell me.
-Still, that little may as well be cleared up to make the case
-complete. You had heard, Ryder, of this blue stone of the
-Countess of Morcar's?"
-
-"It was Catherine Cusack who told me of it," said he in a
-crackling voice.
-
-"I see--her ladyship's waiting-maid. Well, the temptation of
-sudden wealth so easily acquired was too much for you, as it has
-been for better men before you; but you were not very scrupulous
-in the means you used. It seems to me, Ryder, that there is the
-making of a very pretty villain in you. You knew that this man
-Horner, the plumber, had been concerned in some such matter
-before, and that suspicion would rest the more readily upon him.
-What did you do, then? You made some small job in my lady's
-room--you and your confederate Cusack--and you managed that he
-should be the man sent for. Then, when he had left, you rifled
-the jewel-case, raised the alarm, and had this unfortunate man
-arrested. You then--"
-
-Ryder threw himself down suddenly upon the rug and clutched at my
-companion's knees. "For God's sake, have mercy!" he shrieked.
-"Think of my father! Of my mother! It would break their hearts. I
-never went wrong before! I never will again. I swear it. I'll
-swear it on a Bible. Oh, don't bring it into court! For Christ's
-sake, don't!"
-
-"Get back into your chair!" said Holmes sternly. "It is very well
-to cringe and crawl now, but you thought little enough of this
-poor Horner in the dock for a crime of which he knew nothing."
-
-"I will fly, Mr. Holmes. I will leave the country, sir. Then the
-charge against him will break down."
-
-"Hum! We will talk about that. And now let us hear a true account
-of the next act. How came the stone into the goose, and how came
-the goose into the open market? Tell us the truth, for there lies
-your only hope of safety."
-
-Ryder passed his tongue over his parched lips. "I will tell you
-it just as it happened, sir," said he. "When Horner had been
-arrested, it seemed to me that it would be best for me to get
-away with the stone at once, for I did not know at what moment
-the police might not take it into their heads to search me and my
-room. There was no place about the hotel where it would be safe.
-I went out, as if on some commission, and I made for my sister's
-house. She had married a man named Oakshott, and lived in Brixton
-Road, where she fattened fowls for the market. All the way there
-every man I met seemed to me to be a policeman or a detective;
-and, for all that it was a cold night, the sweat was pouring down
-my face before I came to the Brixton Road. My sister asked me
-what was the matter, and why I was so pale; but I told her that I
-had been upset by the jewel robbery at the hotel. Then I went
-into the back yard and smoked a pipe and wondered what it would
-be best to do.
-
-"I had a friend once called Maudsley, who went to the bad, and
-has just been serving his time in Pentonville. One day he had met
-me, and fell into talk about the ways of thieves, and how they
-could get rid of what they stole. I knew that he would be true to
-me, for I knew one or two things about him; so I made up my mind
-to go right on to Kilburn, where he lived, and take him into my
-confidence. He would show me how to turn the stone into money.
-But how to get to him in safety? I thought of the agonies I had
-gone through in coming from the hotel. I might at any moment be
-seized and searched, and there would be the stone in my waistcoat
-pocket. I was leaning against the wall at the time and looking at
-the geese which were waddling about round my feet, and suddenly
-an idea came into my head which showed me how I could beat the
-best detective that ever lived.
-
-"My sister had told me some weeks before that I might have the
-pick of her geese for a Christmas present, and I knew that she
-was always as good as her word. I would take my goose now, and in
-it I would carry my stone to Kilburn. There was a little shed in
-the yard, and behind this I drove one of the birds--a fine big
-one, white, with a barred tail. I caught it, and prying its bill
-open, I thrust the stone down its throat as far as my finger
-could reach. The bird gave a gulp, and I felt the stone pass
-along its gullet and down into its crop. But the creature flapped
-and struggled, and out came my sister to know what was the
-matter. As I turned to speak to her the brute broke loose and
-fluttered off among the others.
-
-"'Whatever were you doing with that bird, Jem?' says she.
-
-"'Well,' said I, 'you said you'd give me one for Christmas, and I
-was feeling which was the fattest.'
-
-"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
-call it. It's the big white one over yonder. There's twenty-six
-of them, which makes one for you, and one for us, and two dozen
-for the market.'
-
-"'Thank you, Maggie,' says I; 'but if it is all the same to you,
-I'd rather have that one I was handling just now.'
-
-"'The other is a good three pound heavier,' said she, 'and we
-fattened it expressly for you.'
-
-"'Never mind. I'll have the other, and I'll take it now,' said I.
-
-"'Oh, just as you like,' said she, a little huffed. 'Which is it
-you want, then?'
-
-"'That white one with the barred tail, right in the middle of the
-flock.'
-
-"'Oh, very well. Kill it and take it with you.'
-
-"Well, I did what she said, Mr. Holmes, and I carried the bird
-all the way to Kilburn. I told my pal what I had done, for he was
-a man that it was easy to tell a thing like that to. He laughed
-until he choked, and we got a knife and opened the goose. My
-heart turned to water, for there was no sign of the stone, and I
-knew that some terrible mistake had occurred. I left the bird,
-rushed back to my sister's, and hurried into the back yard. There
-was not a bird to be seen there.
-
-"'Where are they all, Maggie?' I cried.
-
-"'Gone to the dealer's, Jem.'
-
-"'Which dealer's?'
-
-"'Breckinridge, of Covent Garden.'
-
-"'But was there another with a barred tail?' I asked, 'the same
-as the one I chose?'
-
-"'Yes, Jem; there were two barred-tailed ones, and I could never
-tell them apart.'
-
-"Well, then, of course I saw it all, and I ran off as hard as my
-feet would carry me to this man Breckinridge; but he had sold the
-lot at once, and not one word would he tell me as to where they
-had gone. You heard him yourselves to-night. Well, he has always
-answered me like that. My sister thinks that I am going mad.
-Sometimes I think that I am myself. And now--and now I am myself
-a branded thief, without ever having touched the wealth for which
-I sold my character. God help me! God help me!" He burst into
-convulsive sobbing, with his face buried in his hands.
-
-There was a long silence, broken only by his heavy breathing and
-by the measured tapping of Sherlock Holmes' finger-tips upon the
-edge of the table. Then my friend rose and threw open the door.
-
-"Get out!" said he.
-
-"What, sir! Oh, Heaven bless you!"
-
-"No more words. Get out!"
-
-And no more words were needed. There was a rush, a clatter upon
-the stairs, the bang of a door, and the crisp rattle of running
-footfalls from the street.
-
-"After all, Watson," said Holmes, reaching up his hand for his
-clay pipe, "I am not retained by the police to supply their
-deficiencies. If Horner were in danger it would be another thing;
-but this fellow will not appear against him, and the case must
-collapse. I suppose that I am commuting a felony, but it is just
-possible that I am saving a soul. This fellow will not go wrong
-again; he is too terribly frightened. Send him to gaol now, and
-you make him a gaol-bird for life. Besides, it is the season of
-forgiveness. Chance has put in our way a most singular and
-whimsical problem, and its solution is its own reward. If you
-will have the goodness to touch the bell, Doctor, we will begin
-another investigation, in which, also a bird will be the chief
-feature."
-
-
-
-VIII. THE ADVENTURE OF THE SPECKLED BAND
-
-On glancing over my notes of the seventy odd cases in which I
-have during the last eight years studied the methods of my friend
-Sherlock Holmes, I find many tragic, some comic, a large number
-merely strange, but none commonplace; for, working as he did
-rather for the love of his art than for the acquirement of
-wealth, he refused to associate himself with any investigation
-which did not tend towards the unusual, and even the fantastic.
-Of all these varied cases, however, I cannot recall any which
-presented more singular features than that which was associated
-with the well-known Surrey family of the Roylotts of Stoke Moran.
-The events in question occurred in the early days of my
-association with Holmes, when we were sharing rooms as bachelors
-in Baker Street. It is possible that I might have placed them
-upon record before, but a promise of secrecy was made at the
-time, from which I have only been freed during the last month by
-the untimely death of the lady to whom the pledge was given. It
-is perhaps as well that the facts should now come to light, for I
-have reasons to know that there are widespread rumours as to the
-death of Dr. Grimesby Roylott which tend to make the matter even
-more terrible than the truth.
-
-It was early in April in the year '83 that I woke one morning to
-find Sherlock Holmes standing, fully dressed, by the side of my
-bed. He was a late riser, as a rule, and as the clock on the
-mantelpiece showed me that it was only a quarter-past seven, I
-blinked up at him in some surprise, and perhaps just a little
-resentment, for I was myself regular in my habits.
-
-"Very sorry to knock you up, Watson," said he, "but it's the
-common lot this morning. Mrs. Hudson has been knocked up, she
-retorted upon me, and I on you."
-
-"What is it, then--a fire?"
-
-"No; a client. It seems that a young lady has arrived in a
-considerable state of excitement, who insists upon seeing me. She
-is waiting now in the sitting-room. Now, when young ladies wander
-about the metropolis at this hour of the morning, and knock
-sleepy people up out of their beds, I presume that it is
-something very pressing which they have to communicate. Should it
-prove to be an interesting case, you would, I am sure, wish to
-follow it from the outset. I thought, at any rate, that I should
-call you and give you the chance."
-
-"My dear fellow, I would not miss it for anything."
-
-I had no keener pleasure than in following Holmes in his
-professional investigations, and in admiring the rapid
-deductions, as swift as intuitions, and yet always founded on a
-logical basis with which he unravelled the problems which were
-submitted to him. I rapidly threw on my clothes and was ready in
-a few minutes to accompany my friend down to the sitting-room. A
-lady dressed in black and heavily veiled, who had been sitting in
-the window, rose as we entered.
-
-"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
-Holmes. This is my intimate friend and associate, Dr. Watson,
-before whom you can speak as freely as before myself. Ha! I am
-glad to see that Mrs. Hudson has had the good sense to light the
-fire. Pray draw up to it, and I shall order you a cup of hot
-coffee, for I observe that you are shivering."
-
-"It is not cold which makes me shiver," said the woman in a low
-voice, changing her seat as requested.
-
-"What, then?"
-
-"It is fear, Mr. Holmes. It is terror." She raised her veil as
-she spoke, and we could see that she was indeed in a pitiable
-state of agitation, her face all drawn and grey, with restless
-frightened eyes, like those of some hunted animal. Her features
-and figure were those of a woman of thirty, but her hair was shot
-with premature grey, and her expression was weary and haggard.
-Sherlock Holmes ran her over with one of his quick,
-all-comprehensive glances.
-
-"You must not fear," said he soothingly, bending forward and
-patting her forearm. "We shall soon set matters right, I have no
-doubt. You have come in by train this morning, I see."
-
-"You know me, then?"
-
-"No, but I observe the second half of a return ticket in the palm
-of your left glove. You must have started early, and yet you had
-a good drive in a dog-cart, along heavy roads, before you reached
-the station."
-
-The lady gave a violent start and stared in bewilderment at my
-companion.
-
-"There is no mystery, my dear madam," said he, smiling. "The left
-arm of your jacket is spattered with mud in no less than seven
-places. The marks are perfectly fresh. There is no vehicle save a
-dog-cart which throws up mud in that way, and then only when you
-sit on the left-hand side of the driver."
-
-"Whatever your reasons may be, you are perfectly correct," said
-she. "I started from home before six, reached Leatherhead at
-twenty past, and came in by the first train to Waterloo. Sir, I
-can stand this strain no longer; I shall go mad if it continues.
-I have no one to turn to--none, save only one, who cares for me,
-and he, poor fellow, can be of little aid. I have heard of you,
-Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
-helped in the hour of her sore need. It was from her that I had
-your address. Oh, sir, do you not think that you could help me,
-too, and at least throw a little light through the dense darkness
-which surrounds me? At present it is out of my power to reward
-you for your services, but in a month or six weeks I shall be
-married, with the control of my own income, and then at least you
-shall not find me ungrateful."
-
-Holmes turned to his desk and, unlocking it, drew out a small
-case-book, which he consulted.
-
-"Farintosh," said he. "Ah yes, I recall the case; it was
-concerned with an opal tiara. I think it was before your time,
-Watson. I can only say, madam, that I shall be happy to devote
-the same care to your case as I did to that of your friend. As to
-reward, my profession is its own reward; but you are at liberty
-to defray whatever expenses I may be put to, at the time which
-suits you best. And now I beg that you will lay before us
-everything that may help us in forming an opinion upon the
-matter."
-
-"Alas!" replied our visitor, "the very horror of my situation
-lies in the fact that my fears are so vague, and my suspicions
-depend so entirely upon small points, which might seem trivial to
-another, that even he to whom of all others I have a right to
-look for help and advice looks upon all that I tell him about it
-as the fancies of a nervous woman. He does not say so, but I can
-read it from his soothing answers and averted eyes. But I have
-heard, Mr. Holmes, that you can see deeply into the manifold
-wickedness of the human heart. You may advise me how to walk amid
-the dangers which encompass me."
-
-"I am all attention, madam."
-
-"My name is Helen Stoner, and I am living with my stepfather, who
-is the last survivor of one of the oldest Saxon families in
-England, the Roylotts of Stoke Moran, on the western border of
-Surrey."
-
-Holmes nodded his head. "The name is familiar to me," said he.
-
-"The family was at one time among the richest in England, and the
-estates extended over the borders into Berkshire in the north,
-and Hampshire in the west. In the last century, however, four
-successive heirs were of a dissolute and wasteful disposition,
-and the family ruin was eventually completed by a gambler in the
-days of the Regency. Nothing was left save a few acres of ground,
-and the two-hundred-year-old house, which is itself crushed under
-a heavy mortgage. The last squire dragged out his existence
-there, living the horrible life of an aristocratic pauper; but
-his only son, my stepfather, seeing that he must adapt himself to
-the new conditions, obtained an advance from a relative, which
-enabled him to take a medical degree and went out to Calcutta,
-where, by his professional skill and his force of character, he
-established a large practice. In a fit of anger, however, caused
-by some robberies which had been perpetrated in the house, he
-beat his native butler to death and narrowly escaped a capital
-sentence. As it was, he suffered a long term of imprisonment and
-afterwards returned to England a morose and disappointed man.
-
-"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
-the young widow of Major-General Stoner, of the Bengal Artillery.
-My sister Julia and I were twins, and we were only two years old
-at the time of my mother's re-marriage. She had a considerable
-sum of money--not less than 1000 pounds a year--and this she
-bequeathed to Dr. Roylott entirely while we resided with him,
-with a provision that a certain annual sum should be allowed to
-each of us in the event of our marriage. Shortly after our return
-to England my mother died--she was killed eight years ago in a
-railway accident near Crewe. Dr. Roylott then abandoned his
-attempts to establish himself in practice in London and took us
-to live with him in the old ancestral house at Stoke Moran. The
-money which my mother had left was enough for all our wants, and
-there seemed to be no obstacle to our happiness.
-
-"But a terrible change came over our stepfather about this time.
-Instead of making friends and exchanging visits with our
-neighbours, who had at first been overjoyed to see a Roylott of
-Stoke Moran back in the old family seat, he shut himself up in
-his house and seldom came out save to indulge in ferocious
-quarrels with whoever might cross his path. Violence of temper
-approaching to mania has been hereditary in the men of the
-family, and in my stepfather's case it had, I believe, been
-intensified by his long residence in the tropics. A series of
-disgraceful brawls took place, two of which ended in the
-police-court, until at last he became the terror of the village,
-and the folks would fly at his approach, for he is a man of
-immense strength, and absolutely uncontrollable in his anger.
-
-"Last week he hurled the local blacksmith over a parapet into a
-stream, and it was only by paying over all the money which I
-could gather together that I was able to avert another public
-exposure. He had no friends at all save the wandering gipsies,
-and he would give these vagabonds leave to encamp upon the few
-acres of bramble-covered land which represent the family estate,
-and would accept in return the hospitality of their tents,
-wandering away with them sometimes for weeks on end. He has a
-passion also for Indian animals, which are sent over to him by a
-correspondent, and he has at this moment a cheetah and a baboon,
-which wander freely over his grounds and are feared by the
-villagers almost as much as their master.
-
-"You can imagine from what I say that my poor sister Julia and I
-had no great pleasure in our lives. No servant would stay with
-us, and for a long time we did all the work of the house. She was
-but thirty at the time of her death, and yet her hair had already
-begun to whiten, even as mine has."
-
-"Your sister is dead, then?"
-
-"She died just two years ago, and it is of her death that I wish
-to speak to you. You can understand that, living the life which I
-have described, we were little likely to see anyone of our own
-age and position. We had, however, an aunt, my mother's maiden
-sister, Miss Honoria Westphail, who lives near Harrow, and we
-were occasionally allowed to pay short visits at this lady's
-house. Julia went there at Christmas two years ago, and met there
-a half-pay major of marines, to whom she became engaged. My
-stepfather learned of the engagement when my sister returned and
-offered no objection to the marriage; but within a fortnight of
-the day which had been fixed for the wedding, the terrible event
-occurred which has deprived me of my only companion."
-
-Sherlock Holmes had been leaning back in his chair with his eyes
-closed and his head sunk in a cushion, but he half opened his
-lids now and glanced across at his visitor.
-
-"Pray be precise as to details," said he.
-
-"It is easy for me to be so, for every event of that dreadful
-time is seared into my memory. The manor-house is, as I have
-already said, very old, and only one wing is now inhabited. The
-bedrooms in this wing are on the ground floor, the sitting-rooms
-being in the central block of the buildings. Of these bedrooms
-the first is Dr. Roylott's, the second my sister's, and the third
-my own. There is no communication between them, but they all open
-out into the same corridor. Do I make myself plain?"
-
-"Perfectly so."
-
-"The windows of the three rooms open out upon the lawn. That
-fatal night Dr. Roylott had gone to his room early, though we
-knew that he had not retired to rest, for my sister was troubled
-by the smell of the strong Indian cigars which it was his custom
-to smoke. She left her room, therefore, and came into mine, where
-she sat for some time, chatting about her approaching wedding. At
-eleven o'clock she rose to leave me, but she paused at the door
-and looked back.
-
-"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
-in the dead of the night?'
-
-"'Never,' said I.
-
-"'I suppose that you could not possibly whistle, yourself, in
-your sleep?'
-
-"'Certainly not. But why?'
-
-"'Because during the last few nights I have always, about three
-in the morning, heard a low, clear whistle. I am a light sleeper,
-and it has awakened me. I cannot tell where it came from--perhaps
-from the next room, perhaps from the lawn. I thought that I would
-just ask you whether you had heard it.'
-
-"'No, I have not. It must be those wretched gipsies in the
-plantation.'
-
-"'Very likely. And yet if it were on the lawn, I wonder that you
-did not hear it also.'
-
-"'Ah, but I sleep more heavily than you.'
-
-"'Well, it is of no great consequence, at any rate.' She smiled
-back at me, closed my door, and a few moments later I heard her
-key turn in the lock."
-
-"Indeed," said Holmes. "Was it your custom always to lock
-yourselves in at night?"
-
-"Always."
-
-"And why?"
-
-"I think that I mentioned to you that the doctor kept a cheetah
-and a baboon. We had no feeling of security unless our doors were
-locked."
-
-"Quite so. Pray proceed with your statement."
-
-"I could not sleep that night. A vague feeling of impending
-misfortune impressed me. My sister and I, you will recollect,
-were twins, and you know how subtle are the links which bind two
-souls which are so closely allied. It was a wild night. The wind
-was howling outside, and the rain was beating and splashing
-against the windows. Suddenly, amid all the hubbub of the gale,
-there burst forth the wild scream of a terrified woman. I knew
-that it was my sister's voice. I sprang from my bed, wrapped a
-shawl round me, and rushed into the corridor. As I opened my door
-I seemed to hear a low whistle, such as my sister described, and
-a few moments later a clanging sound, as if a mass of metal had
-fallen. As I ran down the passage, my sister's door was unlocked,
-and revolved slowly upon its hinges. I stared at it
-horror-stricken, not knowing what was about to issue from it. By
-the light of the corridor-lamp I saw my sister appear at the
-opening, her face blanched with terror, her hands groping for
-help, her whole figure swaying to and fro like that of a
-drunkard. I ran to her and threw my arms round her, but at that
-moment her knees seemed to give way and she fell to the ground.
-She writhed as one who is in terrible pain, and her limbs were
-dreadfully convulsed. At first I thought that she had not
-recognised me, but as I bent over her she suddenly shrieked out
-in a voice which I shall never forget, 'Oh, my God! Helen! It was
-the band! The speckled band!' There was something else which she
-would fain have said, and she stabbed with her finger into the
-air in the direction of the doctor's room, but a fresh convulsion
-seized her and choked her words. I rushed out, calling loudly for
-my stepfather, and I met him hastening from his room in his
-dressing-gown. When he reached my sister's side she was
-unconscious, and though he poured brandy down her throat and sent
-for medical aid from the village, all efforts were in vain, for
-she slowly sank and died without having recovered her
-consciousness. Such was the dreadful end of my beloved sister."
-
-"One moment," said Holmes, "are you sure about this whistle and
-metallic sound? Could you swear to it?"
-
-"That was what the county coroner asked me at the inquiry. It is
-my strong impression that I heard it, and yet, among the crash of
-the gale and the creaking of an old house, I may possibly have
-been deceived."
-
-"Was your sister dressed?"
-
-"No, she was in her night-dress. In her right hand was found the
-charred stump of a match, and in her left a match-box."
-
-"Showing that she had struck a light and looked about her when
-the alarm took place. That is important. And what conclusions did
-the coroner come to?"
-
-"He investigated the case with great care, for Dr. Roylott's
-conduct had long been notorious in the county, but he was unable
-to find any satisfactory cause of death. My evidence showed that
-the door had been fastened upon the inner side, and the windows
-were blocked by old-fashioned shutters with broad iron bars,
-which were secured every night. The walls were carefully sounded,
-and were shown to be quite solid all round, and the flooring was
-also thoroughly examined, with the same result. The chimney is
-wide, but is barred up by four large staples. It is certain,
-therefore, that my sister was quite alone when she met her end.
-Besides, there were no marks of any violence upon her."
-
-"How about poison?"
-
-"The doctors examined her for it, but without success."
-
-"What do you think that this unfortunate lady died of, then?"
-
-"It is my belief that she died of pure fear and nervous shock,
-though what it was that frightened her I cannot imagine."
-
-"Were there gipsies in the plantation at the time?"
-
-"Yes, there are nearly always some there."
-
-"Ah, and what did you gather from this allusion to a band--a
-speckled band?"
-
-"Sometimes I have thought that it was merely the wild talk of
-delirium, sometimes that it may have referred to some band of
-people, perhaps to these very gipsies in the plantation. I do not
-know whether the spotted handkerchiefs which so many of them wear
-over their heads might have suggested the strange adjective which
-she used."
-
-Holmes shook his head like a man who is far from being satisfied.
-
-"These are very deep waters," said he; "pray go on with your
-narrative."
-
-"Two years have passed since then, and my life has been until
-lately lonelier than ever. A month ago, however, a dear friend,
-whom I have known for many years, has done me the honour to ask
-my hand in marriage. His name is Armitage--Percy Armitage--the
-second son of Mr. Armitage, of Crane Water, near Reading. My
-stepfather has offered no opposition to the match, and we are to
-be married in the course of the spring. Two days ago some repairs
-were started in the west wing of the building, and my bedroom
-wall has been pierced, so that I have had to move into the
-chamber in which my sister died, and to sleep in the very bed in
-which she slept. Imagine, then, my thrill of terror when last
-night, as I lay awake, thinking over her terrible fate, I
-suddenly heard in the silence of the night the low whistle which
-had been the herald of her own death. I sprang up and lit the
-lamp, but nothing was to be seen in the room. I was too shaken to
-go to bed again, however, so I dressed, and as soon as it was
-daylight I slipped down, got a dog-cart at the Crown Inn, which
-is opposite, and drove to Leatherhead, from whence I have come on
-this morning with the one object of seeing you and asking your
-advice."
-
-"You have done wisely," said my friend. "But have you told me
-all?"
-
-"Yes, all."
-
-"Miss Roylott, you have not. You are screening your stepfather."
-
-"Why, what do you mean?"
-
-For answer Holmes pushed back the frill of black lace which
-fringed the hand that lay upon our visitor's knee. Five little
-livid spots, the marks of four fingers and a thumb, were printed
-upon the white wrist.
-
-"You have been cruelly used," said Holmes.
-
-The lady coloured deeply and covered over her injured wrist. "He
-is a hard man," she said, "and perhaps he hardly knows his own
-strength."
-
-There was a long silence, during which Holmes leaned his chin
-upon his hands and stared into the crackling fire.
-
-"This is a very deep business," he said at last. "There are a
-thousand details which I should desire to know before I decide
-upon our course of action. Yet we have not a moment to lose. If
-we were to come to Stoke Moran to-day, would it be possible for
-us to see over these rooms without the knowledge of your
-stepfather?"
-
-"As it happens, he spoke of coming into town to-day upon some
-most important business. It is probable that he will be away all
-day, and that there would be nothing to disturb you. We have a
-housekeeper now, but she is old and foolish, and I could easily
-get her out of the way."
-
-"Excellent. You are not averse to this trip, Watson?"
-
-"By no means."
-
-"Then we shall both come. What are you going to do yourself?"
-
-"I have one or two things which I would wish to do now that I am
-in town. But I shall return by the twelve o'clock train, so as to
-be there in time for your coming."
-
-"And you may expect us early in the afternoon. I have myself some
-small business matters to attend to. Will you not wait and
-breakfast?"
-
-"No, I must go. My heart is lightened already since I have
-confided my trouble to you. I shall look forward to seeing you
-again this afternoon." She dropped her thick black veil over her
-face and glided from the room.
-
-"And what do you think of it all, Watson?" asked Sherlock Holmes,
-leaning back in his chair.
-
-"It seems to me to be a most dark and sinister business."
-
-"Dark enough and sinister enough."
-
-"Yet if the lady is correct in saying that the flooring and walls
-are sound, and that the door, window, and chimney are impassable,
-then her sister must have been undoubtedly alone when she met her
-mysterious end."
-
-"What becomes, then, of these nocturnal whistles, and what of the
-very peculiar words of the dying woman?"
-
-"I cannot think."
-
-"When you combine the ideas of whistles at night, the presence of
-a band of gipsies who are on intimate terms with this old doctor,
-the fact that we have every reason to believe that the doctor has
-an interest in preventing his stepdaughter's marriage, the dying
-allusion to a band, and, finally, the fact that Miss Helen Stoner
-heard a metallic clang, which might have been caused by one of
-those metal bars that secured the shutters falling back into its
-place, I think that there is good ground to think that the
-mystery may be cleared along those lines."
-
-"But what, then, did the gipsies do?"
-
-"I cannot imagine."
-
-"I see many objections to any such theory."
-
-"And so do I. It is precisely for that reason that we are going
-to Stoke Moran this day. I want to see whether the objections are
-fatal, or if they may be explained away. But what in the name of
-the devil!"
-
-The ejaculation had been drawn from my companion by the fact that
-our door had been suddenly dashed open, and that a huge man had
-framed himself in the aperture. His costume was a peculiar
-mixture of the professional and of the agricultural, having a
-black top-hat, a long frock-coat, and a pair of high gaiters,
-with a hunting-crop swinging in his hand. So tall was he that his
-hat actually brushed the cross bar of the doorway, and his
-breadth seemed to span it across from side to side. A large face,
-seared with a thousand wrinkles, burned yellow with the sun, and
-marked with every evil passion, was turned from one to the other
-of us, while his deep-set, bile-shot eyes, and his high, thin,
-fleshless nose, gave him somewhat the resemblance to a fierce old
-bird of prey.
-
-"Which of you is Holmes?" asked this apparition.
-
-"My name, sir; but you have the advantage of me," said my
-companion quietly.
-
-"I am Dr. Grimesby Roylott, of Stoke Moran."
-
-"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
-
-"I will do nothing of the kind. My stepdaughter has been here. I
-have traced her. What has she been saying to you?"
-
-"It is a little cold for the time of the year," said Holmes.
-
-"What has she been saying to you?" screamed the old man
-furiously.
-
-"But I have heard that the crocuses promise well," continued my
-companion imperturbably.
-
-"Ha! You put me off, do you?" said our new visitor, taking a step
-forward and shaking his hunting-crop. "I know you, you scoundrel!
-I have heard of you before. You are Holmes, the meddler."
-
-My friend smiled.
-
-"Holmes, the busybody!"
-
-His smile broadened.
-
-"Holmes, the Scotland Yard Jack-in-office!"
-
-Holmes chuckled heartily. "Your conversation is most
-entertaining," said he. "When you go out close the door, for
-there is a decided draught."
-
-"I will go when I have said my say. Don't you dare to meddle with
-my affairs. I know that Miss Stoner has been here. I traced her!
-I am a dangerous man to fall foul of! See here." He stepped
-swiftly forward, seized the poker, and bent it into a curve with
-his huge brown hands.
-
-"See that you keep yourself out of my grip," he snarled, and
-hurling the twisted poker into the fireplace he strode out of the
-room.
-
-"He seems a very amiable person," said Holmes, laughing. "I am
-not quite so bulky, but if he had remained I might have shown him
-that my grip was not much more feeble than his own." As he spoke
-he picked up the steel poker and, with a sudden effort,
-straightened it out again.
-
-"Fancy his having the insolence to confound me with the official
-detective force! This incident gives zest to our investigation,
-however, and I only trust that our little friend will not suffer
-from her imprudence in allowing this brute to trace her. And now,
-Watson, we shall order breakfast, and afterwards I shall walk
-down to Doctors' Commons, where I hope to get some data which may
-help us in this matter."
-
-
-It was nearly one o'clock when Sherlock Holmes returned from his
-excursion. He held in his hand a sheet of blue paper, scrawled
-over with notes and figures.
-
-"I have seen the will of the deceased wife," said he. "To
-determine its exact meaning I have been obliged to work out the
-present prices of the investments with which it is concerned. The
-total income, which at the time of the wife's death was little
-short of 1100 pounds, is now, through the fall in agricultural
-prices, not more than 750 pounds. Each daughter can claim an
-income of 250 pounds, in case of marriage. It is evident,
-therefore, that if both girls had married, this beauty would have
-had a mere pittance, while even one of them would cripple him to
-a very serious extent. My morning's work has not been wasted,
-since it has proved that he has the very strongest motives for
-standing in the way of anything of the sort. And now, Watson,
-this is too serious for dawdling, especially as the old man is
-aware that we are interesting ourselves in his affairs; so if you
-are ready, we shall call a cab and drive to Waterloo. I should be
-very much obliged if you would slip your revolver into your
-pocket. An Eley's No. 2 is an excellent argument with gentlemen
-who can twist steel pokers into knots. That and a tooth-brush
-are, I think, all that we need."
-
-At Waterloo we were fortunate in catching a train for
-Leatherhead, where we hired a trap at the station inn and drove
-for four or five miles through the lovely Surrey lanes. It was a
-perfect day, with a bright sun and a few fleecy clouds in the
-heavens. The trees and wayside hedges were just throwing out
-their first green shoots, and the air was full of the pleasant
-smell of the moist earth. To me at least there was a strange
-contrast between the sweet promise of the spring and this
-sinister quest upon which we were engaged. My companion sat in
-the front of the trap, his arms folded, his hat pulled down over
-his eyes, and his chin sunk upon his breast, buried in the
-deepest thought. Suddenly, however, he started, tapped me on the
-shoulder, and pointed over the meadows.
-
-"Look there!" said he.
-
-A heavily timbered park stretched up in a gentle slope,
-thickening into a grove at the highest point. From amid the
-branches there jutted out the grey gables and high roof-tree of a
-very old mansion.
-
-"Stoke Moran?" said he.
-
-"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
-the driver.
-
-"There is some building going on there," said Holmes; "that is
-where we are going."
-
-"There's the village," said the driver, pointing to a cluster of
-roofs some distance to the left; "but if you want to get to the
-house, you'll find it shorter to get over this stile, and so by
-the foot-path over the fields. There it is, where the lady is
-walking."
-
-"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
-his eyes. "Yes, I think we had better do as you suggest."
-
-We got off, paid our fare, and the trap rattled back on its way
-to Leatherhead.
-
-"I thought it as well," said Holmes as we climbed the stile,
-"that this fellow should think we had come here as architects, or
-on some definite business. It may stop his gossip.
-Good-afternoon, Miss Stoner. You see that we have been as good as
-our word."
-
-Our client of the morning had hurried forward to meet us with a
-face which spoke her joy. "I have been waiting so eagerly for
-you," she cried, shaking hands with us warmly. "All has turned
-out splendidly. Dr. Roylott has gone to town, and it is unlikely
-that he will be back before evening."
-
-"We have had the pleasure of making the doctor's acquaintance,"
-said Holmes, and in a few words he sketched out what had
-occurred. Miss Stoner turned white to the lips as she listened.
-
-"Good heavens!" she cried, "he has followed me, then."
-
-"So it appears."
-
-"He is so cunning that I never know when I am safe from him. What
-will he say when he returns?"
-
-"He must guard himself, for he may find that there is someone
-more cunning than himself upon his track. You must lock yourself
-up from him to-night. If he is violent, we shall take you away to
-your aunt's at Harrow. Now, we must make the best use of our
-time, so kindly take us at once to the rooms which we are to
-examine."
-
-The building was of grey, lichen-blotched stone, with a high
-central portion and two curving wings, like the claws of a crab,
-thrown out on each side. In one of these wings the windows were
-broken and blocked with wooden boards, while the roof was partly
-caved in, a picture of ruin. The central portion was in little
-better repair, but the right-hand block was comparatively modern,
-and the blinds in the windows, with the blue smoke curling up
-from the chimneys, showed that this was where the family resided.
-Some scaffolding had been erected against the end wall, and the
-stone-work had been broken into, but there were no signs of any
-workmen at the moment of our visit. Holmes walked slowly up and
-down the ill-trimmed lawn and examined with deep attention the
-outsides of the windows.
-
-"This, I take it, belongs to the room in which you used to sleep,
-the centre one to your sister's, and the one next to the main
-building to Dr. Roylott's chamber?"
-
-"Exactly so. But I am now sleeping in the middle one."
-
-"Pending the alterations, as I understand. By the way, there does
-not seem to be any very pressing need for repairs at that end
-wall."
-
-"There were none. I believe that it was an excuse to move me from
-my room."
-
-"Ah! that is suggestive. Now, on the other side of this narrow
-wing runs the corridor from which these three rooms open. There
-are windows in it, of course?"
-
-"Yes, but very small ones. Too narrow for anyone to pass
-through."
-
-"As you both locked your doors at night, your rooms were
-unapproachable from that side. Now, would you have the kindness
-to go into your room and bar your shutters?"
-
-Miss Stoner did so, and Holmes, after a careful examination
-through the open window, endeavoured in every way to force the
-shutter open, but without success. There was no slit through
-which a knife could be passed to raise the bar. Then with his
-lens he tested the hinges, but they were of solid iron, built
-firmly into the massive masonry. "Hum!" said he, scratching his
-chin in some perplexity, "my theory certainly presents some
-difficulties. No one could pass these shutters if they were
-bolted. Well, we shall see if the inside throws any light upon
-the matter."
-
-A small side door led into the whitewashed corridor from which
-the three bedrooms opened. Holmes refused to examine the third
-chamber, so we passed at once to the second, that in which Miss
-Stoner was now sleeping, and in which her sister had met with her
-fate. It was a homely little room, with a low ceiling and a
-gaping fireplace, after the fashion of old country-houses. A
-brown chest of drawers stood in one corner, a narrow
-white-counterpaned bed in another, and a dressing-table on the
-left-hand side of the window. These articles, with two small
-wicker-work chairs, made up all the furniture in the room save
-for a square of Wilton carpet in the centre. The boards round and
-the panelling of the walls were of brown, worm-eaten oak, so old
-and discoloured that it may have dated from the original building
-of the house. Holmes drew one of the chairs into a corner and sat
-silent, while his eyes travelled round and round and up and down,
-taking in every detail of the apartment.
-
-"Where does that bell communicate with?" he asked at last
-pointing to a thick bell-rope which hung down beside the bed, the
-tassel actually lying upon the pillow.
-
-"It goes to the housekeeper's room."
-
-"It looks newer than the other things?"
-
-"Yes, it was only put there a couple of years ago."
-
-"Your sister asked for it, I suppose?"
-
-"No, I never heard of her using it. We used always to get what we
-wanted for ourselves."
-
-"Indeed, it seemed unnecessary to put so nice a bell-pull there.
-You will excuse me for a few minutes while I satisfy myself as to
-this floor." He threw himself down upon his face with his lens in
-his hand and crawled swiftly backward and forward, examining
-minutely the cracks between the boards. Then he did the same with
-the wood-work with which the chamber was panelled. Finally he
-walked over to the bed and spent some time in staring at it and
-in running his eye up and down the wall. Finally he took the
-bell-rope in his hand and gave it a brisk tug.
-
-"Why, it's a dummy," said he.
-
-"Won't it ring?"
-
-"No, it is not even attached to a wire. This is very interesting.
-You can see now that it is fastened to a hook just above where
-the little opening for the ventilator is."
-
-"How very absurd! I never noticed that before."
-
-"Very strange!" muttered Holmes, pulling at the rope. "There are
-one or two very singular points about this room. For example,
-what a fool a builder must be to open a ventilator into another
-room, when, with the same trouble, he might have communicated
-with the outside air!"
-
-"That is also quite modern," said the lady.
-
-"Done about the same time as the bell-rope?" remarked Holmes.
-
-"Yes, there were several little changes carried out about that
-time."
-
-"They seem to have been of a most interesting character--dummy
-bell-ropes, and ventilators which do not ventilate. With your
-permission, Miss Stoner, we shall now carry our researches into
-the inner apartment."
-
-Dr. Grimesby Roylott's chamber was larger than that of his
-step-daughter, but was as plainly furnished. A camp-bed, a small
-wooden shelf full of books, mostly of a technical character, an
-armchair beside the bed, a plain wooden chair against the wall, a
-round table, and a large iron safe were the principal things
-which met the eye. Holmes walked slowly round and examined each
-and all of them with the keenest interest.
-
-"What's in here?" he asked, tapping the safe.
-
-"My stepfather's business papers."
-
-"Oh! you have seen inside, then?"
-
-"Only once, some years ago. I remember that it was full of
-papers."
-
-"There isn't a cat in it, for example?"
-
-"No. What a strange idea!"
-
-"Well, look at this!" He took up a small saucer of milk which
-stood on the top of it.
-
-"No; we don't keep a cat. But there is a cheetah and a baboon."
-
-"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
-saucer of milk does not go very far in satisfying its wants, I
-daresay. There is one point which I should wish to determine." He
-squatted down in front of the wooden chair and examined the seat
-of it with the greatest attention.
-
-"Thank you. That is quite settled," said he, rising and putting
-his lens in his pocket. "Hullo! Here is something interesting!"
-
-The object which had caught his eye was a small dog lash hung on
-one corner of the bed. The lash, however, was curled upon itself
-and tied so as to make a loop of whipcord.
-
-"What do you make of that, Watson?"
-
-"It's a common enough lash. But I don't know why it should be
-tied."
-
-"That is not quite so common, is it? Ah, me! it's a wicked world,
-and when a clever man turns his brains to crime it is the worst
-of all. I think that I have seen enough now, Miss Stoner, and
-with your permission we shall walk out upon the lawn."
-
-I had never seen my friend's face so grim or his brow so dark as
-it was when we turned from the scene of this investigation. We
-had walked several times up and down the lawn, neither Miss
-Stoner nor myself liking to break in upon his thoughts before he
-roused himself from his reverie.
-
-"It is very essential, Miss Stoner," said he, "that you should
-absolutely follow my advice in every respect."
-
-"I shall most certainly do so."
-
-"The matter is too serious for any hesitation. Your life may
-depend upon your compliance."
-
-"I assure you that I am in your hands."
-
-"In the first place, both my friend and I must spend the night in
-your room."
-
-Both Miss Stoner and I gazed at him in astonishment.
-
-"Yes, it must be so. Let me explain. I believe that that is the
-village inn over there?"
-
-"Yes, that is the Crown."
-
-"Very good. Your windows would be visible from there?"
-
-"Certainly."
-
-"You must confine yourself to your room, on pretence of a
-headache, when your stepfather comes back. Then when you hear him
-retire for the night, you must open the shutters of your window,
-undo the hasp, put your lamp there as a signal to us, and then
-withdraw quietly with everything which you are likely to want
-into the room which you used to occupy. I have no doubt that, in
-spite of the repairs, you could manage there for one night."
-
-"Oh, yes, easily."
-
-"The rest you will leave in our hands."
-
-"But what will you do?"
-
-"We shall spend the night in your room, and we shall investigate
-the cause of this noise which has disturbed you."
-
-"I believe, Mr. Holmes, that you have already made up your mind,"
-said Miss Stoner, laying her hand upon my companion's sleeve.
-
-"Perhaps I have."
-
-"Then, for pity's sake, tell me what was the cause of my sister's
-death."
-
-"I should prefer to have clearer proofs before I speak."
-
-"You can at least tell me whether my own thought is correct, and
-if she died from some sudden fright."
-
-"No, I do not think so. I think that there was probably some more
-tangible cause. And now, Miss Stoner, we must leave you for if
-Dr. Roylott returned and saw us our journey would be in vain.
-Good-bye, and be brave, for if you will do what I have told you,
-you may rest assured that we shall soon drive away the dangers
-that threaten you."
-
-Sherlock Holmes and I had no difficulty in engaging a bedroom and
-sitting-room at the Crown Inn. They were on the upper floor, and
-from our window we could command a view of the avenue gate, and
-of the inhabited wing of Stoke Moran Manor House. At dusk we saw
-Dr. Grimesby Roylott drive past, his huge form looming up beside
-the little figure of the lad who drove him. The boy had some
-slight difficulty in undoing the heavy iron gates, and we heard
-the hoarse roar of the doctor's voice and saw the fury with which
-he shook his clinched fists at him. The trap drove on, and a few
-minutes later we saw a sudden light spring up among the trees as
-the lamp was lit in one of the sitting-rooms.
-
-"Do you know, Watson," said Holmes as we sat together in the
-gathering darkness, "I have really some scruples as to taking you
-to-night. There is a distinct element of danger."
-
-"Can I be of assistance?"
-
-"Your presence might be invaluable."
-
-"Then I shall certainly come."
-
-"It is very kind of you."
-
-"You speak of danger. You have evidently seen more in these rooms
-than was visible to me."
-
-"No, but I fancy that I may have deduced a little more. I imagine
-that you saw all that I did."
-
-"I saw nothing remarkable save the bell-rope, and what purpose
-that could answer I confess is more than I can imagine."
-
-"You saw the ventilator, too?"
-
-"Yes, but I do not think that it is such a very unusual thing to
-have a small opening between two rooms. It was so small that a
-rat could hardly pass through."
-
-"I knew that we should find a ventilator before ever we came to
-Stoke Moran."
-
-"My dear Holmes!"
-
-"Oh, yes, I did. You remember in her statement she said that her
-sister could smell Dr. Roylott's cigar. Now, of course that
-suggested at once that there must be a communication between the
-two rooms. It could only be a small one, or it would have been
-remarked upon at the coroner's inquiry. I deduced a ventilator."
-
-"But what harm can there be in that?"
-
-"Well, there is at least a curious coincidence of dates. A
-ventilator is made, a cord is hung, and a lady who sleeps in the
-bed dies. Does not that strike you?"
-
-"I cannot as yet see any connection."
-
-"Did you observe anything very peculiar about that bed?"
-
-"No."
-
-"It was clamped to the floor. Did you ever see a bed fastened
-like that before?"
-
-"I cannot say that I have."
-
-"The lady could not move her bed. It must always be in the same
-relative position to the ventilator and to the rope--or so we may
-call it, since it was clearly never meant for a bell-pull."
-
-"Holmes," I cried, "I seem to see dimly what you are hinting at.
-We are only just in time to prevent some subtle and horrible
-crime."
-
-"Subtle enough and horrible enough. When a doctor does go wrong
-he is the first of criminals. He has nerve and he has knowledge.
-Palmer and Pritchard were among the heads of their profession.
-This man strikes even deeper, but I think, Watson, that we shall
-be able to strike deeper still. But we shall have horrors enough
-before the night is over; for goodness' sake let us have a quiet
-pipe and turn our minds for a few hours to something more
-cheerful."
-
-
-About nine o'clock the light among the trees was extinguished,
-and all was dark in the direction of the Manor House. Two hours
-passed slowly away, and then, suddenly, just at the stroke of
-eleven, a single bright light shone out right in front of us.
-
-"That is our signal," said Holmes, springing to his feet; "it
-comes from the middle window."
-
-As we passed out he exchanged a few words with the landlord,
-explaining that we were going on a late visit to an acquaintance,
-and that it was possible that we might spend the night there. A
-moment later we were out on the dark road, a chill wind blowing
-in our faces, and one yellow light twinkling in front of us
-through the gloom to guide us on our sombre errand.
-
-There was little difficulty in entering the grounds, for
-unrepaired breaches gaped in the old park wall. Making our way
-among the trees, we reached the lawn, crossed it, and were about
-to enter through the window when out from a clump of laurel
-bushes there darted what seemed to be a hideous and distorted
-child, who threw itself upon the grass with writhing limbs and
-then ran swiftly across the lawn into the darkness.
-
-"My God!" I whispered; "did you see it?"
-
-Holmes was for the moment as startled as I. His hand closed like
-a vice upon my wrist in his agitation. Then he broke into a low
-laugh and put his lips to my ear.
-
-"It is a nice household," he murmured. "That is the baboon."
-
-I had forgotten the strange pets which the doctor affected. There
-was a cheetah, too; perhaps we might find it upon our shoulders
-at any moment. I confess that I felt easier in my mind when,
-after following Holmes' example and slipping off my shoes, I
-found myself inside the bedroom. My companion noiselessly closed
-the shutters, moved the lamp onto the table, and cast his eyes
-round the room. All was as we had seen it in the daytime. Then
-creeping up to me and making a trumpet of his hand, he whispered
-into my ear again so gently that it was all that I could do to
-distinguish the words:
-
-"The least sound would be fatal to our plans."
-
-I nodded to show that I had heard.
-
-"We must sit without light. He would see it through the
-ventilator."
-
-I nodded again.
-
-"Do not go asleep; your very life may depend upon it. Have your
-pistol ready in case we should need it. I will sit on the side of
-the bed, and you in that chair."
-
-I took out my revolver and laid it on the corner of the table.
-
-Holmes had brought up a long thin cane, and this he placed upon
-the bed beside him. By it he laid the box of matches and the
-stump of a candle. Then he turned down the lamp, and we were left
-in darkness.
-
-How shall I ever forget that dreadful vigil? I could not hear a
-sound, not even the drawing of a breath, and yet I knew that my
-companion sat open-eyed, within a few feet of me, in the same
-state of nervous tension in which I was myself. The shutters cut
-off the least ray of light, and we waited in absolute darkness.
-
-From outside came the occasional cry of a night-bird, and once at
-our very window a long drawn catlike whine, which told us that
-the cheetah was indeed at liberty. Far away we could hear the
-deep tones of the parish clock, which boomed out every quarter of
-an hour. How long they seemed, those quarters! Twelve struck, and
-one and two and three, and still we sat waiting silently for
-whatever might befall.
-
-Suddenly there was the momentary gleam of a light up in the
-direction of the ventilator, which vanished immediately, but was
-succeeded by a strong smell of burning oil and heated metal.
-Someone in the next room had lit a dark-lantern. I heard a gentle
-sound of movement, and then all was silent once more, though the
-smell grew stronger. For half an hour I sat with straining ears.
-Then suddenly another sound became audible--a very gentle,
-soothing sound, like that of a small jet of steam escaping
-continually from a kettle. The instant that we heard it, Holmes
-sprang from the bed, struck a match, and lashed furiously with
-his cane at the bell-pull.
-
-"You see it, Watson?" he yelled. "You see it?"
-
-But I saw nothing. At the moment when Holmes struck the light I
-heard a low, clear whistle, but the sudden glare flashing into my
-weary eyes made it impossible for me to tell what it was at which
-my friend lashed so savagely. I could, however, see that his face
-was deadly pale and filled with horror and loathing. He had
-ceased to strike and was gazing up at the ventilator when
-suddenly there broke from the silence of the night the most
-horrible cry to which I have ever listened. It swelled up louder
-and louder, a hoarse yell of pain and fear and anger all mingled
-in the one dreadful shriek. They say that away down in the
-village, and even in the distant parsonage, that cry raised the
-sleepers from their beds. It struck cold to our hearts, and I
-stood gazing at Holmes, and he at me, until the last echoes of it
-had died away into the silence from which it rose.
-
-"What can it mean?" I gasped.
-
-"It means that it is all over," Holmes answered. "And perhaps,
-after all, it is for the best. Take your pistol, and we will
-enter Dr. Roylott's room."
-
-With a grave face he lit the lamp and led the way down the
-corridor. Twice he struck at the chamber door without any reply
-from within. Then he turned the handle and entered, I at his
-heels, with the cocked pistol in my hand.
-
-It was a singular sight which met our eyes. On the table stood a
-dark-lantern with the shutter half open, throwing a brilliant
-beam of light upon the iron safe, the door of which was ajar.
-Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
-clad in a long grey dressing-gown, his bare ankles protruding
-beneath, and his feet thrust into red heelless Turkish slippers.
-Across his lap lay the short stock with the long lash which we
-had noticed during the day. His chin was cocked upward and his
-eyes were fixed in a dreadful, rigid stare at the corner of the
-ceiling. Round his brow he had a peculiar yellow band, with
-brownish speckles, which seemed to be bound tightly round his
-head. As we entered he made neither sound nor motion.
-
-"The band! the speckled band!" whispered Holmes.
-
-I took a step forward. In an instant his strange headgear began
-to move, and there reared itself from among his hair the squat
-diamond-shaped head and puffed neck of a loathsome serpent.
-
-"It is a swamp adder!" cried Holmes; "the deadliest snake in
-India. He has died within ten seconds of being bitten. Violence
-does, in truth, recoil upon the violent, and the schemer falls
-into the pit which he digs for another. Let us thrust this
-creature back into its den, and we can then remove Miss Stoner to
-some place of shelter and let the county police know what has
-happened."
-
-As he spoke he drew the dog-whip swiftly from the dead man's lap,
-and throwing the noose round the reptile's neck he drew it from
-its horrid perch and, carrying it at arm's length, threw it into
-the iron safe, which he closed upon it.
-
-Such are the true facts of the death of Dr. Grimesby Roylott, of
-Stoke Moran. It is not necessary that I should prolong a
-narrative which has already run to too great a length by telling
-how we broke the sad news to the terrified girl, how we conveyed
-her by the morning train to the care of her good aunt at Harrow,
-of how the slow process of official inquiry came to the
-conclusion that the doctor met his fate while indiscreetly
-playing with a dangerous pet. The little which I had yet to learn
-of the case was told me by Sherlock Holmes as we travelled back
-next day.
-
-"I had," said he, "come to an entirely erroneous conclusion which
-shows, my dear Watson, how dangerous it always is to reason from
-insufficient data. The presence of the gipsies, and the use of
-the word 'band,' which was used by the poor girl, no doubt, to
-explain the appearance which she had caught a hurried glimpse of
-by the light of her match, were sufficient to put me upon an
-entirely wrong scent. I can only claim the merit that I instantly
-reconsidered my position when, however, it became clear to me
-that whatever danger threatened an occupant of the room could not
-come either from the window or the door. My attention was
-speedily drawn, as I have already remarked to you, to this
-ventilator, and to the bell-rope which hung down to the bed. The
-discovery that this was a dummy, and that the bed was clamped to
-the floor, instantly gave rise to the suspicion that the rope was
-there as a bridge for something passing through the hole and
-coming to the bed. The idea of a snake instantly occurred to me,
-and when I coupled it with my knowledge that the doctor was
-furnished with a supply of creatures from India, I felt that I
-was probably on the right track. The idea of using a form of
-poison which could not possibly be discovered by any chemical
-test was just such a one as would occur to a clever and ruthless
-man who had had an Eastern training. The rapidity with which such
-a poison would take effect would also, from his point of view, be
-an advantage. It would be a sharp-eyed coroner, indeed, who could
-distinguish the two little dark punctures which would show where
-the poison fangs had done their work. Then I thought of the
-whistle. Of course he must recall the snake before the morning
-light revealed it to the victim. He had trained it, probably by
-the use of the milk which we saw, to return to him when summoned.
-He would put it through this ventilator at the hour that he
-thought best, with the certainty that it would crawl down the
-rope and land on the bed. It might or might not bite the
-occupant, perhaps she might escape every night for a week, but
-sooner or later she must fall a victim.
-
-"I had come to these conclusions before ever I had entered his
-room. An inspection of his chair showed me that he had been in
-the habit of standing on it, which of course would be necessary
-in order that he should reach the ventilator. The sight of the
-safe, the saucer of milk, and the loop of whipcord were enough to
-finally dispel any doubts which may have remained. The metallic
-clang heard by Miss Stoner was obviously caused by her stepfather
-hastily closing the door of his safe upon its terrible occupant.
-Having once made up my mind, you know the steps which I took in
-order to put the matter to the proof. I heard the creature hiss
-as I have no doubt that you did also, and I instantly lit the
-light and attacked it."
-
-"With the result of driving it through the ventilator."
-
-"And also with the result of causing it to turn upon its master
-at the other side. Some of the blows of my cane came home and
-roused its snakish temper, so that it flew upon the first person
-it saw. In this way I am no doubt indirectly responsible for Dr.
-Grimesby Roylott's death, and I cannot say that it is likely to
-weigh very heavily upon my conscience."
-
-
-
-IX. THE ADVENTURE OF THE ENGINEER'S THUMB
-
-Of all the problems which have been submitted to my friend, Mr.
-Sherlock Holmes, for solution during the years of our intimacy,
-there were only two which I was the means of introducing to his
-notice--that of Mr. Hatherley's thumb, and that of Colonel
-Warburton's madness. Of these the latter may have afforded a
-finer field for an acute and original observer, but the other was
-so strange in its inception and so dramatic in its details that
-it may be the more worthy of being placed upon record, even if it
-gave my friend fewer openings for those deductive methods of
-reasoning by which he achieved such remarkable results. The story
-has, I believe, been told more than once in the newspapers, but,
-like all such narratives, its effect is much less striking when
-set forth en bloc in a single half-column of print than when the
-facts slowly evolve before your own eyes, and the mystery clears
-gradually away as each new discovery furnishes a step which leads
-on to the complete truth. At the time the circumstances made a
-deep impression upon me, and the lapse of two years has hardly
-served to weaken the effect.
-
-It was in the summer of '89, not long after my marriage, that the
-events occurred which I am now about to summarise. I had returned
-to civil practice and had finally abandoned Holmes in his Baker
-Street rooms, although I continually visited him and occasionally
-even persuaded him to forgo his Bohemian habits so far as to come
-and visit us. My practice had steadily increased, and as I
-happened to live at no very great distance from Paddington
-Station, I got a few patients from among the officials. One of
-these, whom I had cured of a painful and lingering disease, was
-never weary of advertising my virtues and of endeavouring to send
-me on every sufferer over whom he might have any influence.
-
-One morning, at a little before seven o'clock, I was awakened by
-the maid tapping at the door to announce that two men had come
-from Paddington and were waiting in the consulting-room. I
-dressed hurriedly, for I knew by experience that railway cases
-were seldom trivial, and hastened downstairs. As I descended, my
-old ally, the guard, came out of the room and closed the door
-tightly behind him.
-
-"I've got him here," he whispered, jerking his thumb over his
-shoulder; "he's all right."
-
-"What is it, then?" I asked, for his manner suggested that it was
-some strange creature which he had caged up in my room.
-
-"It's a new patient," he whispered. "I thought I'd bring him
-round myself; then he couldn't slip away. There he is, all safe
-and sound. I must go now, Doctor; I have my dooties, just the
-same as you." And off he went, this trusty tout, without even
-giving me time to thank him.
-
-I entered my consulting-room and found a gentleman seated by the
-table. He was quietly dressed in a suit of heather tweed with a
-soft cloth cap which he had laid down upon my books. Round one of
-his hands he had a handkerchief wrapped, which was mottled all
-over with bloodstains. He was young, not more than
-five-and-twenty, I should say, with a strong, masculine face; but
-he was exceedingly pale and gave me the impression of a man who
-was suffering from some strong agitation, which it took all his
-strength of mind to control.
-
-"I am sorry to knock you up so early, Doctor," said he, "but I
-have had a very serious accident during the night. I came in by
-train this morning, and on inquiring at Paddington as to where I
-might find a doctor, a worthy fellow very kindly escorted me
-here. I gave the maid a card, but I see that she has left it upon
-the side-table."
-
-I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
-engineer, 16A, Victoria Street (3rd floor)." That was the name,
-style, and abode of my morning visitor. "I regret that I have
-kept you waiting," said I, sitting down in my library-chair. "You
-are fresh from a night journey, I understand, which is in itself
-a monotonous occupation."
-
-"Oh, my night could not be called monotonous," said he, and
-laughed. He laughed very heartily, with a high, ringing note,
-leaning back in his chair and shaking his sides. All my medical
-instincts rose up against that laugh.
-
-"Stop it!" I cried; "pull yourself together!" and I poured out
-some water from a caraffe.
-
-It was useless, however. He was off in one of those hysterical
-outbursts which come upon a strong nature when some great crisis
-is over and gone. Presently he came to himself once more, very
-weary and pale-looking.
-
-"I have been making a fool of myself," he gasped.
-
-"Not at all. Drink this." I dashed some brandy into the water,
-and the colour began to come back to his bloodless cheeks.
-
-"That's better!" said he. "And now, Doctor, perhaps you would
-kindly attend to my thumb, or rather to the place where my thumb
-used to be."
-
-He unwound the handkerchief and held out his hand. It gave even
-my hardened nerves a shudder to look at it. There were four
-protruding fingers and a horrid red, spongy surface where the
-thumb should have been. It had been hacked or torn right out from
-the roots.
-
-"Good heavens!" I cried, "this is a terrible injury. It must have
-bled considerably."
-
-"Yes, it did. I fainted when it was done, and I think that I must
-have been senseless for a long time. When I came to I found that
-it was still bleeding, so I tied one end of my handkerchief very
-tightly round the wrist and braced it up with a twig."
-
-"Excellent! You should have been a surgeon."
-
-"It is a question of hydraulics, you see, and came within my own
-province."
-
-"This has been done," said I, examining the wound, "by a very
-heavy and sharp instrument."
-
-"A thing like a cleaver," said he.
-
-"An accident, I presume?"
-
-"By no means."
-
-"What! a murderous attack?"
-
-"Very murderous indeed."
-
-"You horrify me."
-
-I sponged the wound, cleaned it, dressed it, and finally covered
-it over with cotton wadding and carbolised bandages. He lay back
-without wincing, though he bit his lip from time to time.
-
-"How is that?" I asked when I had finished.
-
-"Capital! Between your brandy and your bandage, I feel a new man.
-I was very weak, but I have had a good deal to go through."
-
-"Perhaps you had better not speak of the matter. It is evidently
-trying to your nerves."
-
-"Oh, no, not now. I shall have to tell my tale to the police;
-but, between ourselves, if it were not for the convincing
-evidence of this wound of mine, I should be surprised if they
-believed my statement, for it is a very extraordinary one, and I
-have not much in the way of proof with which to back it up; and,
-even if they believe me, the clues which I can give them are so
-vague that it is a question whether justice will be done."
-
-"Ha!" cried I, "if it is anything in the nature of a problem
-which you desire to see solved, I should strongly recommend you
-to come to my friend, Mr. Sherlock Holmes, before you go to the
-official police."
-
-"Oh, I have heard of that fellow," answered my visitor, "and I
-should be very glad if he would take the matter up, though of
-course I must use the official police as well. Would you give me
-an introduction to him?"
-
-"I'll do better. I'll take you round to him myself."
-
-"I should be immensely obliged to you."
-
-"We'll call a cab and go together. We shall just be in time to
-have a little breakfast with him. Do you feel equal to it?"
-
-"Yes; I shall not feel easy until I have told my story."
-
-"Then my servant will call a cab, and I shall be with you in an
-instant." I rushed upstairs, explained the matter shortly to my
-wife, and in five minutes was inside a hansom, driving with my
-new acquaintance to Baker Street.
-
-Sherlock Holmes was, as I expected, lounging about his
-sitting-room in his dressing-gown, reading the agony column of The
-Times and smoking his before-breakfast pipe, which was composed
-of all the plugs and dottles left from his smokes of the day
-before, all carefully dried and collected on the corner of the
-mantelpiece. He received us in his quietly genial fashion,
-ordered fresh rashers and eggs, and joined us in a hearty meal.
-When it was concluded he settled our new acquaintance upon the
-sofa, placed a pillow beneath his head, and laid a glass of
-brandy and water within his reach.
-
-"It is easy to see that your experience has been no common one,
-Mr. Hatherley," said he. "Pray, lie down there and make yourself
-absolutely at home. Tell us what you can, but stop when you are
-tired and keep up your strength with a little stimulant."
-
-"Thank you," said my patient, "but I have felt another man since
-the doctor bandaged me, and I think that your breakfast has
-completed the cure. I shall take up as little of your valuable
-time as possible, so I shall start at once upon my peculiar
-experiences."
-
-Holmes sat in his big armchair with the weary, heavy-lidded
-expression which veiled his keen and eager nature, while I sat
-opposite to him, and we listened in silence to the strange story
-which our visitor detailed to us.
-
-"You must know," said he, "that I am an orphan and a bachelor,
-residing alone in lodgings in London. By profession I am a
-hydraulic engineer, and I have had considerable experience of my
-work during the seven years that I was apprenticed to Venner &
-Matheson, the well-known firm, of Greenwich. Two years ago,
-having served my time, and having also come into a fair sum of
-money through my poor father's death, I determined to start in
-business for myself and took professional chambers in Victoria
-Street.
-
-"I suppose that everyone finds his first independent start in
-business a dreary experience. To me it has been exceptionally so.
-During two years I have had three consultations and one small
-job, and that is absolutely all that my profession has brought
-me. My gross takings amount to 27 pounds 10s. Every day, from
-nine in the morning until four in the afternoon, I waited in my
-little den, until at last my heart began to sink, and I came to
-believe that I should never have any practice at all.
-
-"Yesterday, however, just as I was thinking of leaving the
-office, my clerk entered to say there was a gentleman waiting who
-wished to see me upon business. He brought up a card, too, with
-the name of 'Colonel Lysander Stark' engraved upon it. Close at
-his heels came the colonel himself, a man rather over the middle
-size, but of an exceeding thinness. I do not think that I have
-ever seen so thin a man. His whole face sharpened away into nose
-and chin, and the skin of his cheeks was drawn quite tense over
-his outstanding bones. Yet this emaciation seemed to be his
-natural habit, and due to no disease, for his eye was bright, his
-step brisk, and his bearing assured. He was plainly but neatly
-dressed, and his age, I should judge, would be nearer forty than
-thirty.
-
-"'Mr. Hatherley?' said he, with something of a German accent.
-'You have been recommended to me, Mr. Hatherley, as being a man
-who is not only proficient in his profession but is also discreet
-and capable of preserving a secret.'
-
-"I bowed, feeling as flattered as any young man would at such an
-address. 'May I ask who it was who gave me so good a character?'
-
-"'Well, perhaps it is better that I should not tell you that just
-at this moment. I have it from the same source that you are both
-an orphan and a bachelor and are residing alone in London.'
-
-"'That is quite correct,' I answered; 'but you will excuse me if
-I say that I cannot see how all this bears upon my professional
-qualifications. I understand that it was on a professional matter
-that you wished to speak to me?'
-
-"'Undoubtedly so. But you will find that all I say is really to
-the point. I have a professional commission for you, but absolute
-secrecy is quite essential--absolute secrecy, you understand, and
-of course we may expect that more from a man who is alone than
-from one who lives in the bosom of his family.'
-
-"'If I promise to keep a secret,' said I, 'you may absolutely
-depend upon my doing so.'
-
-"He looked very hard at me as I spoke, and it seemed to me that I
-had never seen so suspicious and questioning an eye.
-
-"'Do you promise, then?' said he at last.
-
-"'Yes, I promise.'
-
-"'Absolute and complete silence before, during, and after? No
-reference to the matter at all, either in word or writing?'
-
-"'I have already given you my word.'
-
-"'Very good.' He suddenly sprang up, and darting like lightning
-across the room he flung open the door. The passage outside was
-empty.
-
-"'That's all right,' said he, coming back. 'I know that clerks are
-sometimes curious as to their master's affairs. Now we can talk
-in safety.' He drew up his chair very close to mine and began to
-stare at me again with the same questioning and thoughtful look.
-
-"A feeling of repulsion, and of something akin to fear had begun
-to rise within me at the strange antics of this fleshless man.
-Even my dread of losing a client could not restrain me from
-showing my impatience.
-
-"'I beg that you will state your business, sir,' said I; 'my time
-is of value.' Heaven forgive me for that last sentence, but the
-words came to my lips.
-
-"'How would fifty guineas for a night's work suit you?' he asked.
-
-"'Most admirably.'
-
-"'I say a night's work, but an hour's would be nearer the mark. I
-simply want your opinion about a hydraulic stamping machine which
-has got out of gear. If you show us what is wrong we shall soon
-set it right ourselves. What do you think of such a commission as
-that?'
-
-"'The work appears to be light and the pay munificent.'
-
-"'Precisely so. We shall want you to come to-night by the last
-train.'
-
-"'Where to?'
-
-"'To Eyford, in Berkshire. It is a little place near the borders
-of Oxfordshire, and within seven miles of Reading. There is a
-train from Paddington which would bring you there at about
-11:15.'
-
-"'Very good.'
-
-"'I shall come down in a carriage to meet you.'
-
-"'There is a drive, then?'
-
-"'Yes, our little place is quite out in the country. It is a good
-seven miles from Eyford Station.'
-
-"'Then we can hardly get there before midnight. I suppose there
-would be no chance of a train back. I should be compelled to stop
-the night.'
-
-"'Yes, we could easily give you a shake-down.'
-
-"'That is very awkward. Could I not come at some more convenient
-hour?'
-
-"'We have judged it best that you should come late. It is to
-recompense you for any inconvenience that we are paying to you, a
-young and unknown man, a fee which would buy an opinion from the
-very heads of your profession. Still, of course, if you would
-like to draw out of the business, there is plenty of time to do
-so.'
-
-"I thought of the fifty guineas, and of how very useful they
-would be to me. 'Not at all,' said I, 'I shall be very happy to
-accommodate myself to your wishes. I should like, however, to
-understand a little more clearly what it is that you wish me to
-do.'
-
-"'Quite so. It is very natural that the pledge of secrecy which
-we have exacted from you should have aroused your curiosity. I
-have no wish to commit you to anything without your having it all
-laid before you. I suppose that we are absolutely safe from
-eavesdroppers?'
-
-"'Entirely.'
-
-"'Then the matter stands thus. You are probably aware that
-fuller's-earth is a valuable product, and that it is only found
-in one or two places in England?'
-
-"'I have heard so.'
-
-"'Some little time ago I bought a small place--a very small
-place--within ten miles of Reading. I was fortunate enough to
-discover that there was a deposit of fuller's-earth in one of my
-fields. On examining it, however, I found that this deposit was a
-comparatively small one, and that it formed a link between two
-very much larger ones upon the right and left--both of them,
-however, in the grounds of my neighbours. These good people were
-absolutely ignorant that their land contained that which was
-quite as valuable as a gold-mine. Naturally, it was to my
-interest to buy their land before they discovered its true value,
-but unfortunately I had no capital by which I could do this. I
-took a few of my friends into the secret, however, and they
-suggested that we should quietly and secretly work our own little
-deposit and that in this way we should earn the money which would
-enable us to buy the neighbouring fields. This we have now been
-doing for some time, and in order to help us in our operations we
-erected a hydraulic press. This press, as I have already
-explained, has got out of order, and we wish your advice upon the
-subject. We guard our secret very jealously, however, and if it
-once became known that we had hydraulic engineers coming to our
-little house, it would soon rouse inquiry, and then, if the facts
-came out, it would be good-bye to any chance of getting these
-fields and carrying out our plans. That is why I have made you
-promise me that you will not tell a human being that you are
-going to Eyford to-night. I hope that I make it all plain?'
-
-"'I quite follow you,' said I. 'The only point which I could not
-quite understand was what use you could make of a hydraulic press
-in excavating fuller's-earth, which, as I understand, is dug out
-like gravel from a pit.'
-
-"'Ah!' said he carelessly, 'we have our own process. We compress
-the earth into bricks, so as to remove them without revealing
-what they are. But that is a mere detail. I have taken you fully
-into my confidence now, Mr. Hatherley, and I have shown you how I
-trust you.' He rose as he spoke. 'I shall expect you, then, at
-Eyford at 11:15.'
-
-"'I shall certainly be there.'
-
-"'And not a word to a soul.' He looked at me with a last long,
-questioning gaze, and then, pressing my hand in a cold, dank
-grasp, he hurried from the room.
-
-"Well, when I came to think it all over in cool blood I was very
-much astonished, as you may both think, at this sudden commission
-which had been intrusted to me. On the one hand, of course, I was
-glad, for the fee was at least tenfold what I should have asked
-had I set a price upon my own services, and it was possible that
-this order might lead to other ones. On the other hand, the face
-and manner of my patron had made an unpleasant impression upon
-me, and I could not think that his explanation of the
-fuller's-earth was sufficient to explain the necessity for my
-coming at midnight, and his extreme anxiety lest I should tell
-anyone of my errand. However, I threw all fears to the winds, ate
-a hearty supper, drove to Paddington, and started off, having
-obeyed to the letter the injunction as to holding my tongue.
-
-"At Reading I had to change not only my carriage but my station.
-However, I was in time for the last train to Eyford, and I
-reached the little dim-lit station after eleven o'clock. I was the
-only passenger who got out there, and there was no one upon the
-platform save a single sleepy porter with a lantern. As I passed
-out through the wicket gate, however, I found my acquaintance of
-the morning waiting in the shadow upon the other side. Without a
-word he grasped my arm and hurried me into a carriage, the door
-of which was standing open. He drew up the windows on either
-side, tapped on the wood-work, and away we went as fast as the
-horse could go."
-
-"One horse?" interjected Holmes.
-
-"Yes, only one."
-
-"Did you observe the colour?"
-
-"Yes, I saw it by the side-lights when I was stepping into the
-carriage. It was a chestnut."
-
-"Tired-looking or fresh?"
-
-"Oh, fresh and glossy."
-
-"Thank you. I am sorry to have interrupted you. Pray continue
-your most interesting statement."
-
-"Away we went then, and we drove for at least an hour. Colonel
-Lysander Stark had said that it was only seven miles, but I
-should think, from the rate that we seemed to go, and from the
-time that we took, that it must have been nearer twelve. He sat
-at my side in silence all the time, and I was aware, more than
-once when I glanced in his direction, that he was looking at me
-with great intensity. The country roads seem to be not very good
-in that part of the world, for we lurched and jolted terribly. I
-tried to look out of the windows to see something of where we
-were, but they were made of frosted glass, and I could make out
-nothing save the occasional bright blur of a passing light. Now
-and then I hazarded some remark to break the monotony of the
-journey, but the colonel answered only in monosyllables, and the
-conversation soon flagged. At last, however, the bumping of the
-road was exchanged for the crisp smoothness of a gravel-drive,
-and the carriage came to a stand. Colonel Lysander Stark sprang
-out, and, as I followed after him, pulled me swiftly into a porch
-which gaped in front of us. We stepped, as it were, right out of
-the carriage and into the hall, so that I failed to catch the
-most fleeting glance of the front of the house. The instant that
-I had crossed the threshold the door slammed heavily behind us,
-and I heard faintly the rattle of the wheels as the carriage
-drove away.
-
-"It was pitch dark inside the house, and the colonel fumbled
-about looking for matches and muttering under his breath.
-Suddenly a door opened at the other end of the passage, and a
-long, golden bar of light shot out in our direction. It grew
-broader, and a woman appeared with a lamp in her hand, which she
-held above her head, pushing her face forward and peering at us.
-I could see that she was pretty, and from the gloss with which
-the light shone upon her dark dress I knew that it was a rich
-material. She spoke a few words in a foreign tongue in a tone as
-though asking a question, and when my companion answered in a
-gruff monosyllable she gave such a start that the lamp nearly
-fell from her hand. Colonel Stark went up to her, whispered
-something in her ear, and then, pushing her back into the room
-from whence she had come, he walked towards me again with the
-lamp in his hand.
-
-"'Perhaps you will have the kindness to wait in this room for a
-few minutes,' said he, throwing open another door. It was a
-quiet, little, plainly furnished room, with a round table in the
-centre, on which several German books were scattered. Colonel
-Stark laid down the lamp on the top of a harmonium beside the
-door. 'I shall not keep you waiting an instant,' said he, and
-vanished into the darkness.
-
-"I glanced at the books upon the table, and in spite of my
-ignorance of German I could see that two of them were treatises
-on science, the others being volumes of poetry. Then I walked
-across to the window, hoping that I might catch some glimpse of
-the country-side, but an oak shutter, heavily barred, was folded
-across it. It was a wonderfully silent house. There was an old
-clock ticking loudly somewhere in the passage, but otherwise
-everything was deadly still. A vague feeling of uneasiness began
-to steal over me. Who were these German people, and what were
-they doing living in this strange, out-of-the-way place? And
-where was the place? I was ten miles or so from Eyford, that was
-all I knew, but whether north, south, east, or west I had no
-idea. For that matter, Reading, and possibly other large towns,
-were within that radius, so the place might not be so secluded,
-after all. Yet it was quite certain, from the absolute stillness,
-that we were in the country. I paced up and down the room,
-humming a tune under my breath to keep up my spirits and feeling
-that I was thoroughly earning my fifty-guinea fee.
-
-"Suddenly, without any preliminary sound in the midst of the
-utter stillness, the door of my room swung slowly open. The woman
-was standing in the aperture, the darkness of the hall behind
-her, the yellow light from my lamp beating upon her eager and
-beautiful face. I could see at a glance that she was sick with
-fear, and the sight sent a chill to my own heart. She held up one
-shaking finger to warn me to be silent, and she shot a few
-whispered words of broken English at me, her eyes glancing back,
-like those of a frightened horse, into the gloom behind her.
-
-"'I would go,' said she, trying hard, as it seemed to me, to
-speak calmly; 'I would go. I should not stay here. There is no
-good for you to do.'
-
-"'But, madam,' said I, 'I have not yet done what I came for. I
-cannot possibly leave until I have seen the machine.'
-
-"'It is not worth your while to wait,' she went on. 'You can pass
-through the door; no one hinders.' And then, seeing that I smiled
-and shook my head, she suddenly threw aside her constraint and
-made a step forward, with her hands wrung together. 'For the love
-of Heaven!' she whispered, 'get away from here before it is too
-late!'
-
-"But I am somewhat headstrong by nature, and the more ready to
-engage in an affair when there is some obstacle in the way. I
-thought of my fifty-guinea fee, of my wearisome journey, and of
-the unpleasant night which seemed to be before me. Was it all to
-go for nothing? Why should I slink away without having carried
-out my commission, and without the payment which was my due? This
-woman might, for all I knew, be a monomaniac. With a stout
-bearing, therefore, though her manner had shaken me more than I
-cared to confess, I still shook my head and declared my intention
-of remaining where I was. She was about to renew her entreaties
-when a door slammed overhead, and the sound of several footsteps
-was heard upon the stairs. She listened for an instant, threw up
-her hands with a despairing gesture, and vanished as suddenly and
-as noiselessly as she had come.
-
-"The newcomers were Colonel Lysander Stark and a short thick man
-with a chinchilla beard growing out of the creases of his double
-chin, who was introduced to me as Mr. Ferguson.
-
-"'This is my secretary and manager,' said the colonel. 'By the
-way, I was under the impression that I left this door shut just
-now. I fear that you have felt the draught.'
-
-"'On the contrary,' said I, 'I opened the door myself because I
-felt the room to be a little close.'
-
-"He shot one of his suspicious looks at me. 'Perhaps we had
-better proceed to business, then,' said he. 'Mr. Ferguson and I
-will take you up to see the machine.'
-
-"'I had better put my hat on, I suppose.'
-
-"'Oh, no, it is in the house.'
-
-"'What, you dig fuller's-earth in the house?'
-
-"'No, no. This is only where we compress it. But never mind that.
-All we wish you to do is to examine the machine and to let us
-know what is wrong with it.'
-
-"We went upstairs together, the colonel first with the lamp, the
-fat manager and I behind him. It was a labyrinth of an old house,
-with corridors, passages, narrow winding staircases, and little
-low doors, the thresholds of which were hollowed out by the
-generations who had crossed them. There were no carpets and no
-signs of any furniture above the ground floor, while the plaster
-was peeling off the walls, and the damp was breaking through in
-green, unhealthy blotches. I tried to put on as unconcerned an
-air as possible, but I had not forgotten the warnings of the
-lady, even though I disregarded them, and I kept a keen eye upon
-my two companions. Ferguson appeared to be a morose and silent
-man, but I could see from the little that he said that he was at
-least a fellow-countryman.
-
-"Colonel Lysander Stark stopped at last before a low door, which
-he unlocked. Within was a small, square room, in which the three
-of us could hardly get at one time. Ferguson remained outside,
-and the colonel ushered me in.
-
-"'We are now,' said he, 'actually within the hydraulic press, and
-it would be a particularly unpleasant thing for us if anyone were
-to turn it on. The ceiling of this small chamber is really the
-end of the descending piston, and it comes down with the force of
-many tons upon this metal floor. There are small lateral columns
-of water outside which receive the force, and which transmit and
-multiply it in the manner which is familiar to you. The machine
-goes readily enough, but there is some stiffness in the working
-of it, and it has lost a little of its force. Perhaps you will
-have the goodness to look it over and to show us how we can set
-it right.'
-
-"I took the lamp from him, and I examined the machine very
-thoroughly. It was indeed a gigantic one, and capable of
-exercising enormous pressure. When I passed outside, however, and
-pressed down the levers which controlled it, I knew at once by
-the whishing sound that there was a slight leakage, which allowed
-a regurgitation of water through one of the side cylinders. An
-examination showed that one of the india-rubber bands which was
-round the head of a driving-rod had shrunk so as not quite to
-fill the socket along which it worked. This was clearly the cause
-of the loss of power, and I pointed it out to my companions, who
-followed my remarks very carefully and asked several practical
-questions as to how they should proceed to set it right. When I
-had made it clear to them, I returned to the main chamber of the
-machine and took a good look at it to satisfy my own curiosity.
-It was obvious at a glance that the story of the fuller's-earth
-was the merest fabrication, for it would be absurd to suppose
-that so powerful an engine could be designed for so inadequate a
-purpose. The walls were of wood, but the floor consisted of a
-large iron trough, and when I came to examine it I could see a
-crust of metallic deposit all over it. I had stooped and was
-scraping at this to see exactly what it was when I heard a
-muttered exclamation in German and saw the cadaverous face of the
-colonel looking down at me.
-
-"'What are you doing there?' he asked.
-
-"I felt angry at having been tricked by so elaborate a story as
-that which he had told me. 'I was admiring your fuller's-earth,'
-said I; 'I think that I should be better able to advise you as to
-your machine if I knew what the exact purpose was for which it
-was used.'
-
-"The instant that I uttered the words I regretted the rashness of
-my speech. His face set hard, and a baleful light sprang up in
-his grey eyes.
-
-"'Very well,' said he, 'you shall know all about the machine.' He
-took a step backward, slammed the little door, and turned the key
-in the lock. I rushed towards it and pulled at the handle, but it
-was quite secure, and did not give in the least to my kicks and
-shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
-
-"And then suddenly in the silence I heard a sound which sent my
-heart into my mouth. It was the clank of the levers and the swish
-of the leaking cylinder. He had set the engine at work. The lamp
-still stood upon the floor where I had placed it when examining
-the trough. By its light I saw that the black ceiling was coming
-down upon me, slowly, jerkily, but, as none knew better than
-myself, with a force which must within a minute grind me to a
-shapeless pulp. I threw myself, screaming, against the door, and
-dragged with my nails at the lock. I implored the colonel to let
-me out, but the remorseless clanking of the levers drowned my
-cries. The ceiling was only a foot or two above my head, and with
-my hand upraised I could feel its hard, rough surface. Then it
-flashed through my mind that the pain of my death would depend
-very much upon the position in which I met it. If I lay on my
-face the weight would come upon my spine, and I shuddered to
-think of that dreadful snap. Easier the other way, perhaps; and
-yet, had I the nerve to lie and look up at that deadly black
-shadow wavering down upon me? Already I was unable to stand
-erect, when my eye caught something which brought a gush of hope
-back to my heart.
-
-"I have said that though the floor and ceiling were of iron, the
-walls were of wood. As I gave a last hurried glance around, I saw
-a thin line of yellow light between two of the boards, which
-broadened and broadened as a small panel was pushed backward. For
-an instant I could hardly believe that here was indeed a door
-which led away from death. The next instant I threw myself
-through, and lay half-fainting upon the other side. The panel had
-closed again behind me, but the crash of the lamp, and a few
-moments afterwards the clang of the two slabs of metal, told me
-how narrow had been my escape.
-
-"I was recalled to myself by a frantic plucking at my wrist, and
-I found myself lying upon the stone floor of a narrow corridor,
-while a woman bent over me and tugged at me with her left hand,
-while she held a candle in her right. It was the same good friend
-whose warning I had so foolishly rejected.
-
-"'Come! come!' she cried breathlessly. 'They will be here in a
-moment. They will see that you are not there. Oh, do not waste
-the so-precious time, but come!'
-
-"This time, at least, I did not scorn her advice. I staggered to
-my feet and ran with her along the corridor and down a winding
-stair. The latter led to another broad passage, and just as we
-reached it we heard the sound of running feet and the shouting of
-two voices, one answering the other from the floor on which  we
-were and from the one beneath. My guide stopped and looked about
-her like one  who is at her wit's end. Then she threw open a door
-which led into a bedroom, through the window of which the moon
-was shining brightly.
-
-"'It is your only chance,' said she. 'It is high, but it may be
-that you can jump it.'
-
-"As she spoke a light sprang into view at the further end of the
-passage, and I saw the lean figure of Colonel Lysander Stark
-rushing forward with a lantern in one hand and a weapon like a
-butcher's cleaver in the other. I rushed across the bedroom,
-flung open the window, and looked out. How quiet and sweet and
-wholesome the garden looked in the moonlight, and it could not be
-more than thirty feet down. I clambered out upon the sill, but I
-hesitated to jump until I should have heard what passed between
-my saviour and the ruffian who pursued me. If she were ill-used,
-then at any risks I was determined to go back to her assistance.
-The thought had hardly flashed through my mind before he was at
-the door, pushing his way past her; but she threw her arms round
-him and tried to hold him back.
-
-"'Fritz! Fritz!' she cried in English, 'remember your promise
-after the last time. You said it should not be again. He will be
-silent! Oh, he will be silent!'
-
-"'You are mad, Elise!' he shouted, struggling to break away from
-her. 'You will be the ruin of us. He has seen too much. Let me
-pass, I say!' He dashed her to one side, and, rushing to the
-window, cut at me with his heavy weapon. I had let myself go, and
-was hanging by the hands to the sill, when his blow fell. I was
-conscious of a dull pain, my grip loosened, and I fell into the
-garden below.
-
-"I was shaken but not hurt by the fall; so I picked myself up and
-rushed off among the bushes as hard as I could run, for I
-understood that I was far from being out of danger yet. Suddenly,
-however, as I ran, a deadly dizziness and sickness came over me.
-I glanced down at my hand, which was throbbing painfully, and
-then, for the first time, saw that my thumb had been cut off and
-that the blood was pouring from my wound. I endeavoured to tie my
-handkerchief round it, but there came a sudden buzzing in my
-ears, and next moment I fell in a dead faint among the
-rose-bushes.
-
-"How long I remained unconscious I cannot tell. It must have been
-a very long time, for the moon had sunk, and a bright morning was
-breaking when I came to myself. My clothes were all sodden with
-dew, and my coat-sleeve was drenched with blood from my wounded
-thumb. The smarting of it recalled in an instant all the
-particulars of my night's adventure, and I sprang to my feet with
-the feeling that I might hardly yet be safe from my pursuers. But
-to my astonishment, when I came to look round me, neither house
-nor garden were to be seen. I had been lying in an angle of the
-hedge close by the highroad, and just a little lower down was a
-long building, which proved, upon my approaching it, to be the
-very station at which I had arrived upon the previous night. Were
-it not for the ugly wound upon my hand, all that had passed
-during those dreadful hours might have been an evil dream.
-
-"Half dazed, I went into the station and asked about the morning
-train. There would be one to Reading in less than an hour. The
-same porter was on duty, I found, as had been there when I
-arrived. I inquired of him whether he had ever heard of Colonel
-Lysander Stark. The name was strange to him. Had he observed a
-carriage the night before waiting for me? No, he had not. Was
-there a police-station anywhere near? There was one about three
-miles off.
-
-"It was too far for me to go, weak and ill as I was. I determined
-to wait until I got back to town before telling my story to the
-police. It was a little past six when I arrived, so I went first
-to have my wound dressed, and then the doctor was kind enough to
-bring me along here. I put the case into your hands and shall do
-exactly what you advise."
-
-We both sat in silence for some little time after listening to
-this extraordinary narrative. Then Sherlock Holmes pulled down
-from the shelf one of the ponderous commonplace books in which he
-placed his cuttings.
-
-"Here is an advertisement which will interest you," said he. "It
-appeared in all the papers about a year ago. Listen to this:
-'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
-twenty-six, a hydraulic engineer. Left his lodgings at ten
-o'clock at night, and has not been heard of since. Was
-dressed in,' etc., etc. Ha! That represents the last time that
-the colonel needed to have his machine overhauled, I fancy."
-
-"Good heavens!" cried my patient. "Then that explains what the
-girl said."
-
-"Undoubtedly. It is quite clear that the colonel was a cool and
-desperate man, who was absolutely determined that nothing should
-stand in the way of his little game, like those out-and-out
-pirates who will leave no survivor from a captured ship. Well,
-every moment now is precious, so if you feel equal to it we shall
-go down to Scotland Yard at once as a preliminary to starting for
-Eyford."
-
-Some three hours or so afterwards we were all in the train
-together, bound from Reading to the little Berkshire village.
-There were Sherlock Holmes, the hydraulic engineer, Inspector
-Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
-Bradstreet had spread an ordnance map of the county out upon the
-seat and was busy with his compasses drawing a circle with Eyford
-for its centre.
-
-"There you are," said he. "That circle is drawn at a radius of
-ten miles from the village. The place we want must be somewhere
-near that line. You said ten miles, I think, sir."
-
-"It was an hour's good drive."
-
-"And you think that they brought you back all that way when you
-were unconscious?"
-
-"They must have done so. I have a confused memory, too, of having
-been lifted and conveyed somewhere."
-
-"What I cannot understand," said I, "is why they should have
-spared you when they found you lying fainting in the garden.
-Perhaps the villain was softened by the woman's entreaties."
-
-"I hardly think that likely. I never saw a more inexorable face
-in my life."
-
-"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
-have drawn my circle, and I only wish I knew at what point upon
-it the folk that we are in search of are to be found."
-
-"I think I could lay my finger on it," said Holmes quietly.
-
-"Really, now!" cried the inspector, "you have formed your
-opinion! Come, now, we shall see who agrees with you. I say it is
-south, for the country is more deserted there."
-
-"And I say east," said my patient.
-
-"I am for west," remarked the plain-clothes man. "There are
-several quiet little villages up there."
-
-"And I am for north," said I, "because there are no hills there,
-and our friend says that he did not notice the carriage go up
-any."
-
-"Come," cried the inspector, laughing; "it's a very pretty
-diversity of opinion. We have boxed the compass among us. Who do
-you give your casting vote to?"
-
-"You are all wrong."
-
-"But we can't all be."
-
-"Oh, yes, you can. This is my point." He placed his finger in the
-centre of the circle. "This is where we shall find them."
-
-"But the twelve-mile drive?" gasped Hatherley.
-
-"Six out and six back. Nothing simpler. You say yourself that the
-horse was fresh and glossy when you got in. How could it be that
-if it had gone twelve miles over heavy roads?"
-
-"Indeed, it is a likely ruse enough," observed Bradstreet
-thoughtfully. "Of course there can be no doubt as to the nature
-of this gang."
-
-"None at all," said Holmes. "They are coiners on a large scale,
-and have used the machine to form the amalgam which has taken the
-place of silver."
-
-"We have known for some time that a clever gang was at work,"
-said the inspector. "They have been turning out half-crowns by
-the thousand. We even traced them as far as Reading, but could
-get no farther, for they had covered their traces in a way that
-showed that they were very old hands. But now, thanks to this
-lucky chance, I think that we have got them right enough."
-
-But the inspector was mistaken, for those criminals were not
-destined to fall into the hands of justice. As we rolled into
-Eyford Station we saw a gigantic column of smoke which streamed
-up from behind a small clump of trees in the neighbourhood and
-hung like an immense ostrich feather over the landscape.
-
-"A house on fire?" asked Bradstreet as the train steamed off
-again on its way.
-
-"Yes, sir!" said the station-master.
-
-"When did it break out?"
-
-"I hear that it was during the night, sir, but it has got worse,
-and the whole place is in a blaze."
-
-"Whose house is it?"
-
-"Dr. Becher's."
-
-"Tell me," broke in the engineer, "is Dr. Becher a German, very
-thin, with a long, sharp nose?"
-
-The station-master laughed heartily. "No, sir, Dr. Becher is an
-Englishman, and there isn't a man in the parish who has a
-better-lined waistcoat. But he has a gentleman staying with him,
-a patient, as I understand, who is a foreigner, and he looks as
-if a little good Berkshire beef would do him no harm."
-
-The station-master had not finished his speech before we were all
-hastening in the direction of the fire. The road topped a low
-hill, and there was a great widespread whitewashed building in
-front of us, spouting fire at every chink and window, while in
-the garden in front three fire-engines were vainly striving to
-keep the flames under.
-
-"That's it!" cried Hatherley, in intense excitement. "There is
-the gravel-drive, and there are the rose-bushes where I lay. That
-second window is the one that I jumped from."
-
-"Well, at least," said Holmes, "you have had your revenge upon
-them. There can be no question that it was your oil-lamp which,
-when it was crushed in the press, set fire to the wooden walls,
-though no doubt they were too excited in the chase after you to
-observe it at the time. Now keep your eyes open in this crowd for
-your friends of last night, though I very much fear that they are
-a good hundred miles off by now."
-
-And Holmes' fears came to be realised, for from that day to this
-no word has ever been heard either of the beautiful woman, the
-sinister German, or the morose Englishman. Early that morning a
-peasant had met a cart containing several people and some very
-bulky boxes driving rapidly in the direction of Reading, but
-there all traces of the fugitives disappeared, and even Holmes'
-ingenuity failed ever to discover the least clue as to their
-whereabouts.
-
-The firemen had been much perturbed at the strange arrangements
-which they had found within, and still more so by discovering a
-newly severed human thumb upon a window-sill of the second floor.
-About sunset, however, their efforts were at last successful, and
-they subdued the flames, but not before the roof had fallen in,
-and the whole place been reduced to such absolute ruin that, save
-some twisted cylinders and iron piping, not a trace remained of
-the machinery which had cost our unfortunate acquaintance so
-dearly. Large masses of nickel and of tin were discovered stored
-in an out-house, but no coins were to be found, which may have
-explained the presence of those bulky boxes which have been
-already referred to.
-
-How our hydraulic engineer had been conveyed from the garden to
-the spot where he recovered his senses might have remained
-forever a mystery were it not for the soft mould, which told us a
-very plain tale. He had evidently been carried down by two
-persons, one of whom had remarkably small feet and the other
-unusually large ones. On the whole, it was most probable that the
-silent Englishman, being less bold or less murderous than his
-companion, had assisted the woman to bear the unconscious man out
-of the way of danger.
-
-"Well," said our engineer ruefully as we took our seats to return
-once more to London, "it has been a pretty business for me! I
-have lost my thumb and I have lost a fifty-guinea fee, and what
-have I gained?"
-
-"Experience," said Holmes, laughing. "Indirectly it may be of
-value, you know; you have only to put it into words to gain the
-reputation of being excellent company for the remainder of your
-existence."
-
-
-
-X. THE ADVENTURE OF THE NOBLE BACHELOR
-
-The Lord St. Simon marriage, and its curious termination, have
-long ceased to be a subject of interest in those exalted circles
-in which the unfortunate bridegroom moves. Fresh scandals have
-eclipsed it, and their more piquant details have drawn the
-gossips away from this four-year-old drama. As I have reason to
-believe, however, that the full facts have never been revealed to
-the general public, and as my friend Sherlock Holmes had a
-considerable share in clearing the matter up, I feel that no
-memoir of him would be complete without some little sketch of
-this remarkable episode.
-
-It was a few weeks before my own marriage, during the days when I
-was still sharing rooms with Holmes in Baker Street, that he came
-home from an afternoon stroll to find a letter on the table
-waiting for him. I had remained indoors all day, for the weather
-had taken a sudden turn to rain, with high autumnal winds, and
-the Jezail bullet which I had brought back in one of my limbs as
-a relic of my Afghan campaign throbbed with dull persistence.
-With my body in one easy-chair and my legs upon another, I had
-surrounded myself with a cloud of newspapers until at last,
-saturated with the news of the day, I tossed them all aside and
-lay listless, watching the huge crest and monogram upon the
-envelope upon the table and wondering lazily who my friend's
-noble correspondent could be.
-
-"Here is a very fashionable epistle," I remarked as he entered.
-"Your morning letters, if I remember right, were from a
-fish-monger and a tide-waiter."
-
-"Yes, my correspondence has certainly the charm of variety," he
-answered, smiling, "and the humbler are usually the more
-interesting. This looks like one of those unwelcome social
-summonses which call upon a man either to be bored or to lie."
-
-He broke the seal and glanced over the contents.
-
-"Oh, come, it may prove to be something of interest, after all."
-
-"Not social, then?"
-
-"No, distinctly professional."
-
-"And from a noble client?"
-
-"One of the highest in England."
-
-"My dear fellow, I congratulate you."
-
-"I assure you, Watson, without affectation, that the status of my
-client is a matter of less moment to me than the interest of his
-case. It is just possible, however, that that also may not be
-wanting in this new investigation. You have been reading the
-papers diligently of late, have you not?"
-
-"It looks like it," said I ruefully, pointing to a huge bundle in
-the corner. "I have had nothing else to do."
-
-"It is fortunate, for you will perhaps be able to post me up. I
-read nothing except the criminal news and the agony column. The
-latter is always instructive. But if you have followed recent
-events so closely you must have read about Lord St. Simon and his
-wedding?"
-
-"Oh, yes, with the deepest interest."
-
-"That is well. The letter which I hold in my hand is from Lord
-St. Simon. I will read it to you, and in return you must turn
-over these papers and let me have whatever bears upon the matter.
-This is what he says:
-
-"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
-may place implicit reliance upon your judgment and discretion. I
-have determined, therefore, to call upon you and to consult you
-in reference to the very painful event which has occurred in
-connection with my wedding. Mr. Lestrade, of Scotland Yard, is
-acting already in the matter, but he assures me that he sees no
-objection to your co-operation, and that he even thinks that
-it might be of some assistance. I will call at four o'clock in
-the afternoon, and, should you have any other engagement at that
-time, I hope that you will postpone it, as this matter is of
-paramount importance. Yours faithfully, ST. SIMON.'
-
-"It is dated from Grosvenor Mansions, written with a quill pen,
-and the noble lord has had the misfortune to get a smear of ink
-upon the outer side of his right little finger," remarked Holmes
-as he folded up the epistle.
-
-"He says four o'clock. It is three now. He will be here in an
-hour."
-
-"Then I have just time, with your assistance, to get clear upon
-the subject. Turn over those papers and arrange the extracts in
-their order of time, while I take a glance as to who our client
-is." He picked a red-covered volume from a line of books of
-reference beside the mantelpiece. "Here he is," said he, sitting
-down and flattening it out upon his knee. "'Lord Robert Walsingham
-de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
-Azure, three caltrops in chief over a fess sable. Born in 1846.'
-He's forty-one years of age, which is mature for marriage. Was
-Under-Secretary for the colonies in a late administration. The
-Duke, his father, was at one time Secretary for Foreign Affairs.
-They inherit Plantagenet blood by direct descent, and Tudor on
-the distaff side. Ha! Well, there is nothing very instructive in
-all this. I think that I must turn to you Watson, for something
-more solid."
-
-"I have very little difficulty in finding what I want," said I,
-"for the facts are quite recent, and the matter struck me as
-remarkable. I feared to refer them to you, however, as I knew
-that you had an inquiry on hand and that you disliked the
-intrusion of other matters."
-
-"Oh, you mean the little problem of the Grosvenor Square
-furniture van. That is quite cleared up now--though, indeed, it
-was obvious from the first. Pray give me the results of your
-newspaper selections."
-
-"Here is the first notice which I can find. It is in the personal
-column of the Morning Post, and dates, as you see, some weeks
-back: 'A marriage has been arranged,' it says, 'and will, if
-rumour is correct, very shortly take place, between Lord Robert
-St. Simon, second son of the Duke of Balmoral, and Miss Hatty
-Doran, the only daughter of Aloysius Doran. Esq., of San
-Francisco, Cal., U.S.A.' That is all."
-
-"Terse and to the point," remarked Holmes, stretching his long,
-thin legs towards the fire.
-
-"There was a paragraph amplifying this in one of the society
-papers of the same week. Ah, here it is: 'There will soon be a
-call for protection in the marriage market, for the present
-free-trade principle appears to tell heavily against our home
-product. One by one the management of the noble houses of Great
-Britain is passing into the hands of our fair cousins from across
-the Atlantic. An important addition has been made during the last
-week to the list of the prizes which have been borne away by
-these charming invaders. Lord St. Simon, who has shown himself
-for over twenty years proof against the little god's arrows, has
-now definitely announced his approaching marriage with Miss Hatty
-Doran, the fascinating daughter of a California millionaire. Miss
-Doran, whose graceful figure and striking face attracted much
-attention at the Westbury House festivities, is an only child,
-and it is currently reported that her dowry will run to
-considerably over the six figures, with expectancies for the
-future. As it is an open secret that the Duke of Balmoral has
-been compelled to sell his pictures within the last few years,
-and as Lord St. Simon has no property of his own save the small
-estate of Birchmoor, it is obvious that the Californian heiress
-is not the only gainer by an alliance which will enable her to
-make the easy and common transition from a Republican lady to a
-British peeress.'"
-
-"Anything else?" asked Holmes, yawning.
-
-"Oh, yes; plenty. Then there is another note in the Morning Post
-to say that the marriage would be an absolutely quiet one, that it
-would be at St. George's, Hanover Square, that only half a dozen
-intimate friends would be invited, and that the party would
-return to the furnished house at Lancaster Gate which has been
-taken by Mr. Aloysius Doran. Two days later--that is, on
-Wednesday last--there is a curt announcement that the wedding had
-taken place, and that the honeymoon would be passed at Lord
-Backwater's place, near Petersfield. Those are all the notices
-which appeared before the disappearance of the bride."
-
-"Before the what?" asked Holmes with a start.
-
-"The vanishing of the lady."
-
-"When did she vanish, then?"
-
-"At the wedding breakfast."
-
-"Indeed. This is more interesting than it promised to be; quite
-dramatic, in fact."
-
-"Yes; it struck me as being a little out of the common."
-
-"They often vanish before the ceremony, and occasionally during
-the honeymoon; but I cannot call to mind anything quite so prompt
-as this. Pray let me have the details."
-
-"I warn you that they are very incomplete."
-
-"Perhaps we may make them less so."
-
-"Such as they are, they are set forth in a single article of a
-morning paper of yesterday, which I will read to you. It is
-headed, 'Singular Occurrence at a Fashionable Wedding':
-
-"'The family of Lord Robert St. Simon has been thrown into the
-greatest consternation by the strange and painful episodes which
-have taken place in connection with his wedding. The ceremony, as
-shortly announced in the papers of yesterday, occurred on the
-previous morning; but it is only now that it has been possible to
-confirm the strange rumours which have been so persistently
-floating about. In spite of the attempts of the friends to hush
-the matter up, so much public attention has now been drawn to it
-that no good purpose can be served by affecting to disregard what
-is a common subject for conversation.
-
-"'The ceremony, which was performed at St. George's, Hanover
-Square, was a very quiet one, no one being present save the
-father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
-Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
-younger brother and sister of the bridegroom), and Lady Alicia
-Whittington. The whole party proceeded afterwards to the house of
-Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
-prepared. It appears that some little trouble was caused by a
-woman, whose name has not been ascertained, who endeavoured to
-force her way into the house after the bridal party, alleging
-that she had some claim upon Lord St. Simon. It was only after a
-painful and prolonged scene that she was ejected by the butler
-and the footman. The bride, who had fortunately entered the house
-before this unpleasant interruption, had sat down to breakfast
-with the rest, when she complained of a sudden indisposition and
-retired to her room. Her prolonged absence having caused some
-comment, her father followed her, but learned from her maid that
-she had only come up to her chamber for an instant, caught up an
-ulster and bonnet, and hurried down to the passage. One of the
-footmen declared that he had seen a lady leave the house thus
-apparelled, but had refused to credit that it was his mistress,
-believing her to be with the company. On ascertaining that his
-daughter had disappeared, Mr. Aloysius Doran, in conjunction with
-the bridegroom, instantly put themselves in communication with
-the police, and very energetic inquiries are being made, which
-will probably result in a speedy clearing up of this very
-singular business. Up to a late hour last night, however, nothing
-had transpired as to the whereabouts of the missing lady. There
-are rumours of foul play in the matter, and it is said that the
-police have caused the arrest of the woman who had caused the
-original disturbance, in the belief that, from jealousy or some
-other motive, she may have been concerned in the strange
-disappearance of the bride.'"
-
-"And is that all?"
-
-"Only one little item in another of the morning papers, but it is
-a suggestive one."
-
-"And it is--"
-
-"That Miss Flora Millar, the lady who had caused the disturbance,
-has actually been arrested. It appears that she was formerly a
-danseuse at the Allegro, and that she has known the bridegroom
-for some years. There are no further particulars, and the whole
-case is in your hands now--so far as it has been set forth in the
-public press."
-
-"And an exceedingly interesting case it appears to be. I would
-not have missed it for worlds. But there is a ring at the bell,
-Watson, and as the clock makes it a few minutes after four, I
-have no doubt that this will prove to be our noble client. Do not
-dream of going, Watson, for I very much prefer having a witness,
-if only as a check to my own memory."
-
-"Lord Robert St. Simon," announced our page-boy, throwing open
-the door. A gentleman entered, with a pleasant, cultured face,
-high-nosed and pale, with something perhaps of petulance about
-the mouth, and with the steady, well-opened eye of a man whose
-pleasant lot it had ever been to command and to be obeyed. His
-manner was brisk, and yet his general appearance gave an undue
-impression of age, for he had a slight forward stoop and a little
-bend of the knees as he walked. His hair, too, as he swept off
-his very curly-brimmed hat, was grizzled round the edges and thin
-upon the top. As to his dress, it was careful to the verge of
-foppishness, with high collar, black frock-coat, white waistcoat,
-yellow gloves, patent-leather shoes, and light-coloured gaiters.
-He advanced slowly into the room, turning his head from left to
-right, and swinging in his right hand the cord which held his
-golden eyeglasses.
-
-"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
-take the basket-chair. This is my friend and colleague, Dr.
-Watson. Draw up a little to the fire, and we will talk this
-matter over."
-
-"A most painful matter to me, as you can most readily imagine,
-Mr. Holmes. I have been cut to the quick. I understand that you
-have already managed several delicate cases of this sort, sir,
-though I presume that they were hardly from the same class of
-society."
-
-"No, I am descending."
-
-"I beg pardon."
-
-"My last client of the sort was a king."
-
-"Oh, really! I had no idea. And which king?"
-
-"The King of Scandinavia."
-
-"What! Had he lost his wife?"
-
-"You can understand," said Holmes suavely, "that I extend to the
-affairs of my other clients the same secrecy which I promise to
-you in yours."
-
-"Of course! Very right! very right! I'm sure I beg pardon. As to
-my own case, I am ready to give you any information which may
-assist you in forming an opinion."
-
-"Thank you. I have already learned all that is in the public
-prints, nothing more. I presume that I may take it as correct--this
-article, for example, as to the disappearance of the bride."
-
-Lord St. Simon glanced over it. "Yes, it is correct, as far as it
-goes."
-
-"But it needs a great deal of supplementing before anyone could
-offer an opinion. I think that I may arrive at my facts most
-directly by questioning you."
-
-"Pray do so."
-
-"When did you first meet Miss Hatty Doran?"
-
-"In San Francisco, a year ago."
-
-"You were travelling in the States?"
-
-"Yes."
-
-"Did you become engaged then?"
-
-"No."
-
-"But you were on a friendly footing?"
-
-"I was amused by her society, and she could see that I was
-amused."
-
-"Her father is very rich?"
-
-"He is said to be the richest man on the Pacific slope."
-
-"And how did he make his money?"
-
-"In mining. He had nothing a few years ago. Then he struck gold,
-invested it, and came up by leaps and bounds."
-
-"Now, what is your own impression as to the young lady's--your
-wife's character?"
-
-The nobleman swung his glasses a little faster and stared down
-into the fire. "You see, Mr. Holmes," said he, "my wife was
-twenty before her father became a rich man. During that time she
-ran free in a mining camp and wandered through woods or
-mountains, so that her education has come from Nature rather than
-from the schoolmaster. She is what we call in England a tomboy,
-with a strong nature, wild and free, unfettered by any sort of
-traditions. She is impetuous--volcanic, I was about to say. She
-is swift in making up her mind and fearless in carrying out her
-resolutions. On the other hand, I would not have given her the
-name which I have the honour to bear"--he gave a little stately
-cough--"had not I thought her to be at bottom a noble woman. I
-believe that she is capable of heroic self-sacrifice and that
-anything dishonourable would be repugnant to her."
-
-"Have you her photograph?"
-
-"I brought this with me." He opened a locket and showed us the
-full face of a very lovely woman. It was not a photograph but an
-ivory miniature, and the artist had brought out the full effect
-of the lustrous black hair, the large dark eyes, and the
-exquisite mouth. Holmes gazed long and earnestly at it. Then he
-closed the locket and handed it back to Lord St. Simon.
-
-"The young lady came to London, then, and you renewed your
-acquaintance?"
-
-"Yes, her father brought her over for this last London season. I
-met her several times, became engaged to her, and have now
-married her."
-
-"She brought, I understand, a considerable dowry?"
-
-"A fair dowry. Not more than is usual in my family."
-
-"And this, of course, remains to you, since the marriage is a
-fait accompli?"
-
-"I really have made no inquiries on the subject."
-
-"Very naturally not. Did you see Miss Doran on the day before the
-wedding?"
-
-"Yes."
-
-"Was she in good spirits?"
-
-"Never better. She kept talking of what we should do in our
-future lives."
-
-"Indeed! That is very interesting. And on the morning of the
-wedding?"
-
-"She was as bright as possible--at least until after the
-ceremony."
-
-"And did you observe any change in her then?"
-
-"Well, to tell the truth, I saw then the first signs that I had
-ever seen that her temper was just a little sharp. The incident
-however, was too trivial to relate and can have no possible
-bearing upon the case."
-
-"Pray let us have it, for all that."
-
-"Oh, it is childish. She dropped her bouquet as we went towards
-the vestry. She was passing the front pew at the time, and it
-fell over into the pew. There was a moment's delay, but the
-gentleman in the pew handed it up to her again, and it did not
-appear to be the worse for the fall. Yet when I spoke to her of
-the matter, she answered me abruptly; and in the carriage, on our
-way home, she seemed absurdly agitated over this trifling cause."
-
-"Indeed! You say that there was a gentleman in the pew. Some of
-the general public were present, then?"
-
-"Oh, yes. It is impossible to exclude them when the church is
-open."
-
-"This gentleman was not one of your wife's friends?"
-
-"No, no; I call him a gentleman by courtesy, but he was quite a
-common-looking person. I hardly noticed his appearance. But
-really I think that we are wandering rather far from the point."
-
-"Lady St. Simon, then, returned from the wedding in a less
-cheerful frame of mind than she had gone to it. What did she do
-on re-entering her father's house?"
-
-"I saw her in conversation with her maid."
-
-"And who is her maid?"
-
-"Alice is her name. She is an American and came from California
-with her."
-
-"A confidential servant?"
-
-"A little too much so. It seemed to me that her mistress allowed
-her to take great liberties. Still, of course, in America they
-look upon these things in a different way."
-
-"How long did she speak to this Alice?"
-
-"Oh, a few minutes. I had something else to think of."
-
-"You did not overhear what they said?"
-
-"Lady St. Simon said something about 'jumping a claim.' She was
-accustomed to use slang of the kind. I have no idea what she
-meant."
-
-"American slang is very expressive sometimes. And what did your
-wife do when she finished speaking to her maid?"
-
-"She walked into the breakfast-room."
-
-"On your arm?"
-
-"No, alone. She was very independent in little matters like that.
-Then, after we had sat down for ten minutes or so, she rose
-hurriedly, muttered some words of apology, and left the room. She
-never came back."
-
-"But this maid, Alice, as I understand, deposes that she went to
-her room, covered her bride's dress with a long ulster, put on a
-bonnet, and went out."
-
-"Quite so. And she was afterwards seen walking into Hyde Park in
-company with Flora Millar, a woman who is now in custody, and who
-had already made a disturbance at Mr. Doran's house that
-morning."
-
-"Ah, yes. I should like a few particulars as to this young lady,
-and your relations to her."
-
-Lord St. Simon shrugged his shoulders and raised his eyebrows.
-"We have been on a friendly footing for some years--I may say on
-a very friendly footing. She used to be at the Allegro. I have
-not treated her ungenerously, and she had no just cause of
-complaint against me, but you know what women are, Mr. Holmes.
-Flora was a dear little thing, but exceedingly hot-headed and
-devotedly attached to me. She wrote me dreadful letters when she
-heard that I was about to be married, and, to tell the truth, the
-reason why I had the marriage celebrated so quietly was that I
-feared lest there might be a scandal in the church. She came to
-Mr. Doran's door just after we returned, and she endeavoured to
-push her way in, uttering very abusive expressions towards my
-wife, and even threatening her, but I had foreseen the
-possibility of something of the sort, and I had two police
-fellows there in private clothes, who soon pushed her out again.
-She was quiet when she saw that there was no good in making a
-row."
-
-"Did your wife hear all this?"
-
-"No, thank goodness, she did not."
-
-"And she was seen walking with this very woman afterwards?"
-
-"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
-so serious. It is thought that Flora decoyed my wife out and laid
-some terrible trap for her."
-
-"Well, it is a possible supposition."
-
-"You think so, too?"
-
-"I did not say a probable one. But you do not yourself look upon
-this as likely?"
-
-"I do not think Flora would hurt a fly."
-
-"Still, jealousy is a strange transformer of characters. Pray
-what is your own theory as to what took place?"
-
-"Well, really, I came to seek a theory, not to propound one. I
-have given you all the facts. Since you ask me, however, I may
-say that it has occurred to me as possible that the excitement of
-this affair, the consciousness that she had made so immense a
-social stride, had the effect of causing some little nervous
-disturbance in my wife."
-
-"In short, that she had become suddenly deranged?"
-
-"Well, really, when I consider that she has turned her back--I
-will not say upon me, but upon so much that many have aspired to
-without success--I can hardly explain it in any other fashion."
-
-"Well, certainly that is also a conceivable hypothesis," said
-Holmes, smiling. "And now, Lord St. Simon, I think that I have
-nearly all my data. May I ask whether you were seated at the
-breakfast-table so that you could see out of the window?"
-
-"We could see the other side of the road and the Park."
-
-"Quite so. Then I do not think that I need to detain you longer.
-I shall communicate with you."
-
-"Should you be fortunate enough to solve this problem," said our
-client, rising.
-
-"I have solved it."
-
-"Eh? What was that?"
-
-"I say that I have solved it."
-
-"Where, then, is my wife?"
-
-"That is a detail which I shall speedily supply."
-
-Lord St. Simon shook his head. "I am afraid that it will take
-wiser heads than yours or mine," he remarked, and bowing in a
-stately, old-fashioned manner he departed.
-
-"It is very good of Lord St. Simon to honour my head by putting
-it on a level with his own," said Sherlock Holmes, laughing. "I
-think that I shall have a whisky and soda and a cigar after all
-this cross-questioning. I had formed my conclusions as to the
-case before our client came into the room."
-
-"My dear Holmes!"
-
-"I have notes of several similar cases, though none, as I
-remarked before, which were quite as prompt. My whole examination
-served to turn my conjecture into a certainty. Circumstantial
-evidence is occasionally very convincing, as when you find a
-trout in the milk, to quote Thoreau's example."
-
-"But I have heard all that you have heard."
-
-"Without, however, the knowledge of pre-existing cases which
-serves me so well. There was a parallel instance in Aberdeen some
-years back, and something on very much the same lines at Munich
-the year after the Franco-Prussian War. It is one of these
-cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
-You will find an extra tumbler upon the sideboard, and there are
-cigars in the box."
-
-The official detective was attired in a pea-jacket and cravat,
-which gave him a decidedly nautical appearance, and he carried a
-black canvas bag in his hand. With a short greeting he seated
-himself and lit the cigar which had been offered to him.
-
-"What's up, then?" asked Holmes with a twinkle in his eye. "You
-look dissatisfied."
-
-"And I feel dissatisfied. It is this infernal St. Simon marriage
-case. I can make neither head nor tail of the business."
-
-"Really! You surprise me."
-
-"Who ever heard of such a mixed affair? Every clue seems to slip
-through my fingers. I have been at work upon it all day."
-
-"And very wet it seems to have made you," said Holmes laying his
-hand upon the arm of the pea-jacket.
-
-"Yes, I have been dragging the Serpentine."
-
-"In heaven's name, what for?"
-
-"In search of the body of Lady St. Simon."
-
-Sherlock Holmes leaned back in his chair and laughed heartily.
-
-"Have you dragged the basin of Trafalgar Square fountain?" he
-asked.
-
-"Why? What do you mean?"
-
-"Because you have just as good a chance of finding this lady in
-the one as in the other."
-
-Lestrade shot an angry glance at my companion. "I suppose you
-know all about it," he snarled.
-
-"Well, I have only just heard the facts, but my mind is made up."
-
-"Oh, indeed! Then you think that the Serpentine plays no part in
-the matter?"
-
-"I think it very unlikely."
-
-"Then perhaps you will kindly explain how it is that we found
-this in it?" He opened his bag as he spoke, and tumbled onto the
-floor a wedding-dress of watered silk, a pair of white satin
-shoes and a bride's wreath and veil, all discoloured and soaked
-in water. "There," said he, putting a new wedding-ring upon the
-top of the pile. "There is a little nut for you to crack, Master
-Holmes."
-
-"Oh, indeed!" said my friend, blowing blue rings into the air.
-"You dragged them from the Serpentine?"
-
-"No. They were found floating near the margin by a park-keeper.
-They have been identified as her clothes, and it seemed to me
-that if the clothes were there the body would not be far off."
-
-"By the same brilliant reasoning, every man's body is to be found
-in the neighbourhood of his wardrobe. And pray what did you hope
-to arrive at through this?"
-
-"At some evidence implicating Flora Millar in the disappearance."
-
-"I am afraid that you will find it difficult."
-
-"Are you, indeed, now?" cried Lestrade with some bitterness. "I
-am afraid, Holmes, that you are not very practical with your
-deductions and your inferences. You have made two blunders in as
-many minutes. This dress does implicate Miss Flora Millar."
-
-"And how?"
-
-"In the dress is a pocket. In the pocket is a card-case. In the
-card-case is a note. And here is the very note." He slapped it
-down upon the table in front of him. "Listen to this: 'You will
-see me when all is ready. Come at once. F.H.M.' Now my theory all
-along has been that Lady St. Simon was decoyed away by Flora
-Millar, and that she, with confederates, no doubt, was
-responsible for her disappearance. Here, signed with her
-initials, is the very note which was no doubt quietly slipped
-into her hand at the door and which lured her within their
-reach."
-
-"Very good, Lestrade," said Holmes, laughing. "You really are
-very fine indeed. Let me see it." He took up the paper in a
-listless way, but his attention instantly became riveted, and he
-gave a little cry of satisfaction. "This is indeed important,"
-said he.
-
-"Ha! you find it so?"
-
-"Extremely so. I congratulate you warmly."
-
-Lestrade rose in his triumph and bent his head to look. "Why," he
-shrieked, "you're looking at the wrong side!"
-
-"On the contrary, this is the right side."
-
-"The right side? You're mad! Here is the note written in pencil
-over here."
-
-"And over here is what appears to be the fragment of a hotel
-bill, which interests me deeply."
-
-"There's nothing in it. I looked at it before," said Lestrade.
-"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
-6d., glass sherry, 8d.' I see nothing in that."
-
-"Very likely not. It is most important, all the same. As to the
-note, it is important also, or at least the initials are, so I
-congratulate you again."
-
-"I've wasted time enough," said Lestrade, rising. "I believe in
-hard work and not in sitting by the fire spinning fine theories.
-Good-day, Mr. Holmes, and we shall see which gets to the bottom
-of the matter first." He gathered up the garments, thrust them
-into the bag, and made for the door.
-
-"Just one hint to you, Lestrade," drawled Holmes before his rival
-vanished; "I will tell you the true solution of the matter. Lady
-St. Simon is a myth. There is not, and there never has been, any
-such person."
-
-Lestrade looked sadly at my companion. Then he turned to me,
-tapped his forehead three times, shook his head solemnly, and
-hurried away.
-
-He had hardly shut the door behind him when Holmes rose to put on
-his overcoat. "There is something in what the fellow says about
-outdoor work," he remarked, "so I think, Watson, that I must
-leave you to your papers for a little."
-
-It was after five o'clock when Sherlock Holmes left me, but I had
-no time to be lonely, for within an hour there arrived a
-confectioner's man with a very large flat box. This he unpacked
-with the help of a youth whom he had brought with him, and
-presently, to my very great astonishment, a quite epicurean
-little cold supper began to be laid out upon our humble
-lodging-house mahogany. There were a couple of brace of cold
-woodcock, a pheasant, a pâté de foie gras pie with a group of
-ancient and cobwebby bottles. Having laid out all these luxuries,
-my two visitors vanished away, like the genii of the Arabian
-Nights, with no explanation save that the things had been paid
-for and were ordered to this address.
-
-Just before nine o'clock Sherlock Holmes stepped briskly into the
-room. His features were gravely set, but there was a light in his
-eye which made me think that he had not been disappointed in his
-conclusions.
-
-"They have laid the supper, then," he said, rubbing his hands.
-
-"You seem to expect company. They have laid for five."
-
-"Yes, I fancy we may have some company dropping in," said he. "I
-am surprised that Lord St. Simon has not already arrived. Ha! I
-fancy that I hear his step now upon the stairs."
-
-It was indeed our visitor of the afternoon who came bustling in,
-dangling his glasses more vigorously than ever, and with a very
-perturbed expression upon his aristocratic features.
-
-"My messenger reached you, then?" asked Holmes.
-
-"Yes, and I confess that the contents startled me beyond measure.
-Have you good authority for what you say?"
-
-"The best possible."
-
-Lord St. Simon sank into a chair and passed his hand over his
-forehead.
-
-"What will the Duke say," he murmured, "when he hears that one of
-the family has been subjected to such humiliation?"
-
-"It is the purest accident. I cannot allow that there is any
-humiliation."
-
-"Ah, you look on these things from another standpoint."
-
-"I fail to see that anyone is to blame. I can hardly see how the
-lady could have acted otherwise, though her abrupt method of
-doing it was undoubtedly to be regretted. Having no mother, she
-had no one to advise her at such a crisis."
-
-"It was a slight, sir, a public slight," said Lord St. Simon,
-tapping his fingers upon the table.
-
-"You must make allowance for this poor girl, placed in so
-unprecedented a position."
-
-"I will make no allowance. I am very angry indeed, and I have
-been shamefully used."
-
-"I think that I heard a ring," said Holmes. "Yes, there are steps
-on the landing. If I cannot persuade you to take a lenient view
-of the matter, Lord St. Simon, I have brought an advocate here
-who may be more successful." He opened the door and ushered in a
-lady and gentleman. "Lord St. Simon," said he "allow me to
-introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
-think, you have already met."
-
-At the sight of these newcomers our client had sprung from his
-seat and stood very erect, with his eyes cast down and his hand
-thrust into the breast of his frock-coat, a picture of offended
-dignity. The lady had taken a quick step forward and had held out
-her hand to him, but he still refused to raise his eyes. It was
-as well for his resolution, perhaps, for her pleading face was
-one which it was hard to resist.
-
-"You're angry, Robert," said she. "Well, I guess you have every
-cause to be."
-
-"Pray make no apology to me," said Lord St. Simon bitterly.
-
-"Oh, yes, I know that I have treated you real bad and that I
-should have spoken to you before I went; but I was kind of
-rattled, and from the time when I saw Frank here again I just
-didn't know what I was doing or saying. I only wonder I didn't
-fall down and do a faint right there before the altar."
-
-"Perhaps, Mrs. Moulton, you would like my friend and me to leave
-the room while you explain this matter?"
-
-"If I may give an opinion," remarked the strange gentleman,
-"we've had just a little too much secrecy over this business
-already. For my part, I should like all Europe and America to
-hear the rights of it." He was a small, wiry, sunburnt man,
-clean-shaven, with a sharp face and alert manner.
-
-"Then I'll tell our story right away," said the lady. "Frank here
-and I met in '84, in McQuire's camp, near the Rockies, where pa
-was working a claim. We were engaged to each other, Frank and I;
-but then one day father struck a rich pocket and made a pile,
-while poor Frank here had a claim that petered out and came to
-nothing. The richer pa grew the poorer was Frank; so at last pa
-wouldn't hear of our engagement lasting any longer, and he took
-me away to 'Frisco. Frank wouldn't throw up his hand, though; so
-he followed me there, and he saw me without pa knowing anything
-about it. It would only have made him mad to know, so we just
-fixed it all up for ourselves. Frank said that he would go and
-make his pile, too, and never come back to claim me until he had
-as much as pa. So then I promised to wait for him to the end of
-time and pledged myself not to marry anyone else while he lived.
-'Why shouldn't we be married right away, then,' said he, 'and
-then I will feel sure of you; and I won't claim to be your
-husband until I come back?' Well, we talked it over, and he had
-fixed it all up so nicely, with a clergyman all ready in waiting,
-that we just did it right there; and then Frank went off to seek
-his fortune, and I went back to pa.
-
-"The next I heard of Frank was that he was in Montana, and then
-he went prospecting in Arizona, and then I heard of him from New
-Mexico. After that came a long newspaper story about how a
-miners' camp had been attacked by Apache Indians, and there was
-my Frank's name among the killed. I fainted dead away, and I was
-very sick for months after. Pa thought I had a decline and took
-me to half the doctors in 'Frisco. Not a word of news came for a
-year and more, so that I never doubted that Frank was really
-dead. Then Lord St. Simon came to 'Frisco, and we came to London,
-and a marriage was arranged, and pa was very pleased, but I felt
-all the time that no man on this earth would ever take the place
-in my heart that had been given to my poor Frank.
-
-"Still, if I had married Lord St. Simon, of course I'd have done
-my duty by him. We can't command our love, but we can our
-actions. I went to the altar with him with the intention to make
-him just as good a wife as it was in me to be. But you may
-imagine what I felt when, just as I came to the altar rails, I
-glanced back and saw Frank standing and looking at me out of the
-first pew. I thought it was his ghost at first; but when I looked
-again there he was still, with a kind of question in his eyes, as
-if to ask me whether I were glad or sorry to see him. I wonder I
-didn't drop. I know that everything was turning round, and the
-words of the clergyman were just like the buzz of a bee in my
-ear. I didn't know what to do. Should I stop the service and make
-a scene in the church? I glanced at him again, and he seemed to
-know what I was thinking, for he raised his finger to his lips to
-tell me to be still. Then I saw him scribble on a piece of paper,
-and I knew that he was writing me a note. As I passed his pew on
-the way out I dropped my bouquet over to him, and he slipped the
-note into my hand when he returned me the flowers. It was only a
-line asking me to join him when he made the sign to me to do so.
-Of course I never doubted for a moment that my first duty was now
-to him, and I determined to do just whatever he might direct.
-
-"When I got back I told my maid, who had known him in California,
-and had always been his friend. I ordered her to say nothing, but
-to get a few things packed and my ulster ready. I know I ought to
-have spoken to Lord St. Simon, but it was dreadful hard before
-his mother and all those great people. I just made up my mind to
-run away and explain afterwards. I hadn't been at the table ten
-minutes before I saw Frank out of the window at the other side of
-the road. He beckoned to me and then began walking into the Park.
-I slipped out, put on my things, and followed him. Some woman
-came talking something or other about Lord St. Simon to
-me--seemed to me from the little I heard as if he had a little
-secret of his own before marriage also--but I managed to get away
-from her and soon overtook Frank. We got into a cab together, and
-away we drove to some lodgings he had taken in Gordon Square, and
-that was my true wedding after all those years of waiting. Frank
-had been a prisoner among the Apaches, had escaped, came on to
-'Frisco, found that I had given him up for dead and had gone to
-England, followed me there, and had come upon me at last on the
-very morning of my second wedding."
-
-"I saw it in a paper," explained the American. "It gave the name
-and the church but not where the lady lived."
-
-"Then we had a talk as to what we should do, and Frank was all
-for openness, but I was so ashamed of it all that I felt as if I
-should like to vanish away and never see any of them again--just
-sending a line to pa, perhaps, to show him that I was alive. It
-was awful to me to think of all those lords and ladies sitting
-round that breakfast-table and waiting for me to come back. So
-Frank took my wedding-clothes and things and made a bundle of
-them, so that I should not be traced, and dropped them away
-somewhere where no one could find them. It is likely that we
-should have gone on to Paris to-morrow, only that this good
-gentleman, Mr. Holmes, came round to us this evening, though how
-he found us is more than I can think, and he showed us very
-clearly and kindly that I was wrong and that Frank was right, and
-that we should be putting ourselves in the wrong if we were so
-secret. Then he offered to give us a chance of talking to Lord
-St. Simon alone, and so we came right away round to his rooms at
-once. Now, Robert, you have heard it all, and I am very sorry if
-I have given you pain, and I hope that you do not think very
-meanly of me."
-
-Lord St. Simon had by no means relaxed his rigid attitude, but
-had listened with a frowning brow and a compressed lip to this
-long narrative.
-
-"Excuse me," he said, "but it is not my custom to discuss my most
-intimate personal affairs in this public manner."
-
-"Then you won't forgive me? You won't shake hands before I go?"
-
-"Oh, certainly, if it would give you any pleasure." He put out
-his hand and coldly grasped that which she extended to him.
-
-"I had hoped," suggested Holmes, "that you would have joined us
-in a friendly supper."
-
-"I think that there you ask a little too much," responded his
-Lordship. "I may be forced to acquiesce in these recent
-developments, but I can hardly be expected to make merry over
-them. I think that with your permission I will now wish you all a
-very good-night." He included us all in a sweeping bow and
-stalked out of the room.
-
-"Then I trust that you at least will honour me with your
-company," said Sherlock Holmes. "It is always a joy to meet an
-American, Mr. Moulton, for I am one of those who believe that the
-folly of a monarch and the blundering of a minister in far-gone
-years will not prevent our children from being some day citizens
-of the same world-wide country under a flag which shall be a
-quartering of the Union Jack with the Stars and Stripes."
-
-"The case has been an interesting one," remarked Holmes when our
-visitors had left us, "because it serves to show very clearly how
-simple the explanation may be of an affair which at first sight
-seems to be almost inexplicable. Nothing could be more natural
-than the sequence of events as narrated by this lady, and nothing
-stranger than the result when viewed, for instance, by Mr.
-Lestrade of Scotland Yard."
-
-"You were not yourself at fault at all, then?"
-
-"From the first, two facts were very obvious to me, the one that
-the lady had been quite willing to undergo the wedding ceremony,
-the other that she had repented of it within a few minutes of
-returning home. Obviously something had occurred during the
-morning, then, to cause her to change her mind. What could that
-something be? She could not have spoken to anyone when she was
-out, for she had been in the company of the bridegroom. Had she
-seen someone, then? If she had, it must be someone from America
-because she had spent so short a time in this country that she
-could hardly have allowed anyone to acquire so deep an influence
-over her that the mere sight of him would induce her to change
-her plans so completely. You see we have already arrived, by a
-process of exclusion, at the idea that she might have seen an
-American. Then who could this American be, and why should he
-possess so much influence over her? It might be a lover; it might
-be a husband. Her young womanhood had, I knew, been spent in
-rough scenes and under strange conditions. So far I had got
-before I ever heard Lord St. Simon's narrative. When he told us
-of a man in a pew, of the change in the bride's manner, of so
-transparent a device for obtaining a note as the dropping of a
-bouquet, of her resort to her confidential maid, and of her very
-significant allusion to claim-jumping--which in miners' parlance
-means taking possession of that which another person has a prior
-claim to--the whole situation became absolutely clear. She had
-gone off with a man, and the man was either a lover or was a
-previous husband--the chances being in favour of the latter."
-
-"And how in the world did you find them?"
-
-"It might have been difficult, but friend Lestrade held
-information in his hands the value of which he did not himself
-know. The initials were, of course, of the highest importance,
-but more valuable still was it to know that within a week he had
-settled his bill at one of the most select London hotels."
-
-"How did you deduce the select?"
-
-"By the select prices. Eight shillings for a bed and eightpence
-for a glass of sherry pointed to one of the most expensive
-hotels. There are not many in London which charge at that rate.
-In the second one which I visited in Northumberland Avenue, I
-learned by an inspection of the book that Francis H. Moulton, an
-American gentleman, had left only the day before, and on looking
-over the entries against him, I came upon the very items which I
-had seen in the duplicate bill. His letters were to be forwarded
-to 226 Gordon Square; so thither I travelled, and being fortunate
-enough to find the loving couple at home, I ventured to give them
-some paternal advice and to point out to them that it would be
-better in every way that they should make their position a little
-clearer both to the general public and to Lord St. Simon in
-particular. I invited them to meet him here, and, as you see, I
-made him keep the appointment."
-
-"But with no very good result," I remarked. "His conduct was
-certainly not very gracious."
-
-"Ah, Watson," said Holmes, smiling, "perhaps you would not be
-very gracious either, if, after all the trouble of wooing and
-wedding, you found yourself deprived in an instant of wife and of
-fortune. I think that we may judge Lord St. Simon very mercifully
-and thank our stars that we are never likely to find ourselves in
-the same position. Draw your chair up and hand me my violin, for
-the only problem we have still to solve is how to while away
-these bleak autumnal evenings."
-
-
-
-XI. THE ADVENTURE OF THE BERYL CORONET
-
-"Holmes," said I as I stood one morning in our bow-window looking
-down the street, "here is a madman coming along. It seems rather
-sad that his relatives should allow him to come out alone."
-
-My friend rose lazily from his armchair and stood with his hands
-in the pockets of his dressing-gown, looking over my shoulder. It
-was a bright, crisp February morning, and the snow of the day
-before still lay deep upon the ground, shimmering brightly in the
-wintry sun. Down the centre of Baker Street it had been ploughed
-into a brown crumbly band by the traffic, but at either side and
-on the heaped-up edges of the foot-paths it still lay as white as
-when it fell. The grey pavement had been cleaned and scraped, but
-was still dangerously slippery, so that there were fewer
-passengers than usual. Indeed, from the direction of the
-Metropolitan Station no one was coming save the single gentleman
-whose eccentric conduct had drawn my attention.
-
-He was a man of about fifty, tall, portly, and imposing, with a
-massive, strongly marked face and a commanding figure. He was
-dressed in a sombre yet rich style, in black frock-coat, shining
-hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
-his actions were in absurd contrast to the dignity of his dress
-and features, for he was running hard, with occasional little
-springs, such as a weary man gives who is little accustomed to
-set any tax upon his legs. As he ran he jerked his hands up and
-down, waggled his head, and writhed his face into the most
-extraordinary contortions.
-
-"What on earth can be the matter with him?" I asked. "He is
-looking up at the numbers of the houses."
-
-"I believe that he is coming here," said Holmes, rubbing his
-hands.
-
-"Here?"
-
-"Yes; I rather think he is coming to consult me professionally. I
-think that I recognise the symptoms. Ha! did I not tell you?" As
-he spoke, the man, puffing and blowing, rushed at our door and
-pulled at our bell until the whole house resounded with the
-clanging.
-
-A few moments later he was in our room, still puffing, still
-gesticulating, but with so fixed a look of grief and despair in
-his eyes that our smiles were turned in an instant to horror and
-pity. For a while he could not get his words out, but swayed his
-body and plucked at his hair like one who has been driven to the
-extreme limits of his reason. Then, suddenly springing to his
-feet, he beat his head against the wall with such force that we
-both rushed upon him and tore him away to the centre of the room.
-Sherlock Holmes pushed him down into the easy-chair and, sitting
-beside him, patted his hand and chatted with him in the easy,
-soothing tones which he knew so well how to employ.
-
-"You have come to me to tell your story, have you not?" said he.
-"You are fatigued with your haste. Pray wait until you have
-recovered yourself, and then I shall be most happy to look into
-any little problem which you may submit to me."
-
-The man sat for a minute or more with a heaving chest, fighting
-against his emotion. Then he passed his handkerchief over his
-brow, set his lips tight, and turned his face towards us.
-
-"No doubt you think me mad?" said he.
-
-"I see that you have had some great trouble," responded Holmes.
-
-"God knows I have!--a trouble which is enough to unseat my
-reason, so sudden and so terrible is it. Public disgrace I might
-have faced, although I am a man whose character has never yet
-borne a stain. Private affliction also is the lot of every man;
-but the two coming together, and in so frightful a form, have
-been enough to shake my very soul. Besides, it is not I alone.
-The very noblest in the land may suffer unless some way be found
-out of this horrible affair."
-
-"Pray compose yourself, sir," said Holmes, "and let me have a
-clear account of who you are and what it is that has befallen
-you."
-
-"My name," answered our visitor, "is probably familiar to your
-ears. I am Alexander Holder, of the banking firm of Holder &
-Stevenson, of Threadneedle Street."
-
-The name was indeed well known to us as belonging to the senior
-partner in the second largest private banking concern in the City
-of London. What could have happened, then, to bring one of the
-foremost citizens of London to this most pitiable pass? We
-waited, all curiosity, until with another effort he braced
-himself to tell his story.
-
-"I feel that time is of value," said he; "that is why I hastened
-here when the police inspector suggested that I should secure
-your co-operation. I came to Baker Street by the Underground and
-hurried from there on foot, for the cabs go slowly through this
-snow. That is why I was so out of breath, for I am a man who
-takes very little exercise. I feel better now, and I will put the
-facts before you as shortly and yet as clearly as I can.
-
-"It is, of course, well known to you that in a successful banking
-business as much depends upon our being able to find remunerative
-investments for our funds as upon our increasing our connection
-and the number of our depositors. One of our most lucrative means
-of laying out money is in the shape of loans, where the security
-is unimpeachable. We have done a good deal in this direction
-during the last few years, and there are many noble families to
-whom we have advanced large sums upon the security of their
-pictures, libraries, or plate.
-
-"Yesterday morning I was seated in my office at the bank when a
-card was brought in to me by one of the clerks. I started when I
-saw the name, for it was that of none other than--well, perhaps
-even to you I had better say no more than that it was a name
-which is a household word all over the earth--one of the highest,
-noblest, most exalted names in England. I was overwhelmed by the
-honour and attempted, when he entered, to say so, but he plunged
-at once into business with the air of a man who wishes to hurry
-quickly through a disagreeable task.
-
-"'Mr. Holder,' said he, 'I have been informed that you are in the
-habit of advancing money.'
-
-"'The firm does so when the security is good.' I answered.
-
-"'It is absolutely essential to me,' said he, 'that I should have
-50,000 pounds at once. I could, of course, borrow so trifling a
-sum ten times over from my friends, but I much prefer to make it
-a matter of business and to carry out that business myself. In my
-position you can readily understand that it is unwise to place
-one's self under obligations.'
-
-"'For how long, may I ask, do you want this sum?' I asked.
-
-"'Next Monday I have a large sum due to me, and I shall then most
-certainly repay what you advance, with whatever interest you
-think it right to charge. But it is very essential to me that the
-money should be paid at once.'
-
-"'I should be happy to advance it without further parley from my
-own private purse,' said I, 'were it not that the strain would be
-rather more than it could bear. If, on the other hand, I am to do
-it in the name of the firm, then in justice to my partner I must
-insist that, even in your case, every businesslike precaution
-should be taken.'
-
-"'I should much prefer to have it so,' said he, raising up a
-square, black morocco case which he had laid beside his chair.
-'You have doubtless heard of the Beryl Coronet?'
-
-"'One of the most precious public possessions of the empire,'
-said I.
-
-"'Precisely.' He opened the case, and there, imbedded in soft,
-flesh-coloured velvet, lay the magnificent piece of jewellery
-which he had named. 'There are thirty-nine enormous beryls,' said
-he, 'and the price of the gold chasing is incalculable. The
-lowest estimate would put the worth of the coronet at double the
-sum which I have asked. I am prepared to leave it with you as my
-security.'
-
-"I took the precious case into my hands and looked in some
-perplexity from it to my illustrious client.
-
-"'You doubt its value?' he asked.
-
-"'Not at all. I only doubt--'
-
-"'The propriety of my leaving it. You may set your mind at rest
-about that. I should not dream of doing so were it not absolutely
-certain that I should be able in four days to reclaim it. It is a
-pure matter of form. Is the security sufficient?'
-
-"'Ample.'
-
-"'You understand, Mr. Holder, that I am giving you a strong proof
-of the confidence which I have in you, founded upon all that I
-have heard of you. I rely upon you not only to be discreet and to
-refrain from all gossip upon the matter but, above all, to
-preserve this coronet with every possible precaution because I
-need not say that a great public scandal would be caused if any
-harm were to befall it. Any injury to it would be almost as
-serious as its complete loss, for there are no beryls in the
-world to match these, and it would be impossible to replace them.
-I leave it with you, however, with every confidence, and I shall
-call for it in person on Monday morning.'
-
-"Seeing that my client was anxious to leave, I said no more but,
-calling for my cashier, I ordered him to pay over fifty 1000
-pound notes. When I was alone once more, however, with the
-precious case lying upon the table in front of me, I could not
-but think with some misgivings of the immense responsibility
-which it entailed upon me. There could be no doubt that, as it
-was a national possession, a horrible scandal would ensue if any
-misfortune should occur to it. I already regretted having ever
-consented to take charge of it. However, it was too late to alter
-the matter now, so I locked it up in my private safe and turned
-once more to my work.
-
-"When evening came I felt that it would be an imprudence to leave
-so precious a thing in the office behind me. Bankers' safes had
-been forced before now, and why should not mine be? If so, how
-terrible would be the position in which I should find myself! I
-determined, therefore, that for the next few days I would always
-carry the case backward and forward with me, so that it might
-never be really out of my reach. With this intention, I called a
-cab and drove out to my house at Streatham, carrying the jewel
-with me. I did not breathe freely until I had taken it upstairs
-and locked it in the bureau of my dressing-room.
-
-"And now a word as to my household, Mr. Holmes, for I wish you to
-thoroughly understand the situation. My groom and my page sleep
-out of the house, and may be set aside altogether. I have three
-maid-servants who have been with me a number of years and whose
-absolute reliability is quite above suspicion. Another, Lucy
-Parr, the second waiting-maid, has only been in my service a few
-months. She came with an excellent character, however, and has
-always given me satisfaction. She is a very pretty girl and has
-attracted admirers who have occasionally hung about the place.
-That is the only drawback which we have found to her, but we
-believe her to be a thoroughly good girl in every way.
-
-"So much for the servants. My family itself is so small that it
-will not take me long to describe it. I am a widower and have an
-only son, Arthur. He has been a disappointment to me, Mr.
-Holmes--a grievous disappointment. I have no doubt that I am
-myself to blame. People tell me that I have spoiled him. Very
-likely I have. When my dear wife died I felt that he was all I
-had to love. I could not bear to see the smile fade even for a
-moment from his face. I have never denied him a wish. Perhaps it
-would have been better for both of us had I been sterner, but I
-meant it for the best.
-
-"It was naturally my intention that he should succeed me in my
-business, but he was not of a business turn. He was wild,
-wayward, and, to speak the truth, I could not trust him in the
-handling of large sums of money. When he was young he became a
-member of an aristocratic club, and there, having charming
-manners, he was soon the intimate of a number of men with long
-purses and expensive habits. He learned to play heavily at cards
-and to squander money on the turf, until he had again and again
-to come to me and implore me to give him an advance upon his
-allowance, that he might settle his debts of honour. He tried
-more than once to break away from the dangerous company which he
-was keeping, but each time the influence of his friend, Sir
-George Burnwell, was enough to draw him back again.
-
-"And, indeed, I could not wonder that such a man as Sir George
-Burnwell should gain an influence over him, for he has frequently
-brought him to my house, and I have found myself that I could
-hardly resist the fascination of his manner. He is older than
-Arthur, a man of the world to his finger-tips, one who had been
-everywhere, seen everything, a brilliant talker, and a man of
-great personal beauty. Yet when I think of him in cold blood, far
-away from the glamour of his presence, I am convinced from his
-cynical speech and the look which I have caught in his eyes that
-he is one who should be deeply distrusted. So I think, and so,
-too, thinks my little Mary, who has a woman's quick insight into
-character.
-
-"And now there is only she to be described. She is my niece; but
-when my brother died five years ago and left her alone in the
-world I adopted her, and have looked upon her ever since as my
-daughter. She is a sunbeam in my house--sweet, loving, beautiful,
-a wonderful manager and housekeeper, yet as tender and quiet and
-gentle as a woman could be. She is my right hand. I do not know
-what I could do without her. In only one matter has she ever gone
-against my wishes. Twice my boy has asked her to marry him, for
-he loves her devotedly, but each time she has refused him. I
-think that if anyone could have drawn him into the right path it
-would have been she, and that his marriage might have changed his
-whole life; but now, alas! it is too late--forever too late!
-
-"Now, Mr. Holmes, you know the people who live under my roof, and
-I shall continue with my miserable story.
-
-"When we were taking coffee in the drawing-room that night after
-dinner, I told Arthur and Mary my experience, and of the precious
-treasure which we had under our roof, suppressing only the name
-of my client. Lucy Parr, who had brought in the coffee, had, I am
-sure, left the room; but I cannot swear that the door was closed.
-Mary and Arthur were much interested and wished to see the famous
-coronet, but I thought it better not to disturb it.
-
-"'Where have you put it?' asked Arthur.
-
-"'In my own bureau.'
-
-"'Well, I hope to goodness the house won't be burgled during the
-night.' said he.
-
-"'It is locked up,' I answered.
-
-"'Oh, any old key will fit that bureau. When I was a youngster I
-have opened it myself with the key of the box-room cupboard.'
-
-"He often had a wild way of talking, so that I thought little of
-what he said. He followed me to my room, however, that night with
-a very grave face.
-
-"'Look here, dad,' said he with his eyes cast down, 'can you let
-me have 200 pounds?'
-
-"'No, I cannot!' I answered sharply. 'I have been far too
-generous with you in money matters.'
-
-"'You have been very kind,' said he, 'but I must have this money,
-or else I can never show my face inside the club again.'
-
-"'And a very good thing, too!' I cried.
-
-"'Yes, but you would not have me leave it a dishonoured man,'
-said he. 'I could not bear the disgrace. I must raise the money
-in some way, and if you will not let me have it, then I must try
-other means.'
-
-"I was very angry, for this was the third demand during the
-month. 'You shall not have a farthing from me,' I cried, on which
-he bowed and left the room without another word.
-
-"When he was gone I unlocked my bureau, made sure that my
-treasure was safe, and locked it again. Then I started to go
-round the house to see that all was secure--a duty which I
-usually leave to Mary but which I thought it well to perform
-myself that night. As I came down the stairs I saw Mary herself
-at the side window of the hall, which she closed and fastened as
-I approached.
-
-"'Tell me, dad,' said she, looking, I thought, a little
-disturbed, 'did you give Lucy, the maid, leave to go out
-to-night?'
-
-"'Certainly not.'
-
-"'She came in just now by the back door. I have no doubt that she
-has only been to the side gate to see someone, but I think that
-it is hardly safe and should be stopped.'
-
-"'You must speak to her in the morning, or I will if you prefer
-it. Are you sure that everything is fastened?'
-
-"'Quite sure, dad.'
-
-"'Then, good-night.' I kissed her and went up to my bedroom
-again, where I was soon asleep.
-
-"I am endeavouring to tell you everything, Mr. Holmes, which may
-have any bearing upon the case, but I beg that you will question
-me upon any point which I do not make clear."
-
-"On the contrary, your statement is singularly lucid."
-
-"I come to a part of my story now in which I should wish to be
-particularly so. I am not a very heavy sleeper, and the anxiety
-in my mind tended, no doubt, to make me even less so than usual.
-About two in the morning, then, I was awakened by some sound in
-the house. It had ceased ere I was wide awake, but it had left an
-impression behind it as though a window had gently closed
-somewhere. I lay listening with all my ears. Suddenly, to my
-horror, there was a distinct sound of footsteps moving softly in
-the next room. I slipped out of bed, all palpitating with fear,
-and peeped round the corner of my dressing-room door.
-
-"'Arthur!' I screamed, 'you villain! you thief! How dare you
-touch that coronet?'
-
-"The gas was half up, as I had left it, and my unhappy boy,
-dressed only in his shirt and trousers, was standing beside the
-light, holding the coronet in his hands. He appeared to be
-wrenching at it, or bending it with all his strength. At my cry
-he dropped it from his grasp and turned as pale as death. I
-snatched it up and examined it. One of the gold corners, with
-three of the beryls in it, was missing.
-
-"'You blackguard!' I shouted, beside myself with rage. 'You have
-destroyed it! You have dishonoured me forever! Where are the
-jewels which you have stolen?'
-
-"'Stolen!' he cried.
-
-"'Yes, thief!' I roared, shaking him by the shoulder.
-
-"'There are none missing. There cannot be any missing,' said he.
-
-"'There are three missing. And you know where they are. Must I
-call you a liar as well as a thief? Did I not see you trying to
-tear off another piece?'
-
-"'You have called me names enough,' said he, 'I will not stand it
-any longer. I shall not say another word about this business,
-since you have chosen to insult me. I will leave your house in
-the morning and make my own way in the world.'
-
-"'You shall leave it in the hands of the police!' I cried
-half-mad with grief and rage. 'I shall have this matter probed to
-the bottom.'
-
-"'You shall learn nothing from me,' said he with a passion such
-as I should not have thought was in his nature. 'If you choose to
-call the police, let the police find what they can.'
-
-"By this time the whole house was astir, for I had raised my
-voice in my anger. Mary was the first to rush into my room, and,
-at the sight of the coronet and of Arthur's face, she read the
-whole story and, with a scream, fell down senseless on the
-ground. I sent the house-maid for the police and put the
-investigation into their hands at once. When the inspector and a
-constable entered the house, Arthur, who had stood sullenly with
-his arms folded, asked me whether it was my intention to charge
-him with theft. I answered that it had ceased to be a private
-matter, but had become a public one, since the ruined coronet was
-national property. I was determined that the law should have its
-way in everything.
-
-"'At least,' said he, 'you will not have me arrested at once. It
-would be to your advantage as well as mine if I might leave the
-house for five minutes.'
-
-"'That you may get away, or perhaps that you may conceal what you
-have stolen,' said I. And then, realising the dreadful position
-in which I was placed, I implored him to remember that not only
-my honour but that of one who was far greater than I was at
-stake; and that he threatened to raise a scandal which would
-convulse the nation. He might avert it all if he would but tell
-me what he had done with the three missing stones.
-
-"'You may as well face the matter,' said I; 'you have been caught
-in the act, and no confession could make your guilt more heinous.
-If you but make such reparation as is in your power, by telling
-us where the beryls are, all shall be forgiven and forgotten.'
-
-"'Keep your forgiveness for those who ask for it,' he answered,
-turning away from me with a sneer. I saw that he was too hardened
-for any words of mine to influence him. There was but one way for
-it. I called in the inspector and gave him into custody. A search
-was made at once not only of his person but of his room and of
-every portion of the house where he could possibly have concealed
-the gems; but no trace of them could be found, nor would the
-wretched boy open his mouth for all our persuasions and our
-threats. This morning he was removed to a cell, and I, after
-going through all the police formalities, have hurried round to
-you to implore you to use your skill in unravelling the matter.
-The police have openly confessed that they can at present make
-nothing of it. You may go to any expense which you think
-necessary. I have already offered a reward of 1000 pounds. My
-God, what shall I do! I have lost my honour, my gems, and my son
-in one night. Oh, what shall I do!"
-
-He put a hand on either side of his head and rocked himself to
-and fro, droning to himself like a child whose grief has got
-beyond words.
-
-Sherlock Holmes sat silent for some few minutes, with his brows
-knitted and his eyes fixed upon the fire.
-
-"Do you receive much company?" he asked.
-
-"None save my partner with his family and an occasional friend of
-Arthur's. Sir George Burnwell has been several times lately. No
-one else, I think."
-
-"Do you go out much in society?"
-
-"Arthur does. Mary and I stay at home. We neither of us care for
-it."
-
-"That is unusual in a young girl."
-
-"She is of a quiet nature. Besides, she is not so very young. She
-is four-and-twenty."
-
-"This matter, from what you say, seems to have been a shock to
-her also."
-
-"Terrible! She is even more affected than I."
-
-"You have neither of you any doubt as to your son's guilt?"
-
-"How can we have when I saw him with my own eyes with the coronet
-in his hands."
-
-"I hardly consider that a conclusive proof. Was the remainder of
-the coronet at all injured?"
-
-"Yes, it was twisted."
-
-"Do you not think, then, that he might have been trying to
-straighten it?"
-
-"God bless you! You are doing what you can for him and for me.
-But it is too heavy a task. What was he doing there at all? If
-his purpose were innocent, why did he not say so?"
-
-"Precisely. And if it were guilty, why did he not invent a lie?
-His silence appears to me to cut both ways. There are several
-singular points about the case. What did the police think of the
-noise which awoke you from your sleep?"
-
-"They considered that it might be caused by Arthur's closing his
-bedroom door."
-
-"A likely story! As if a man bent on felony would slam his door
-so as to wake a household. What did they say, then, of the
-disappearance of these gems?"
-
-"They are still sounding the planking and probing the furniture
-in the hope of finding them."
-
-"Have they thought of looking outside the house?"
-
-"Yes, they have shown extraordinary energy. The whole garden has
-already been minutely examined."
-
-"Now, my dear sir," said Holmes, "is it not obvious to you now
-that this matter really strikes very much deeper than either you
-or the police were at first inclined to think? It appeared to you
-to be a simple case; to me it seems exceedingly complex. Consider
-what is involved by your theory. You suppose that your son came
-down from his bed, went, at great risk, to your dressing-room,
-opened your bureau, took out your coronet, broke off by main
-force a small portion of it, went off to some other place,
-concealed three gems out of the thirty-nine, with such skill that
-nobody can find them, and then returned with the other thirty-six
-into the room in which he exposed himself to the greatest danger
-of being discovered. I ask you now, is such a theory tenable?"
-
-"But what other is there?" cried the banker with a gesture of
-despair. "If his motives were innocent, why does he not explain
-them?"
-
-"It is our task to find that out," replied Holmes; "so now, if
-you please, Mr. Holder, we will set off for Streatham together,
-and devote an hour to glancing a little more closely into
-details."
-
-My friend insisted upon my accompanying them in their expedition,
-which I was eager enough to do, for my curiosity and sympathy
-were deeply stirred by the story to which we had listened. I
-confess that the guilt of the banker's son appeared to me to be
-as obvious as it did to his unhappy father, but still I had such
-faith in Holmes' judgment that I felt that there must be some
-grounds for hope as long as he was dissatisfied with the accepted
-explanation. He hardly spoke a word the whole way out to the
-southern suburb, but sat with his chin upon his breast and his
-hat drawn over his eyes, sunk in the deepest thought. Our client
-appeared to have taken fresh heart at the little glimpse of hope
-which had been presented to him, and he even broke into a
-desultory chat with me over his business affairs. A short railway
-journey and a shorter walk brought us to Fairbank, the modest
-residence of the great financier.
-
-Fairbank was a good-sized square house of white stone, standing
-back a little from the road. A double carriage-sweep, with a
-snow-clad lawn, stretched down in front to two large iron gates
-which closed the entrance. On the right side was a small wooden
-thicket, which led into a narrow path between two neat hedges
-stretching from the road to the kitchen door, and forming the
-tradesmen's entrance. On the left ran a lane which led to the
-stables, and was not itself within the grounds at all, being a
-public, though little used, thoroughfare. Holmes left us standing
-at the door and walked slowly all round the house, across the
-front, down the tradesmen's path, and so round by the garden
-behind into the stable lane. So long was he that Mr. Holder and I
-went into the dining-room and waited by the fire until he should
-return. We were sitting there in silence when the door opened and
-a young lady came in. She was rather above the middle height,
-slim, with dark hair and eyes, which seemed the darker against
-the absolute pallor of her skin. I do not think that I have ever
-seen such deadly paleness in a woman's face. Her lips, too, were
-bloodless, but her eyes were flushed with crying. As she swept
-silently into the room she impressed me with a greater sense of
-grief than the banker had done in the morning, and it was the
-more striking in her as she was evidently a woman of strong
-character, with immense capacity for self-restraint. Disregarding
-my presence, she went straight to her uncle and passed her hand
-over his head with a sweet womanly caress.
-
-"You have given orders that Arthur should be liberated, have you
-not, dad?" she asked.
-
-"No, no, my girl, the matter must be probed to the bottom."
-
-"But I am so sure that he is innocent. You know what woman's
-instincts are. I know that he has done no harm and that you will
-be sorry for having acted so harshly."
-
-"Why is he silent, then, if he is innocent?"
-
-"Who knows? Perhaps because he was so angry that you should
-suspect him."
-
-"How could I help suspecting him, when I actually saw him with
-the coronet in his hand?"
-
-"Oh, but he had only picked it up to look at it. Oh, do, do take
-my word for it that he is innocent. Let the matter drop and say
-no more. It is so dreadful to think of our dear Arthur in
-prison!"
-
-"I shall never let it drop until the gems are found--never, Mary!
-Your affection for Arthur blinds you as to the awful consequences
-to me. Far from hushing the thing up, I have brought a gentleman
-down from London to inquire more deeply into it."
-
-"This gentleman?" she asked, facing round to me.
-
-"No, his friend. He wished us to leave him alone. He is round in
-the stable lane now."
-
-"The stable lane?" She raised her dark eyebrows. "What can he
-hope to find there? Ah! this, I suppose, is he. I trust, sir,
-that you will succeed in proving, what I feel sure is the truth,
-that my cousin Arthur is innocent of this crime."
-
-"I fully share your opinion, and I trust, with you, that we may
-prove it," returned Holmes, going back to the mat to knock the
-snow from his shoes. "I believe I have the honour of addressing
-Miss Mary Holder. Might I ask you a question or two?"
-
-"Pray do, sir, if it may help to clear this horrible affair up."
-
-"You heard nothing yourself last night?"
-
-"Nothing, until my uncle here began to speak loudly. I heard
-that, and I came down."
-
-"You shut up the windows and doors the night before. Did you
-fasten all the windows?"
-
-"Yes."
-
-"Were they all fastened this morning?"
-
-"Yes."
-
-"You have a maid who has a sweetheart? I think that you remarked
-to your uncle last night that she had been out to see him?"
-
-"Yes, and she was the girl who waited in the drawing-room, and
-who may have heard uncle's remarks about the coronet."
-
-"I see. You infer that she may have gone out to tell her
-sweetheart, and that the two may have planned the robbery."
-
-"But what is the good of all these vague theories," cried the
-banker impatiently, "when I have told you that I saw Arthur with
-the coronet in his hands?"
-
-"Wait a little, Mr. Holder. We must come back to that. About this
-girl, Miss Holder. You saw her return by the kitchen door, I
-presume?"
-
-"Yes; when I went to see if the door was fastened for the night I
-met her slipping in. I saw the man, too, in the gloom."
-
-"Do you know him?"
-
-"Oh, yes! he is the green-grocer who brings our vegetables round.
-His name is Francis Prosper."
-
-"He stood," said Holmes, "to the left of the door--that is to
-say, farther up the path than is necessary to reach the door?"
-
-"Yes, he did."
-
-"And he is a man with a wooden leg?"
-
-Something like fear sprang up in the young lady's expressive
-black eyes. "Why, you are like a magician," said she. "How do you
-know that?" She smiled, but there was no answering smile in
-Holmes' thin, eager face.
-
-"I should be very glad now to go upstairs," said he. "I shall
-probably wish to go over the outside of the house again. Perhaps
-I had better take a look at the lower windows before I go up."
-
-He walked swiftly round from one to the other, pausing only at
-the large one which looked from the hall onto the stable lane.
-This he opened and made a very careful examination of the sill
-with his powerful magnifying lens. "Now we shall go upstairs,"
-said he at last.
-
-The banker's dressing-room was a plainly furnished little
-chamber, with a grey carpet, a large bureau, and a long mirror.
-Holmes went to the bureau first and looked hard at the lock.
-
-"Which key was used to open it?" he asked.
-
-"That which my son himself indicated--that of the cupboard of the
-lumber-room."
-
-"Have you it here?"
-
-"That is it on the dressing-table."
-
-Sherlock Holmes took it up and opened the bureau.
-
-"It is a noiseless lock," said he. "It is no wonder that it did
-not wake you. This case, I presume, contains the coronet. We must
-have a look at it." He opened the case, and taking out the diadem
-he laid it upon the table. It was a magnificent specimen of the
-jeweller's art, and the thirty-six stones were the finest that I
-have ever seen. At one side of the coronet was a cracked edge,
-where a corner holding three gems had been torn away.
-
-"Now, Mr. Holder," said Holmes, "here is the corner which
-corresponds to that which has been so unfortunately lost. Might I
-beg that you will break it off."
-
-The banker recoiled in horror. "I should not dream of trying,"
-said he.
-
-"Then I will." Holmes suddenly bent his strength upon it, but
-without result. "I feel it give a little," said he; "but, though
-I am exceptionally strong in the fingers, it would take me all my
-time to break it. An ordinary man could not do it. Now, what do
-you think would happen if I did break it, Mr. Holder? There would
-be a noise like a pistol shot. Do you tell me that all this
-happened within a few yards of your bed and that you heard
-nothing of it?"
-
-"I do not know what to think. It is all dark to me."
-
-"But perhaps it may grow lighter as we go. What do you think,
-Miss Holder?"
-
-"I confess that I still share my uncle's perplexity."
-
-"Your son had no shoes or slippers on when you saw him?"
-
-"He had nothing on save only his trousers and shirt."
-
-"Thank you. We have certainly been favoured with extraordinary
-luck during this inquiry, and it will be entirely our own fault
-if we do not succeed in clearing the matter up. With your
-permission, Mr. Holder, I shall now continue my investigations
-outside."
-
-He went alone, at his own request, for he explained that any
-unnecessary footmarks might make his task more difficult. For an
-hour or more he was at work, returning at last with his feet
-heavy with snow and his features as inscrutable as ever.
-
-"I think that I have seen now all that there is to see, Mr.
-Holder," said he; "I can serve you best by returning to my
-rooms."
-
-"But the gems, Mr. Holmes. Where are they?"
-
-"I cannot tell."
-
-The banker wrung his hands. "I shall never see them again!" he
-cried. "And my son? You give me hopes?"
-
-"My opinion is in no way altered."
-
-"Then, for God's sake, what was this dark business which was
-acted in my house last night?"
-
-"If you can call upon me at my Baker Street rooms to-morrow
-morning between nine and ten I shall be happy to do what I can to
-make it clearer. I understand that you give me carte blanche to
-act for you, provided only that I get back the gems, and that you
-place no limit on the sum I may draw."
-
-"I would give my fortune to have them back."
-
-"Very good. I shall look into the matter between this and then.
-Good-bye; it is just possible that I may have to come over here
-again before evening."
-
-It was obvious to me that my companion's mind was now made up
-about the case, although what his conclusions were was more than
-I could even dimly imagine. Several times during our homeward
-journey I endeavoured to sound him upon the point, but he always
-glided away to some other topic, until at last I gave it over in
-despair. It was not yet three when we found ourselves in our
-rooms once more. He hurried to his chamber and was down again in
-a few minutes dressed as a common loafer. With his collar turned
-up, his shiny, seedy coat, his red cravat, and his worn boots, he
-was a perfect sample of the class.
-
-"I think that this should do," said he, glancing into the glass
-above the fireplace. "I only wish that you could come with me,
-Watson, but I fear that it won't do. I may be on the trail in
-this matter, or I may be following a will-o'-the-wisp, but I
-shall soon know which it is. I hope that I may be back in a few
-hours." He cut a slice of beef from the joint upon the sideboard,
-sandwiched it between two rounds of bread, and thrusting this
-rude meal into his pocket he started off upon his expedition.
-
-I had just finished my tea when he returned, evidently in
-excellent spirits, swinging an old elastic-sided boot in his
-hand. He chucked it down into a corner and helped himself to a
-cup of tea.
-
-"I only looked in as I passed," said he. "I am going right on."
-
-"Where to?"
-
-"Oh, to the other side of the West End. It may be some time
-before I get back. Don't wait up for me in case I should be
-late."
-
-"How are you getting on?"
-
-"Oh, so so. Nothing to complain of. I have been out to Streatham
-since I saw you last, but I did not call at the house. It is a
-very sweet little problem, and I would not have missed it for a
-good deal. However, I must not sit gossiping here, but must get
-these disreputable clothes off and return to my highly
-respectable self."
-
-I could see by his manner that he had stronger reasons for
-satisfaction than his words alone would imply. His eyes twinkled,
-and there was even a touch of colour upon his sallow cheeks. He
-hastened upstairs, and a few minutes later I heard the slam of
-the hall door, which told me that he was off once more upon his
-congenial hunt.
-
-I waited until midnight, but there was no sign of his return, so
-I retired to my room. It was no uncommon thing for him to be away
-for days and nights on end when he was hot upon a scent, so that
-his lateness caused me no surprise. I do not know at what hour he
-came in, but when I came down to breakfast in the morning there
-he was with a cup of coffee in one hand and the paper in the
-other, as fresh and trim as possible.
-
-"You will excuse my beginning without you, Watson," said he, "but
-you remember that our client has rather an early appointment this
-morning."
-
-"Why, it is after nine now," I answered. "I should not be
-surprised if that were he. I thought I heard a ring."
-
-It was, indeed, our friend the financier. I was shocked by the
-change which had come over him, for his face which was naturally
-of a broad and massive mould, was now pinched and fallen in,
-while his hair seemed to me at least a shade whiter. He entered
-with a weariness and lethargy which was even more painful than
-his violence of the morning before, and he dropped heavily into
-the armchair which I pushed forward for him.
-
-"I do not know what I have done to be so severely tried," said
-he. "Only two days ago I was a happy and prosperous man, without
-a care in the world. Now I am left to a lonely and dishonoured
-age. One sorrow comes close upon the heels of another. My niece,
-Mary, has deserted me."
-
-"Deserted you?"
-
-"Yes. Her bed this morning had not been slept in, her room was
-empty, and a note for me lay upon the hall table. I had said to
-her last night, in sorrow and not in anger, that if she had
-married my boy all might have been well with him. Perhaps it was
-thoughtless of me to say so. It is to that remark that she refers
-in this note:
-
-"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
-and that if I had acted differently this terrible misfortune
-might never have occurred. I cannot, with this thought in my
-mind, ever again be happy under your roof, and I feel that I must
-leave you forever. Do not worry about my future, for that is
-provided for; and, above all, do not search for me, for it will
-be fruitless labour and an ill-service to me. In life or in
-death, I am ever your loving,--MARY.'
-
-"What could she mean by that note, Mr. Holmes? Do you think it
-points to suicide?"
-
-"No, no, nothing of the kind. It is perhaps the best possible
-solution. I trust, Mr. Holder, that you are nearing the end of
-your troubles."
-
-"Ha! You say so! You have heard something, Mr. Holmes; you have
-learned something! Where are the gems?"
-
-"You would not think 1000 pounds apiece an excessive sum for
-them?"
-
-"I would pay ten."
-
-"That would be unnecessary. Three thousand will cover the matter.
-And there is a little reward, I fancy. Have you your check-book?
-Here is a pen. Better make it out for 4000 pounds."
-
-With a dazed face the banker made out the required check. Holmes
-walked over to his desk, took out a little triangular piece of
-gold with three gems in it, and threw it down upon the table.
-
-With a shriek of joy our client clutched it up.
-
-"You have it!" he gasped. "I am saved! I am saved!"
-
-The reaction of joy was as passionate as his grief had been, and
-he hugged his recovered gems to his bosom.
-
-"There is one other thing you owe, Mr. Holder," said Sherlock
-Holmes rather sternly.
-
-"Owe!" He caught up a pen. "Name the sum, and I will pay it."
-
-"No, the debt is not to me. You owe a very humble apology to that
-noble lad, your son, who has carried himself in this matter as I
-should be proud to see my own son do, should I ever chance to
-have one."
-
-"Then it was not Arthur who took them?"
-
-"I told you yesterday, and I repeat to-day, that it was not."
-
-"You are sure of it! Then let us hurry to him at once to let him
-know that the truth is known."
-
-"He knows it already. When I had cleared it all up I had an
-interview with him, and finding that he would not tell me the
-story, I told it to him, on which he had to confess that I was
-right and to add the very few details which were not yet quite
-clear to me. Your news of this morning, however, may open his
-lips."
-
-"For heaven's sake, tell me, then, what is this extraordinary
-mystery!"
-
-"I will do so, and I will show you the steps by which I reached
-it. And let me say to you, first, that which it is hardest for me
-to say and for you to hear: there has been an understanding
-between Sir George Burnwell and your niece Mary. They have now
-fled together."
-
-"My Mary? Impossible!"
-
-"It is unfortunately more than possible; it is certain. Neither
-you nor your son knew the true character of this man when you
-admitted him into your family circle. He is one of the most
-dangerous men in England--a ruined gambler, an absolutely
-desperate villain, a man without heart or conscience. Your niece
-knew nothing of such men. When he breathed his vows to her, as he
-had done to a hundred before her, she flattered herself that she
-alone had touched his heart. The devil knows best what he said,
-but at least she became his tool and was in the habit of seeing
-him nearly every evening."
-
-"I cannot, and I will not, believe it!" cried the banker with an
-ashen face.
-
-"I will tell you, then, what occurred in your house last night.
-Your niece, when you had, as she thought, gone to your room,
-slipped down and talked to her lover through the window which
-leads into the stable lane. His footmarks had pressed right
-through the snow, so long had he stood there. She told him of the
-coronet. His wicked lust for gold kindled at the news, and he
-bent her to his will. I have no doubt that she loved you, but
-there are women in whom the love of a lover extinguishes all
-other loves, and I think that she must have been one. She had
-hardly listened to his instructions when she saw you coming
-downstairs, on which she closed the window rapidly and told you
-about one of the servants' escapade with her wooden-legged lover,
-which was all perfectly true.
-
-"Your boy, Arthur, went to bed after his interview with you but
-he slept badly on account of his uneasiness about his club debts.
-In the middle of the night he heard a soft tread pass his door,
-so he rose and, looking out, was surprised to see his cousin
-walking very stealthily along the passage until she disappeared
-into your dressing-room. Petrified with astonishment, the lad
-slipped on some clothes and waited there in the dark to see what
-would come of this strange affair. Presently she emerged from the
-room again, and in the light of the passage-lamp your son saw
-that she carried the precious coronet in her hands. She passed
-down the stairs, and he, thrilling with horror, ran along and
-slipped behind the curtain near your door, whence he could see
-what passed in the hall beneath. He saw her stealthily open the
-window, hand out the coronet to someone in the gloom, and then
-closing it once more hurry back to her room, passing quite close
-to where he stood hid behind the curtain.
-
-"As long as she was on the scene he could not take any action
-without a horrible exposure of the woman whom he loved. But the
-instant that she was gone he realised how crushing a misfortune
-this would be for you, and how all-important it was to set it
-right. He rushed down, just as he was, in his bare feet, opened
-the window, sprang out into the snow, and ran down the lane,
-where he could see a dark figure in the moonlight. Sir George
-Burnwell tried to get away, but Arthur caught him, and there was
-a struggle between them, your lad tugging at one side of the
-coronet, and his opponent at the other. In the scuffle, your son
-struck Sir George and cut him over the eye. Then something
-suddenly snapped, and your son, finding that he had the coronet
-in his hands, rushed back, closed the window, ascended to your
-room, and had just observed that the coronet had been twisted in
-the struggle and was endeavouring to straighten it when you
-appeared upon the scene."
-
-"Is it possible?" gasped the banker.
-
-"You then roused his anger by calling him names at a moment when
-he felt that he had deserved your warmest thanks. He could not
-explain the true state of affairs without betraying one who
-certainly deserved little enough consideration at his hands. He
-took the more chivalrous view, however, and preserved her
-secret."
-
-"And that was why she shrieked and fainted when she saw the
-coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
-been! And his asking to be allowed to go out for five minutes!
-The dear fellow wanted to see if the missing piece were at the
-scene of the struggle. How cruelly I have misjudged him!"
-
-"When I arrived at the house," continued Holmes, "I at once went
-very carefully round it to observe if there were any traces in
-the snow which might help me. I knew that none had fallen since
-the evening before, and also that there had been a strong frost
-to preserve impressions. I passed along the tradesmen's path, but
-found it all trampled down and indistinguishable. Just beyond it,
-however, at the far side of the kitchen door, a woman had stood
-and talked with a man, whose round impressions on one side showed
-that he had a wooden leg. I could even tell that they had been
-disturbed, for the woman had run back swiftly to the door, as was
-shown by the deep toe and light heel marks, while Wooden-leg had
-waited a little, and then had gone away. I thought at the time
-that this might be the maid and her sweetheart, of whom you had
-already spoken to me, and inquiry showed it was so. I passed
-round the garden without seeing anything more than random tracks,
-which I took to be the police; but when I got into the stable
-lane a very long and complex story was written in the snow in
-front of me.
-
-"There was a double line of tracks of a booted man, and a second
-double line which I saw with delight belonged to a man with naked
-feet. I was at once convinced from what you had told me that the
-latter was your son. The first had walked both ways, but the
-other had run swiftly, and as his tread was marked in places over
-the depression of the boot, it was obvious that he had passed
-after the other. I followed them up and found they led to the
-hall window, where Boots had worn all the snow away while
-waiting. Then I walked to the other end, which was a hundred
-yards or more down the lane. I saw where Boots had faced round,
-where the snow was cut up as though there had been a struggle,
-and, finally, where a few drops of blood had fallen, to show me
-that I was not mistaken. Boots had then run down the lane, and
-another little smudge of blood showed that it was he who had been
-hurt. When he came to the highroad at the other end, I found that
-the pavement had been cleared, so there was an end to that clue.
-
-"On entering the house, however, I examined, as you remember, the
-sill and framework of the hall window with my lens, and I could
-at once see that someone had passed out. I could distinguish the
-outline of an instep where the wet foot had been placed in coming
-in. I was then beginning to be able to form an opinion as to what
-had occurred. A man had waited outside the window; someone had
-brought the gems; the deed had been overseen by your son; he had
-pursued the thief; had struggled with him; they had each tugged
-at the coronet, their united strength causing injuries which
-neither alone could have effected. He had returned with the
-prize, but had left a fragment in the grasp of his opponent. So
-far I was clear. The question now was, who was the man and who
-was it brought him the coronet?
-
-"It is an old maxim of mine that when you have excluded the
-impossible, whatever remains, however improbable, must be the
-truth. Now, I knew that it was not you who had brought it down,
-so there only remained your niece and the maids. But if it were
-the maids, why should your son allow himself to be accused in
-their place? There could be no possible reason. As he loved his
-cousin, however, there was an excellent explanation why he should
-retain her secret--the more so as the secret was a disgraceful
-one. When I remembered that you had seen her at that window, and
-how she had fainted on seeing the coronet again, my conjecture
-became a certainty.
-
-"And who could it be who was her confederate? A lover evidently,
-for who else could outweigh the love and gratitude which she must
-feel to you? I knew that you went out little, and that your
-circle of friends was a very limited one. But among them was Sir
-George Burnwell. I had heard of him before as being a man of evil
-reputation among women. It must have been he who wore those boots
-and retained the missing gems. Even though he knew that Arthur
-had discovered him, he might still flatter himself that he was
-safe, for the lad could not say a word without compromising his
-own family.
-
-"Well, your own good sense will suggest what measures I took
-next. I went in the shape of a loafer to Sir George's house,
-managed to pick up an acquaintance with his valet, learned that
-his master had cut his head the night before, and, finally, at
-the expense of six shillings, made all sure by buying a pair of
-his cast-off shoes. With these I journeyed down to Streatham and
-saw that they exactly fitted the tracks."
-
-"I saw an ill-dressed vagabond in the lane yesterday evening,"
-said Mr. Holder.
-
-"Precisely. It was I. I found that I had my man, so I came home
-and changed my clothes. It was a delicate part which I had to
-play then, for I saw that a prosecution must be avoided to avert
-scandal, and I knew that so astute a villain would see that our
-hands were tied in the matter. I went and saw him. At first, of
-course, he denied everything. But when I gave him every
-particular that had occurred, he tried to bluster and took down a
-life-preserver from the wall. I knew my man, however, and I
-clapped a pistol to his head before he could strike. Then he
-became a little more reasonable. I told him that we would give
-him a price for the stones he held--1000 pounds apiece. That
-brought out the first signs of grief that he had shown. 'Why,
-dash it all!' said he, 'I've let them go at six hundred for the
-three!' I soon managed to get the address of the receiver who had
-them, on promising him that there would be no prosecution. Off I
-set to him, and after much chaffering I got our stones at 1000
-pounds apiece. Then I looked in upon your son, told him that all
-was right, and eventually got to my bed about two o'clock, after
-what I may call a really hard day's work."
-
-"A day which has saved England from a great public scandal," said
-the banker, rising. "Sir, I cannot find words to thank you, but
-you shall not find me ungrateful for what you have done. Your
-skill has indeed exceeded all that I have heard of it. And now I
-must fly to my dear boy to apologise to him for the wrong which I
-have done him. As to what you tell me of poor Mary, it goes to my
-very heart. Not even your skill can inform me where she is now."
-
-"I think that we may safely say," returned Holmes, "that she is
-wherever Sir George Burnwell is. It is equally certain, too, that
-whatever her sins are, they will soon receive a more than
-sufficient punishment."
-
-
-
-XII. THE ADVENTURE OF THE COPPER BEECHES
-
-"To the man who loves art for its own sake," remarked Sherlock
-Holmes, tossing aside the advertisement sheet of the Daily
-Telegraph, "it is frequently in its least important and lowliest
-manifestations that the keenest pleasure is to be derived. It is
-pleasant to me to observe, Watson, that you have so far grasped
-this truth that in these little records of our cases which you
-have been good enough to draw up, and, I am bound to say,
-occasionally to embellish, you have given prominence not so much
-to the many causes célèbres and sensational trials in which I
-have figured but rather to those incidents which may have been
-trivial in themselves, but which have given room for those
-faculties of deduction and of logical synthesis which I have made
-my special province."
-
-"And yet," said I, smiling, "I cannot quite hold myself absolved
-from the charge of sensationalism which has been urged against my
-records."
-
-"You have erred, perhaps," he observed, taking up a glowing
-cinder with the tongs and lighting with it the long cherry-wood
-pipe which was wont to replace his clay when he was in a
-disputatious rather than a meditative mood--"you have erred
-perhaps in attempting to put colour and life into each of your
-statements instead of confining yourself to the task of placing
-upon record that severe reasoning from cause to effect which is
-really the only notable feature about the thing."
-
-"It seems to me that I have done you full justice in the matter,"
-I remarked with some coldness, for I was repelled by the egotism
-which I had more than once observed to be a strong factor in my
-friend's singular character.
-
-"No, it is not selfishness or conceit," said he, answering, as
-was his wont, my thoughts rather than my words. "If I claim full
-justice for my art, it is because it is an impersonal thing--a
-thing beyond myself. Crime is common. Logic is rare. Therefore it
-is upon the logic rather than upon the crime that you should
-dwell. You have degraded what should have been a course of
-lectures into a series of tales."
-
-It was a cold morning of the early spring, and we sat after
-breakfast on either side of a cheery fire in the old room at
-Baker Street. A thick fog rolled down between the lines of
-dun-coloured houses, and the opposing windows loomed like dark,
-shapeless blurs through the heavy yellow wreaths. Our gas was lit
-and shone on the white cloth and glimmer of china and metal, for
-the table had not been cleared yet. Sherlock Holmes had been
-silent all the morning, dipping continuously into the
-advertisement columns of a succession of papers until at last,
-having apparently given up his search, he had emerged in no very
-sweet temper to lecture me upon my literary shortcomings.
-
-"At the same time," he remarked after a pause, during which he
-had sat puffing at his long pipe and gazing down into the fire,
-"you can hardly be open to a charge of sensationalism, for out of
-these cases which you have been so kind as to interest yourself
-in, a fair proportion do not treat of crime, in its legal sense,
-at all. The small matter in which I endeavoured to help the King
-of Bohemia, the singular experience of Miss Mary Sutherland, the
-problem connected with the man with the twisted lip, and the
-incident of the noble bachelor, were all matters which are
-outside the pale of the law. But in avoiding the sensational, I
-fear that you may have bordered on the trivial."
-
-"The end may have been so," I answered, "but the methods I hold
-to have been novel and of interest."
-
-"Pshaw, my dear fellow, what do the public, the great unobservant
-public, who could hardly tell a weaver by his tooth or a
-compositor by his left thumb, care about the finer shades of
-analysis and deduction! But, indeed, if you are trivial, I cannot
-blame you, for the days of the great cases are past. Man, or at
-least criminal man, has lost all enterprise and originality. As
-to my own little practice, it seems to be degenerating into an
-agency for recovering lost lead pencils and giving advice to
-young ladies from boarding-schools. I think that I have touched
-bottom at last, however. This note I had this morning marks my
-zero-point, I fancy. Read it!" He tossed a crumpled letter across
-to me.
-
-It was dated from Montague Place upon the preceding evening, and
-ran thus:
-
-"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
-I should or should not accept a situation which has been offered
-to me as governess. I shall call at half-past ten to-morrow if I
-do not inconvenience you. Yours faithfully,
-                                               "VIOLET HUNTER."
-
-"Do you know the young lady?" I asked.
-
-"Not I."
-
-"It is half-past ten now."
-
-"Yes, and I have no doubt that is her ring."
-
-"It may turn out to be of more interest than you think. You
-remember that the affair of the blue carbuncle, which appeared to
-be a mere whim at first, developed into a serious investigation.
-It may be so in this case, also."
-
-"Well, let us hope so. But our doubts will very soon be solved,
-for here, unless I am much mistaken, is the person in question."
-
-As he spoke the door opened and a young lady entered the room.
-She was plainly but neatly dressed, with a bright, quick face,
-freckled like a plover's egg, and with the brisk manner of a
-woman who has had her own way to make in the world.
-
-"You will excuse my troubling you, I am sure," said she, as my
-companion rose to greet her, "but I have had a very strange
-experience, and as I have no parents or relations of any sort
-from whom I could ask advice, I thought that perhaps you would be
-kind enough to tell me what I should do."
-
-"Pray take a seat, Miss Hunter. I shall be happy to do anything
-that I can to serve you."
-
-I could see that Holmes was favourably impressed by the manner
-and speech of his new client. He looked her over in his searching
-fashion, and then composed himself, with his lids drooping and
-his finger-tips together, to listen to her story.
-
-"I have been a governess for five years," said she, "in the
-family of Colonel Spence Munro, but two months ago the colonel
-received an appointment at Halifax, in Nova Scotia, and took his
-children over to America with him, so that I found myself without
-a situation. I advertised, and I answered advertisements, but
-without success. At last the little money which I had saved began
-to run short, and I was at my wit's end as to what I should do.
-
-"There is a well-known agency for governesses in the West End
-called Westaway's, and there I used to call about once a week in
-order to see whether anything had turned up which might suit me.
-Westaway was the name of the founder of the business, but it is
-really managed by Miss Stoper. She sits in her own little office,
-and the ladies who are seeking employment wait in an anteroom,
-and are then shown in one by one, when she consults her ledgers
-and sees whether she has anything which would suit them.
-
-"Well, when I called last week I was shown into the little office
-as usual, but I found that Miss Stoper was not alone. A
-prodigiously stout man with a very smiling face and a great heavy
-chin which rolled down in fold upon fold over his throat sat at
-her elbow with a pair of glasses on his nose, looking very
-earnestly at the ladies who entered. As I came in he gave quite a
-jump in his chair and turned quickly to Miss Stoper.
-
-"'That will do,' said he; 'I could not ask for anything better.
-Capital! capital!' He seemed quite enthusiastic and rubbed his
-hands together in the most genial fashion. He was such a
-comfortable-looking man that it was quite a pleasure to look at
-him.
-
-"'You are looking for a situation, miss?' he asked.
-
-"'Yes, sir.'
-
-"'As governess?'
-
-"'Yes, sir.'
-
-"'And what salary do you ask?'
-
-"'I had 4 pounds a month in my last place with Colonel Spence
-Munro.'
-
-"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
-fat hands out into the air like a man who is in a boiling
-passion. 'How could anyone offer so pitiful a sum to a lady with
-such attractions and accomplishments?'
-
-"'My accomplishments, sir, may be less than you imagine,' said I.
-'A little French, a little German, music, and drawing--'
-
-"'Tut, tut!' he cried. 'This is all quite beside the question.
-The point is, have you or have you not the bearing and deportment
-of a lady? There it is in a nutshell. If you have not, you are
-not fitted for the rearing of a child who may some day play a
-considerable part in the history of the country. But if you have
-why, then, how could any gentleman ask you to condescend to
-accept anything under the three figures? Your salary with me,
-madam, would commence at 100 pounds a year.'
-
-"You may imagine, Mr. Holmes, that to me, destitute as I was,
-such an offer seemed almost too good to be true. The gentleman,
-however, seeing perhaps the look of incredulity upon my face,
-opened a pocket-book and took out a note.
-
-"'It is also my custom,' said he, smiling in the most pleasant
-fashion until his eyes were just two little shining slits amid
-the white creases of his face, 'to advance to my young ladies
-half their salary beforehand, so that they may meet any little
-expenses of their journey and their wardrobe.'
-
-"It seemed to me that I had never met so fascinating and so
-thoughtful a man. As I was already in debt to my tradesmen, the
-advance was a great convenience, and yet there was something
-unnatural about the whole transaction which made me wish to know
-a little more before I quite committed myself.
-
-"'May I ask where you live, sir?' said I.
-
-"'Hampshire. Charming rural place. The Copper Beeches, five miles
-on the far side of Winchester. It is the most lovely country, my
-dear young lady, and the dearest old country-house.'
-
-"'And my duties, sir? I should be glad to know what they would
-be.'
-
-"'One child--one dear little romper just six years old. Oh, if
-you could see him killing cockroaches with a slipper! Smack!
-smack! smack! Three gone before you could wink!' He leaned back
-in his chair and laughed his eyes into his head again.
-
-"I was a little startled at the nature of the child's amusement,
-but the father's laughter made me think that perhaps he was
-joking.
-
-"'My sole duties, then,' I asked, 'are to take charge of a single
-child?'
-
-"'No, no, not the sole, not the sole, my dear young lady,' he
-cried. 'Your duty would be, as I am sure your good sense would
-suggest, to obey any little commands my wife might give, provided
-always that they were such commands as a lady might with
-propriety obey. You see no difficulty, heh?'
-
-"'I should be happy to make myself useful.'
-
-"'Quite so. In dress now, for example. We are faddy people, you
-know--faddy but kind-hearted. If you were asked to wear any dress
-which we might give you, you would not object to our little whim.
-Heh?'
-
-"'No,' said I, considerably astonished at his words.
-
-"'Or to sit here, or sit there, that would not be offensive to
-you?'
-
-"'Oh, no.'
-
-"'Or to cut your hair quite short before you come to us?'
-
-"I could hardly believe my ears. As you may observe, Mr. Holmes,
-my hair is somewhat luxuriant, and of a rather peculiar tint of
-chestnut. It has been considered artistic. I could not dream of
-sacrificing it in this offhand fashion.
-
-"'I am afraid that that is quite impossible,' said I. He had been
-watching me eagerly out of his small eyes, and I could see a
-shadow pass over his face as I spoke.
-
-"'I am afraid that it is quite essential,' said he. 'It is a
-little fancy of my wife's, and ladies' fancies, you know, madam,
-ladies' fancies must be consulted. And so you won't cut your
-hair?'
-
-"'No, sir, I really could not,' I answered firmly.
-
-"'Ah, very well; then that quite settles the matter. It is a
-pity, because in other respects you would really have done very
-nicely. In that case, Miss Stoper, I had best inspect a few more
-of your young ladies.'
-
-"The manageress had sat all this while busy with her papers
-without a word to either of us, but she glanced at me now with so
-much annoyance upon her face that I could not help suspecting
-that she had lost a handsome commission through my refusal.
-
-"'Do you desire your name to be kept upon the books?' she asked.
-
-"'If you please, Miss Stoper.'
-
-"'Well, really, it seems rather useless, since you refuse the
-most excellent offers in this fashion,' said she sharply. 'You
-can hardly expect us to exert ourselves to find another such
-opening for you. Good-day to you, Miss Hunter.' She struck a gong
-upon the table, and I was shown out by the page.
-
-"Well, Mr. Holmes, when I got back to my lodgings and found
-little enough in the cupboard, and two or three bills upon the
-table, I began to ask myself whether I had not done a very
-foolish thing. After all, if these people had strange fads and
-expected obedience on the most extraordinary matters, they were
-at least ready to pay for their eccentricity. Very few
-governesses in England are getting 100 pounds a year. Besides,
-what use was my hair to me? Many people are improved by wearing
-it short and perhaps I should be among the number. Next day I was
-inclined to think that I had made a mistake, and by the day after
-I was sure of it. I had almost overcome my pride so far as to go
-back to the agency and inquire whether the place was still open
-when I received this letter from the gentleman himself. I have it
-here and I will read it to you:
-
-                       "'The Copper Beeches, near Winchester.
-"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
-address, and I write from here to ask you whether you have
-reconsidered your decision. My wife is very anxious that you
-should come, for she has been much attracted by my description of
-you. We are willing to give 30 pounds a quarter, or 120 pounds a
-year, so as to recompense you for any little inconvenience which
-our fads may cause you. They are not very exacting, after all. My
-wife is fond of a particular shade of electric blue and would
-like you to wear such a dress indoors in the morning. You need
-not, however, go to the expense of purchasing one, as we have one
-belonging to my dear daughter Alice (now in Philadelphia), which
-would, I should think, fit you very well. Then, as to sitting
-here or there, or amusing yourself in any manner indicated, that
-need cause you no inconvenience. As regards your hair, it is no
-doubt a pity, especially as I could not help remarking its beauty
-during our short interview, but I am afraid that I must remain
-firm upon this point, and I only hope that the increased salary
-may recompense you for the loss. Your duties, as far as the child
-is concerned, are very light. Now do try to come, and I shall
-meet you with the dog-cart at Winchester. Let me know your train.
-Yours faithfully, JEPHRO RUCASTLE.'
-
-"That is the letter which I have just received, Mr. Holmes, and
-my mind is made up that I will accept it. I thought, however,
-that before taking the final step I should like to submit the
-whole matter to your consideration."
-
-"Well, Miss Hunter, if your mind is made up, that settles the
-question," said Holmes, smiling.
-
-"But you would not advise me to refuse?"
-
-"I confess that it is not the situation which I should like to
-see a sister of mine apply for."
-
-"What is the meaning of it all, Mr. Holmes?"
-
-"Ah, I have no data. I cannot tell. Perhaps you have yourself
-formed some opinion?"
-
-"Well, there seems to me to be only one possible solution. Mr.
-Rucastle seemed to be a very kind, good-natured man. Is it not
-possible that his wife is a lunatic, that he desires to keep the
-matter quiet for fear she should be taken to an asylum, and that
-he humours her fancies in every way in order to prevent an
-outbreak?"
-
-"That is a possible solution--in fact, as matters stand, it is
-the most probable one. But in any case it does not seem to be a
-nice household for a young lady."
-
-"But the money, Mr. Holmes, the money!"
-
-"Well, yes, of course the pay is good--too good. That is what
-makes me uneasy. Why should they give you 120 pounds a year, when
-they could have their pick for 40 pounds? There must be some
-strong reason behind."
-
-"I thought that if I told you the circumstances you would
-understand afterwards if I wanted your help. I should feel so
-much stronger if I felt that you were at the back of me."
-
-"Oh, you may carry that feeling away with you. I assure you that
-your little problem promises to be the most interesting which has
-come my way for some months. There is something distinctly novel
-about some of the features. If you should find yourself in doubt
-or in danger--"
-
-"Danger! What danger do you foresee?"
-
-Holmes shook his head gravely. "It would cease to be a danger if
-we could define it," said he. "But at any time, day or night, a
-telegram would bring me down to your help."
-
-"That is enough." She rose briskly from her chair with the
-anxiety all swept from her face. "I shall go down to Hampshire
-quite easy in my mind now. I shall write to Mr. Rucastle at once,
-sacrifice my poor hair to-night, and start for Winchester
-to-morrow." With a few grateful words to Holmes she bade us both
-good-night and bustled off upon her way.
-
-"At least," said I as we heard her quick, firm steps descending
-the stairs, "she seems to be a young lady who is very well able
-to take care of herself."
-
-"And she would need to be," said Holmes gravely. "I am much
-mistaken if we do not hear from her before many days are past."
-
-It was not very long before my friend's prediction was fulfilled.
-A fortnight went by, during which I frequently found my thoughts
-turning in her direction and wondering what strange side-alley of
-human experience this lonely woman had strayed into. The unusual
-salary, the curious conditions, the light duties, all pointed to
-something abnormal, though whether a fad or a plot, or whether
-the man were a philanthropist or a villain, it was quite beyond
-my powers to determine. As to Holmes, I observed that he sat
-frequently for half an hour on end, with knitted brows and an
-abstracted air, but he swept the matter away with a wave of his
-hand when I mentioned it. "Data! data! data!" he cried
-impatiently. "I can't make bricks without clay." And yet he would
-always wind up by muttering that no sister of his should ever
-have accepted such a situation.
-
-The telegram which we eventually received came late one night
-just as I was thinking of turning in and Holmes was settling down
-to one of those all-night chemical researches which he frequently
-indulged in, when I would leave him stooping over a retort and a
-test-tube at night and find him in the same position when I came
-down to breakfast in the morning. He opened the yellow envelope,
-and then, glancing at the message, threw it across to me.
-
-"Just look up the trains in Bradshaw," said he, and turned back
-to his chemical studies.
-
-The summons was a brief and urgent one.
-
-"Please be at the Black Swan Hotel at Winchester at midday
-to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
-
-"Will you come with me?" asked Holmes, glancing up.
-
-"I should wish to."
-
-"Just look it up, then."
-
-"There is a train at half-past nine," said I, glancing over my
-Bradshaw. "It is due at Winchester at 11:30."
-
-"That will do very nicely. Then perhaps I had better postpone my
-analysis of the acetones, as we may need to be at our best in the
-morning."
-
-By eleven o'clock the next day we were well upon our way to the
-old English capital. Holmes had been buried in the morning papers
-all the way down, but after we had passed the Hampshire border he
-threw them down and began to admire the scenery. It was an ideal
-spring day, a light blue sky, flecked with little fleecy white
-clouds drifting across from west to east. The sun was shining
-very brightly, and yet there was an exhilarating nip in the air,
-which set an edge to a man's energy. All over the countryside,
-away to the rolling hills around Aldershot, the little red and
-grey roofs of the farm-steadings peeped out from amid the light
-green of the new foliage.
-
-"Are they not fresh and beautiful?" I cried with all the
-enthusiasm of a man fresh from the fogs of Baker Street.
-
-But Holmes shook his head gravely.
-
-"Do you know, Watson," said he, "that it is one of the curses of
-a mind with a turn like mine that I must look at everything with
-reference to my own special subject. You look at these scattered
-houses, and you are impressed by their beauty. I look at them,
-and the only thought which comes to me is a feeling of their
-isolation and of the impunity with which crime may be committed
-there."
-
-"Good heavens!" I cried. "Who would associate crime with these
-dear old homesteads?"
-
-"They always fill me with a certain horror. It is my belief,
-Watson, founded upon my experience, that the lowest and vilest
-alleys in London do not present a more dreadful record of sin
-than does the smiling and beautiful countryside."
-
-"You horrify me!"
-
-"But the reason is very obvious. The pressure of public opinion
-can do in the town what the law cannot accomplish. There is no
-lane so vile that the scream of a tortured child, or the thud of
-a drunkard's blow, does not beget sympathy and indignation among
-the neighbours, and then the whole machinery of justice is ever
-so close that a word of complaint can set it going, and there is
-but a step between the crime and the dock. But look at these
-lonely houses, each in its own fields, filled for the most part
-with poor ignorant folk who know little of the law. Think of the
-deeds of hellish cruelty, the hidden wickedness which may go on,
-year in, year out, in such places, and none the wiser. Had this
-lady who appeals to us for help gone to live in Winchester, I
-should never have had a fear for her. It is the five miles of
-country which makes the danger. Still, it is clear that she is
-not personally threatened."
-
-"No. If she can come to Winchester to meet us she can get away."
-
-"Quite so. She has her freedom."
-
-"What CAN be the matter, then? Can you suggest no explanation?"
-
-"I have devised seven separate explanations, each of which would
-cover the facts as far as we know them. But which of these is
-correct can only be determined by the fresh information which we
-shall no doubt find waiting for us. Well, there is the tower of
-the cathedral, and we shall soon learn all that Miss Hunter has
-to tell."
-
-The Black Swan is an inn of repute in the High Street, at no
-distance from the station, and there we found the young lady
-waiting for us. She had engaged a sitting-room, and our lunch
-awaited us upon the table.
-
-"I am so delighted that you have come," she said earnestly. "It
-is so very kind of you both; but indeed I do not know what I
-should do. Your advice will be altogether invaluable to me."
-
-"Pray tell us what has happened to you."
-
-"I will do so, and I must be quick, for I have promised Mr.
-Rucastle to be back before three. I got his leave to come into
-town this morning, though he little knew for what purpose."
-
-"Let us have everything in its due order." Holmes thrust his long
-thin legs out towards the fire and composed himself to listen.
-
-"In the first place, I may say that I have met, on the whole,
-with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
-only fair to them to say that. But I cannot understand them, and
-I am not easy in my mind about them."
-
-"What can you not understand?"
-
-"Their reasons for their conduct. But you shall have it all just
-as it occurred. When I came down, Mr. Rucastle met me here and
-drove me in his dog-cart to the Copper Beeches. It is, as he
-said, beautifully situated, but it is not beautiful in itself,
-for it is a large square block of a house, whitewashed, but all
-stained and streaked with damp and bad weather. There are grounds
-round it, woods on three sides, and on the fourth a field which
-slopes down to the Southampton highroad, which curves past about
-a hundred yards from the front door. This ground in front belongs
-to the house, but the woods all round are part of Lord
-Southerton's preserves. A clump of copper beeches immediately in
-front of the hall door has given its name to the place.
-
-"I was driven over by my employer, who was as amiable as ever,
-and was introduced by him that evening to his wife and the child.
-There was no truth, Mr. Holmes, in the conjecture which seemed to
-us to be probable in your rooms at Baker Street. Mrs. Rucastle is
-not mad. I found her to be a silent, pale-faced woman, much
-younger than her husband, not more than thirty, I should think,
-while he can hardly be less than forty-five. From their
-conversation I have gathered that they have been married about
-seven years, that he was a widower, and that his only child by
-the first wife was the daughter who has gone to Philadelphia. Mr.
-Rucastle told me in private that the reason why she had left them
-was that she had an unreasoning aversion to her stepmother. As
-the daughter could not have been less than twenty, I can quite
-imagine that her position must have been uncomfortable with her
-father's young wife.
-
-"Mrs. Rucastle seemed to me to be colourless in mind as well as
-in feature. She impressed me neither favourably nor the reverse.
-She was a nonentity. It was easy to see that she was passionately
-devoted both to her husband and to her little son. Her light grey
-eyes wandered continually from one to the other, noting every
-little want and forestalling it if possible. He was kind to her
-also in his bluff, boisterous fashion, and on the whole they
-seemed to be a happy couple. And yet she had some secret sorrow,
-this woman. She would often be lost in deep thought, with the
-saddest look upon her face. More than once I have surprised her
-in tears. I have thought sometimes that it was the disposition of
-her child which weighed upon her mind, for I have never met so
-utterly spoiled and so ill-natured a little creature. He is small
-for his age, with a head which is quite disproportionately large.
-His whole life appears to be spent in an alternation between
-savage fits of passion and gloomy intervals of sulking. Giving
-pain to any creature weaker than himself seems to be his one idea
-of amusement, and he shows quite remarkable talent in planning
-the capture of mice, little birds, and insects. But I would
-rather not talk about the creature, Mr. Holmes, and, indeed, he
-has little to do with my story."
-
-"I am glad of all details," remarked my friend, "whether they
-seem to you to be relevant or not."
-
-"I shall try not to miss anything of importance. The one
-unpleasant thing about the house, which struck me at once, was
-the appearance and conduct of the servants. There are only two, a
-man and his wife. Toller, for that is his name, is a rough,
-uncouth man, with grizzled hair and whiskers, and a perpetual
-smell of drink. Twice since I have been with them he has been
-quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
-His wife is a very tall and strong woman with a sour face, as
-silent as Mrs. Rucastle and much less amiable. They are a most
-unpleasant couple, but fortunately I spend most of my time in the
-nursery and my own room, which are next to each other in one
-corner of the building.
-
-"For two days after my arrival at the Copper Beeches my life was
-very quiet; on the third, Mrs. Rucastle came down just after
-breakfast and whispered something to her husband.
-
-"'Oh, yes,' said he, turning to me, 'we are very much obliged to
-you, Miss Hunter, for falling in with our whims so far as to cut
-your hair. I assure you that it has not detracted in the tiniest
-iota from your appearance. We shall now see how the electric-blue
-dress will become you. You will find it laid out upon the bed in
-your room, and if you would be so good as to put it on we should
-both be extremely obliged.'
-
-"The dress which I found waiting for me was of a peculiar shade
-of blue. It was of excellent material, a sort of beige, but it
-bore unmistakable signs of having been worn before. It could not
-have been a better fit if I had been measured for it. Both Mr.
-and Mrs. Rucastle expressed a delight at the look of it, which
-seemed quite exaggerated in its vehemence. They were waiting for
-me in the drawing-room, which is a very large room, stretching
-along the entire front of the house, with three long windows
-reaching down to the floor. A chair had been placed close to the
-central window, with its back turned towards it. In this I was
-asked to sit, and then Mr. Rucastle, walking up and down on the
-other side of the room, began to tell me a series of the funniest
-stories that I have ever listened to. You cannot imagine how
-comical he was, and I laughed until I was quite weary. Mrs.
-Rucastle, however, who has evidently no sense of humour, never so
-much as smiled, but sat with her hands in her lap, and a sad,
-anxious look upon her face. After an hour or so, Mr. Rucastle
-suddenly remarked that it was time to commence the duties of the
-day, and that I might change my dress and go to little Edward in
-the nursery.
-
-"Two days later this same performance was gone through under
-exactly similar circumstances. Again I changed my dress, again I
-sat in the window, and again I laughed very heartily at the funny
-stories of which my employer had an immense répertoire, and which
-he told inimitably. Then he handed me a yellow-backed novel, and
-moving my chair a little sideways, that my own shadow might not
-fall upon the page, he begged me to read aloud to him. I read for
-about ten minutes, beginning in the heart of a chapter, and then
-suddenly, in the middle of a sentence, he ordered me to cease and
-to change my dress.
-
-"You can easily imagine, Mr. Holmes, how curious I became as to
-what the meaning of this extraordinary performance could possibly
-be. They were always very careful, I observed, to turn my face
-away from the window, so that I became consumed with the desire
-to see what was going on behind my back. At first it seemed to be
-impossible, but I soon devised a means. My hand-mirror had been
-broken, so a happy thought seized me, and I concealed a piece of
-the glass in my handkerchief. On the next occasion, in the midst
-of my laughter, I put my handkerchief up to my eyes, and was able
-with a little management to see all that there was behind me. I
-confess that I was disappointed. There was nothing. At least that
-was my first impression. At the second glance, however, I
-perceived that there was a man standing in the Southampton Road,
-a small bearded man in a grey suit, who seemed to be looking in
-my direction. The road is an important highway, and there are
-usually people there. This man, however, was leaning against the
-railings which bordered our field and was looking earnestly up. I
-lowered my handkerchief and glanced at Mrs. Rucastle to find her
-eyes fixed upon me with a most searching gaze. She said nothing,
-but I am convinced that she had divined that I had a mirror in my
-hand and had seen what was behind me. She rose at once.
-
-"'Jephro,' said she, 'there is an impertinent fellow upon the
-road there who stares up at Miss Hunter.'
-
-"'No friend of yours, Miss Hunter?' he asked.
-
-"'No, I know no one in these parts.'
-
-"'Dear me! How very impertinent! Kindly turn round and motion to
-him to go away.'
-
-"'Surely it would be better to take no notice.'
-
-"'No, no, we should have him loitering here always. Kindly turn
-round and wave him away like that.'
-
-"I did as I was told, and at the same instant Mrs. Rucastle drew
-down the blind. That was a week ago, and from that time I have
-not sat again in the window, nor have I worn the blue dress, nor
-seen the man in the road."
-
-"Pray continue," said Holmes. "Your narrative promises to be a
-most interesting one."
-
-"You will find it rather disconnected, I fear, and there may
-prove to be little relation between the different incidents of
-which I speak. On the very first day that I was at the Copper
-Beeches, Mr. Rucastle took me to a small outhouse which stands
-near the kitchen door. As we approached it I heard the sharp
-rattling of a chain, and the sound as of a large animal moving
-about.
-
-"'Look in here!' said Mr. Rucastle, showing me a slit between two
-planks. 'Is he not a beauty?'
-
-"I looked through and was conscious of two glowing eyes, and of a
-vague figure huddled up in the darkness.
-
-"'Don't be frightened,' said my employer, laughing at the start
-which I had given. 'It's only Carlo, my mastiff. I call him mine,
-but really old Toller, my groom, is the only man who can do
-anything with him. We feed him once a day, and not too much then,
-so that he is always as keen as mustard. Toller lets him loose
-every night, and God help the trespasser whom he lays his fangs
-upon. For goodness' sake don't you ever on any pretext set your
-foot over the threshold at night, for it's as much as your life
-is worth.'
-
-"The warning was no idle one, for two nights later I happened to
-look out of my bedroom window about two o'clock in the morning.
-It was a beautiful moonlight night, and the lawn in front of the
-house was silvered over and almost as bright as day. I was
-standing, rapt in the peaceful beauty of the scene, when I was
-aware that something was moving under the shadow of the copper
-beeches. As it emerged into the moonshine I saw what it was. It
-was a giant dog, as large as a calf, tawny tinted, with hanging
-jowl, black muzzle, and huge projecting bones. It walked slowly
-across the lawn and vanished into the shadow upon the other side.
-That dreadful sentinel sent a chill to my heart which I do not
-think that any burglar could have done.
-
-"And now I have a very strange experience to tell you. I had, as
-you know, cut off my hair in London, and I had placed it in a
-great coil at the bottom of my trunk. One evening, after the
-child was in bed, I began to amuse myself by examining the
-furniture of my room and by rearranging my own little things.
-There was an old chest of drawers in the room, the two upper ones
-empty and open, the lower one locked. I had filled the first two
-with my linen, and as I had still much to pack away I was
-naturally annoyed at not having the use of the third drawer. It
-struck me that it might have been fastened by a mere oversight,
-so I took out my bunch of keys and tried to open it. The very
-first key fitted to perfection, and I drew the drawer open. There
-was only one thing in it, but I am sure that you would never
-guess what it was. It was my coil of hair.
-
-"I took it up and examined it. It was of the same peculiar tint,
-and the same thickness. But then the impossibility of the thing
-obtruded itself upon me. How could my hair have been locked in
-the drawer? With trembling hands I undid my trunk, turned out the
-contents, and drew from the bottom my own hair. I laid the two
-tresses together, and I assure you that they were identical. Was
-it not extraordinary? Puzzle as I would, I could make nothing at
-all of what it meant. I returned the strange hair to the drawer,
-and I said nothing of the matter to the Rucastles as I felt that
-I had put myself in the wrong by opening a drawer which they had
-locked.
-
-"I am naturally observant, as you may have remarked, Mr. Holmes,
-and I soon had a pretty good plan of the whole house in my head.
-There was one wing, however, which appeared not to be inhabited
-at all. A door which faced that which led into the quarters of
-the Tollers opened into this suite, but it was invariably locked.
-One day, however, as I ascended the stair, I met Mr. Rucastle
-coming out through this door, his keys in his hand, and a look on
-his face which made him a very different person to the round,
-jovial man to whom I was accustomed. His cheeks were red, his
-brow was all crinkled with anger, and the veins stood out at his
-temples with passion. He locked the door and hurried past me
-without a word or a look.
-
-"This aroused my curiosity, so when I went out for a walk in the
-grounds with my charge, I strolled round to the side from which I
-could see the windows of this part of the house. There were four
-of them in a row, three of which were simply dirty, while the
-fourth was shuttered up. They were evidently all deserted. As I
-strolled up and down, glancing at them occasionally, Mr. Rucastle
-came out to me, looking as merry and jovial as ever.
-
-"'Ah!' said he, 'you must not think me rude if I passed you
-without a word, my dear young lady. I was preoccupied with
-business matters.'
-
-"I assured him that I was not offended. 'By the way,' said I,
-'you seem to have quite a suite of spare rooms up there, and one
-of them has the shutters up.'
-
-"He looked surprised and, as it seemed to me, a little startled
-at my remark.
-
-"'Photography is one of my hobbies,' said he. 'I have made my
-dark room up there. But, dear me! what an observant young lady we
-have come upon. Who would have believed it? Who would have ever
-believed it?' He spoke in a jesting tone, but there was no jest
-in his eyes as he looked at me. I read suspicion there and
-annoyance, but no jest.
-
-"Well, Mr. Holmes, from the moment that I understood that there
-was something about that suite of rooms which I was not to know,
-I was all on fire to go over them. It was not mere curiosity,
-though I have my share of that. It was more a feeling of duty--a
-feeling that some good might come from my penetrating to this
-place. They talk of woman's instinct; perhaps it was woman's
-instinct which gave me that feeling. At any rate, it was there,
-and I was keenly on the lookout for any chance to pass the
-forbidden door.
-
-"It was only yesterday that the chance came. I may tell you that,
-besides Mr. Rucastle, both Toller and his wife find something to
-do in these deserted rooms, and I once saw him carrying a large
-black linen bag with him through the door. Recently he has been
-drinking hard, and yesterday evening he was very drunk; and when
-I came upstairs there was the key in the door. I have no doubt at
-all that he had left it there. Mr. and Mrs. Rucastle were both
-downstairs, and the child was with them, so that I had an
-admirable opportunity. I turned the key gently in the lock,
-opened the door, and slipped through.
-
-"There was a little passage in front of me, unpapered and
-uncarpeted, which turned at a right angle at the farther end.
-Round this corner were three doors in a line, the first and third
-of which were open. They each led into an empty room, dusty and
-cheerless, with two windows in the one and one in the other, so
-thick with dirt that the evening light glimmered dimly through
-them. The centre door was closed, and across the outside of it
-had been fastened one of the broad bars of an iron bed, padlocked
-at one end to a ring in the wall, and fastened at the other with
-stout cord. The door itself was locked as well, and the key was
-not there. This barricaded door corresponded clearly with the
-shuttered window outside, and yet I could see by the glimmer from
-beneath it that the room was not in darkness. Evidently there was
-a skylight which let in light from above. As I stood in the
-passage gazing at the sinister door and wondering what secret it
-might veil, I suddenly heard the sound of steps within the room
-and saw a shadow pass backward and forward against the little
-slit of dim light which shone out from under the door. A mad,
-unreasoning terror rose up in me at the sight, Mr. Holmes. My
-overstrung nerves failed me suddenly, and I turned and ran--ran
-as though some dreadful hand were behind me clutching at the
-skirt of my dress. I rushed down the passage, through the door,
-and straight into the arms of Mr. Rucastle, who was waiting
-outside.
-
-"'So,' said he, smiling, 'it was you, then. I thought that it
-must be when I saw the door open.'
-
-"'Oh, I am so frightened!' I panted.
-
-"'My dear young lady! my dear young lady!'--you cannot think how
-caressing and soothing his manner was--'and what has frightened
-you, my dear young lady?'
-
-"But his voice was just a little too coaxing. He overdid it. I
-was keenly on my guard against him.
-
-"'I was foolish enough to go into the empty wing,' I answered.
-'But it is so lonely and eerie in this dim light that I was
-frightened and ran out again. Oh, it is so dreadfully still in
-there!'
-
-"'Only that?' said he, looking at me keenly.
-
-"'Why, what did you think?' I asked.
-
-"'Why do you think that I lock this door?'
-
-"'I am sure that I do not know.'
-
-"'It is to keep people out who have no business there. Do you
-see?' He was still smiling in the most amiable manner.
-
-"'I am sure if I had known--'
-
-"'Well, then, you know now. And if you ever put your foot over
-that threshold again'--here in an instant the smile hardened into
-a grin of rage, and he glared down at me with the face of a
-demon--'I'll throw you to the mastiff.'
-
-"I was so terrified that I do not know what I did. I suppose that
-I must have rushed past him into my room. I remember nothing
-until I found myself lying on my bed trembling all over. Then I
-thought of you, Mr. Holmes. I could not live there longer without
-some advice. I was frightened of the house, of the man, of the
-woman, of the servants, even of the child. They were all horrible
-to me. If I could only bring you down all would be well. Of
-course I might have fled from the house, but my curiosity was
-almost as strong as my fears. My mind was soon made up. I would
-send you a wire. I put on my hat and cloak, went down to the
-office, which is about half a mile from the house, and then
-returned, feeling very much easier. A horrible doubt came into my
-mind as I approached the door lest the dog might be loose, but I
-remembered that Toller had drunk himself into a state of
-insensibility that evening, and I knew that he was the only one
-in the household who had any influence with the savage creature,
-or who would venture to set him free. I slipped in in safety and
-lay awake half the night in my joy at the thought of seeing you.
-I had no difficulty in getting leave to come into Winchester this
-morning, but I must be back before three o'clock, for Mr. and
-Mrs. Rucastle are going on a visit, and will be away all the
-evening, so that I must look after the child. Now I have told you
-all my adventures, Mr. Holmes, and I should be very glad if you
-could tell me what it all means, and, above all, what I should
-do."
-
-Holmes and I had listened spellbound to this extraordinary story.
-My friend rose now and paced up and down the room, his hands in
-his pockets, and an expression of the most profound gravity upon
-his face.
-
-"Is Toller still drunk?" he asked.
-
-"Yes. I heard his wife tell Mrs. Rucastle that she could do
-nothing with him."
-
-"That is well. And the Rucastles go out to-night?"
-
-"Yes."
-
-"Is there a cellar with a good strong lock?"
-
-"Yes, the wine-cellar."
-
-"You seem to me to have acted all through this matter like a very
-brave and sensible girl, Miss Hunter. Do you think that you could
-perform one more feat? I should not ask it of you if I did not
-think you a quite exceptional woman."
-
-"I will try. What is it?"
-
-"We shall be at the Copper Beeches by seven o'clock, my friend
-and I. The Rucastles will be gone by that time, and Toller will,
-we hope, be incapable. There only remains Mrs. Toller, who might
-give the alarm. If you could send her into the cellar on some
-errand, and then turn the key upon her, you would facilitate
-matters immensely."
-
-"I will do it."
-
-"Excellent! We shall then look thoroughly into the affair. Of
-course there is only one feasible explanation. You have been
-brought there to personate someone, and the real person is
-imprisoned in this chamber. That is obvious. As to who this
-prisoner is, I have no doubt that it is the daughter, Miss Alice
-Rucastle, if I remember right, who was said to have gone to
-America. You were chosen, doubtless, as resembling her in height,
-figure, and the colour of your hair. Hers had been cut off, very
-possibly in some illness through which she has passed, and so, of
-course, yours had to be sacrificed also. By a curious chance you
-came upon her tresses. The man in the road was undoubtedly some
-friend of hers--possibly her fiancé--and no doubt, as you wore
-the girl's dress and were so like her, he was convinced from your
-laughter, whenever he saw you, and afterwards from your gesture,
-that Miss Rucastle was perfectly happy, and that she no longer
-desired his attentions. The dog is let loose at night to prevent
-him from endeavouring to communicate with her. So much is fairly
-clear. The most serious point in the case is the disposition of
-the child."
-
-"What on earth has that to do with it?" I ejaculated.
-
-"My dear Watson, you as a medical man are continually gaining
-light as to the tendencies of a child by the study of the
-parents. Don't you see that the converse is equally valid. I have
-frequently gained my first real insight into the character of
-parents by studying their children. This child's disposition is
-abnormally cruel, merely for cruelty's sake, and whether he
-derives this from his smiling father, as I should suspect, or
-from his mother, it bodes evil for the poor girl who is in their
-power."
-
-"I am sure that you are right, Mr. Holmes," cried our client. "A
-thousand things come back to me which make me certain that you
-have hit it. Oh, let us lose not an instant in bringing help to
-this poor creature."
-
-"We must be circumspect, for we are dealing with a very cunning
-man. We can do nothing until seven o'clock. At that hour we shall
-be with you, and it will not be long before we solve the
-mystery."
-
-We were as good as our word, for it was just seven when we
-reached the Copper Beeches, having put up our trap at a wayside
-public-house. The group of trees, with their dark leaves shining
-like burnished metal in the light of the setting sun, were
-sufficient to mark the house even had Miss Hunter not been
-standing smiling on the door-step.
-
-"Have you managed it?" asked Holmes.
-
-A loud thudding noise came from somewhere downstairs. "That is
-Mrs. Toller in the cellar," said she. "Her husband lies snoring
-on the kitchen rug. Here are his keys, which are the duplicates
-of Mr. Rucastle's."
-
-"You have done well indeed!" cried Holmes with enthusiasm. "Now
-lead the way, and we shall soon see the end of this black
-business."
-
-We passed up the stair, unlocked the door, followed on down a
-passage, and found ourselves in front of the barricade which Miss
-Hunter had described. Holmes cut the cord and removed the
-transverse bar. Then he tried the various keys in the lock, but
-without success. No sound came from within, and at the silence
-Holmes' face clouded over.
-
-"I trust that we are not too late," said he. "I think, Miss
-Hunter, that we had better go in without you. Now, Watson, put
-your shoulder to it, and we shall see whether we cannot make our
-way in."
-
-It was an old rickety door and gave at once before our united
-strength. Together we rushed into the room. It was empty. There
-was no furniture save a little pallet bed, a small table, and a
-basketful of linen. The skylight above was open, and the prisoner
-gone.
-
-"There has been some villainy here," said Holmes; "this beauty
-has guessed Miss Hunter's intentions and has carried his victim
-off."
-
-"But how?"
-
-"Through the skylight. We shall soon see how he managed it." He
-swung himself up onto the roof. "Ah, yes," he cried, "here's the
-end of a long light ladder against the eaves. That is how he did
-it."
-
-"But it is impossible," said Miss Hunter; "the ladder was not
-there when the Rucastles went away."
-
-"He has come back and done it. I tell you that he is a clever and
-dangerous man. I should not be very much surprised if this were
-he whose step I hear now upon the stair. I think, Watson, that it
-would be as well for you to have your pistol ready."
-
-The words were hardly out of his mouth before a man appeared at
-the door of the room, a very fat and burly man, with a heavy
-stick in his hand. Miss Hunter screamed and shrunk against the
-wall at the sight of him, but Sherlock Holmes sprang forward and
-confronted him.
-
-"You villain!" said he, "where's your daughter?"
-
-The fat man cast his eyes round, and then up at the open
-skylight.
-
-"It is for me to ask you that," he shrieked, "you thieves! Spies
-and thieves! I have caught you, have I? You are in my power. I'll
-serve you!" He turned and clattered down the stairs as hard as he
-could go.
-
-"He's gone for the dog!" cried Miss Hunter.
-
-"I have my revolver," said I.
-
-"Better close the front door," cried Holmes, and we all rushed
-down the stairs together. We had hardly reached the hall when we
-heard the baying of a hound, and then a scream of agony, with a
-horrible worrying sound which it was dreadful to listen to. An
-elderly man with a red face and shaking limbs came staggering out
-at a side door.
-
-"My God!" he cried. "Someone has loosed the dog. It's not been
-fed for two days. Quick, quick, or it'll be too late!"
-
-Holmes and I rushed out and round the angle of the house, with
-Toller hurrying behind us. There was the huge famished brute, its
-black muzzle buried in Rucastle's throat, while he writhed and
-screamed upon the ground. Running up, I blew its brains out, and
-it fell over with its keen white teeth still meeting in the great
-creases of his neck. With much labour we separated them and
-carried him, living but horribly mangled, into the house. We laid
-him upon the drawing-room sofa, and having dispatched the sobered
-Toller to bear the news to his wife, I did what I could to
-relieve his pain. We were all assembled round him when the door
-opened, and a tall, gaunt woman entered the room.
-
-"Mrs. Toller!" cried Miss Hunter.
-
-"Yes, miss. Mr. Rucastle let me out when he came back before he
-went up to you. Ah, miss, it is a pity you didn't let me know
-what you were planning, for I would have told you that your pains
-were wasted."
-
-"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
-Toller knows more about this matter than anyone else."
-
-"Yes, sir, I do, and I am ready enough to tell what I know."
-
-"Then, pray, sit down, and let us hear it for there are several
-points on which I must confess that I am still in the dark."
-
-"I will soon make it clear to you," said she; "and I'd have done
-so before now if I could ha' got out from the cellar. If there's
-police-court business over this, you'll remember that I was the
-one that stood your friend, and that I was Miss Alice's friend
-too.
-
-"She was never happy at home, Miss Alice wasn't, from the time
-that her father married again. She was slighted like and had no
-say in anything, but it never really became bad for her until
-after she met Mr. Fowler at a friend's house. As well as I could
-learn, Miss Alice had rights of her own by will, but she was so
-quiet and patient, she was, that she never said a word about them
-but just left everything in Mr. Rucastle's hands. He knew he was
-safe with her; but when there was a chance of a husband coming
-forward, who would ask for all that the law would give him, then
-her father thought it time to put a stop on it. He wanted her to
-sign a paper, so that whether she married or not, he could use
-her money. When she wouldn't do it, he kept on worrying her until
-she got brain-fever, and for six weeks was at death's door. Then
-she got better at last, all worn to a shadow, and with her
-beautiful hair cut off; but that didn't make no change in her
-young man, and he stuck to her as true as man could be."
-
-"Ah," said Holmes, "I think that what you have been good enough
-to tell us makes the matter fairly clear, and that I can deduce
-all that remains. Mr. Rucastle then, I presume, took to this
-system of imprisonment?"
-
-"Yes, sir."
-
-"And brought Miss Hunter down from London in order to get rid of
-the disagreeable persistence of Mr. Fowler."
-
-"That was it, sir."
-
-"But Mr. Fowler being a persevering man, as a good seaman should
-be, blockaded the house, and having met you succeeded by certain
-arguments, metallic or otherwise, in convincing you that your
-interests were the same as his."
-
-"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
-Mrs. Toller serenely.
-
-"And in this way he managed that your good man should have no
-want of drink, and that a ladder should be ready at the moment
-when your master had gone out."
-
-"You have it, sir, just as it happened."
-
-"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
-you have certainly cleared up everything which puzzled us. And
-here comes the country surgeon and Mrs. Rucastle, so I think,
-Watson, that we had best escort Miss Hunter back to Winchester,
-as it seems to me that our locus standi now is rather a
-questionable one."
-
-And thus was solved the mystery of the sinister house with the
-copper beeches in front of the door. Mr. Rucastle survived, but
-was always a broken man, kept alive solely through the care of
-his devoted wife. They still live with their old servants, who
-probably know so much of Rucastle's past life that he finds it
-difficult to part from them. Mr. Fowler and Miss Rucastle were
-married, by special license, in Southampton the day after their
-flight, and he is now the holder of a government appointment in
-the island of Mauritius. As to Miss Violet Hunter, my friend
-Holmes, rather to my disappointment, manifested no further
-interest in her when once she had ceased to be the centre of one
-of his problems, and she is now the head of a private school at
-Walsall, where I believe that she has met with considerable success.
-
-
-
-
-
-
-
-
-
-End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
-Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-***** This file should be named 1661-8.txt or 1661-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/1/6/6/1661/
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.net/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need are critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including including checks, online payments and credit card
-donations.  To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.net
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt
deleted file mode 100644
index a25d303..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt
+++ /dev/null
@@ -1,10216 +0,0 @@
-Project Gutenberg's Memoirs of Sherlock Holmes, by Sir Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-
-Title: Memoirs of Sherlock Holmes
-
-Author: Sir Arthur Conan Doyle
-
-Posting Date: July 31, 2008 [EBook #834]
-Release Date: March, 1997
-[This file last updated on August 16, 2010]
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by Angela M. Cable
-
-
-
-
-
-MEMOIRS OF SHERLOCK HOLMES
-
-by Sir Arthur Conan Doyle
-
-
-
-
-Adventure I. Silver Blaze
-
-
-"I am afraid, Watson, that I shall have to go," said Holmes, as we sat
-down together to our breakfast one morning.
-
-"Go! Where to?"
-
-"To Dartmoor; to King's Pyland."
-
-I was not surprised. Indeed, my only wonder was that he had not already
-been mixed up in this extraordinary case, which was the one topic of
-conversation through the length and breadth of England. For a whole day
-my companion had rambled about the room with his chin upon his chest and
-his brows knitted, charging and recharging his pipe with the strongest
-black tobacco, and absolutely deaf to any of my questions or remarks.
-Fresh editions of every paper had been sent up by our news agent, only
-to be glanced over and tossed down into a corner. Yet, silent as he was,
-I knew perfectly well what it was over which he was brooding. There was
-but one problem before the public which could challenge his powers of
-analysis, and that was the singular disappearance of the favorite for
-the Wessex Cup, and the tragic murder of its trainer. When, therefore,
-he suddenly announced his intention of setting out for the scene of the
-drama it was only what I had both expected and hoped for.
-
-"I should be most happy to go down with you if I should not be in the
-way," said I.
-
-"My dear Watson, you would confer a great favor upon me by coming. And
-I think that your time will not be misspent, for there are points about
-the case which promise to make it an absolutely unique one. We have, I
-think, just time to catch our train at Paddington, and I will go further
-into the matter upon our journey. You would oblige me by bringing with
-you your very excellent field-glass."
-
-And so it happened that an hour or so later I found myself in the
-corner of a first-class carriage flying along en route for Exeter, while
-Sherlock Holmes, with his sharp, eager face framed in his ear-flapped
-travelling-cap, dipped rapidly into the bundle of fresh papers which he
-had procured at Paddington. We had left Reading far behind us before
-he thrust the last one of them under the seat, and offered me his
-cigar-case.
-
-"We are going well," said he, looking out the window and glancing at his
-watch. "Our rate at present is fifty-three and a half miles an hour."
-
-"I have not observed the quarter-mile posts," said I.
-
-"Nor have I. But the telegraph posts upon this line are sixty yards
-apart, and the calculation is a simple one. I presume that you
-have looked into this matter of the murder of John Straker and the
-disappearance of Silver Blaze?"
-
-"I have seen what the Telegraph and the Chronicle have to say."
-
-"It is one of those cases where the art of the reasoner should be
-used rather for the sifting of details than for the acquiring of fresh
-evidence. The tragedy has been so uncommon, so complete and of such
-personal importance to so many people, that we are suffering from a
-plethora of surmise, conjecture, and hypothesis. The difficulty is to
-detach the framework of fact--of absolute undeniable fact--from the
-embellishments of theorists and reporters. Then, having established
-ourselves upon this sound basis, it is our duty to see what inferences
-may be drawn and what are the special points upon which the whole
-mystery turns. On Tuesday evening I received telegrams from both Colonel
-Ross, the owner of the horse, and from Inspector Gregory, who is looking
-after the case, inviting my cooperation."
-
-"Tuesday evening!" I exclaimed. "And this is Thursday morning. Why
-didn't you go down yesterday?"
-
-"Because I made a blunder, my dear Watson--which is, I am afraid, a more
-common occurrence than any one would think who only knew me through your
-memoirs. The fact is that I could not believe it possible that the most
-remarkable horse in England could long remain concealed, especially in
-so sparsely inhabited a place as the north of Dartmoor. From hour to
-hour yesterday I expected to hear that he had been found, and that
-his abductor was the murderer of John Straker. When, however, another
-morning had come, and I found that beyond the arrest of young Fitzroy
-Simpson nothing had been done, I felt that it was time for me to take
-action. Yet in some ways I feel that yesterday has not been wasted."
-
-"You have formed a theory, then?"
-
-"At least I have got a grip of the essential facts of the case. I shall
-enumerate them to you, for nothing clears up a case so much as stating
-it to another person, and I can hardly expect your co-operation if I do
-not show you the position from which we start."
-
-I lay back against the cushions, puffing at my cigar, while Holmes,
-leaning forward, with his long, thin forefinger checking off the points
-upon the palm of his left hand, gave me a sketch of the events which had
-led to our journey.
-
-"Silver Blaze," said he, "is from the Somomy stock, and holds as
-brilliant a record as his famous ancestor. He is now in his fifth year,
-and has brought in turn each of the prizes of the turf to Colonel Ross,
-his fortunate owner. Up to the time of the catastrophe he was the first
-favorite for the Wessex Cup, the betting being three to one on him. He
-has always, however, been a prime favorite with the racing public, and
-has never yet disappointed them, so that even at those odds enormous
-sums of money have been laid upon him. It is obvious, therefore, that
-there were many people who had the strongest interest in preventing
-Silver Blaze from being there at the fall of the flag next Tuesday.
-
-"The fact was, of course, appreciated at King's Pyland, where the
-Colonel's training-stable is situated. Every precaution was taken to
-guard the favorite. The trainer, John Straker, is a retired jockey
-who rode in Colonel Ross's colors before he became too heavy for the
-weighing-chair. He has served the Colonel for five years as jockey and
-for seven as trainer, and has always shown himself to be a zealous and
-honest servant. Under him were three lads; for the establishment was a
-small one, containing only four horses in all. One of these lads sat up
-each night in the stable, while the others slept in the loft. All three
-bore excellent characters. John Straker, who is a married man, lived
-in a small villa about two hundred yards from the stables. He has no
-children, keeps one maid-servant, and is comfortably off. The country
-round is very lonely, but about half a mile to the north there is a
-small cluster of villas which have been built by a Tavistock contractor
-for the use of invalids and others who may wish to enjoy the pure
-Dartmoor air. Tavistock itself lies two miles to the west, while
-across the moor, also about two miles distant, is the larger training
-establishment of Mapleton, which belongs to Lord Backwater, and is
-managed by Silas Brown. In every other direction the moor is a complete
-wilderness, inhabited only by a few roaming gypsies. Such was the
-general situation last Monday night when the catastrophe occurred.
-
-"On that evening the horses had been exercised and watered as usual, and
-the stables were locked up at nine o'clock. Two of the lads walked up
-to the trainer's house, where they had supper in the kitchen, while the
-third, Ned Hunter, remained on guard. At a few minutes after nine
-the maid, Edith Baxter, carried down to the stables his supper, which
-consisted of a dish of curried mutton. She took no liquid, as there was
-a water-tap in the stables, and it was the rule that the lad on duty
-should drink nothing else. The maid carried a lantern with her, as it
-was very dark and the path ran across the open moor.
-
-"Edith Baxter was within thirty yards of the stables, when a man
-appeared out of the darkness and called to her to stop. As he stepped
-into the circle of yellow light thrown by the lantern she saw that he
-was a person of gentlemanly bearing, dressed in a gray suit of tweeds,
-with a cloth cap. He wore gaiters, and carried a heavy stick with a knob
-to it. She was most impressed, however, by the extreme pallor of his
-face and by the nervousness of his manner. His age, she thought, would
-be rather over thirty than under it.
-
-"'Can you tell me where I am?' he asked. 'I had almost made up my mind
-to sleep on the moor, when I saw the light of your lantern.'
-
-"'You are close to the King's Pyland training-stables,' said she.
-
-"'Oh, indeed! What a stroke of luck!' he cried. 'I understand that a
-stable-boy sleeps there alone every night. Perhaps that is his supper
-which you are carrying to him. Now I am sure that you would not be too
-proud to earn the price of a new dress, would you?' He took a piece of
-white paper folded up out of his waistcoat pocket. 'See that the boy
-has this to-night, and you shall have the prettiest frock that money can
-buy.'
-
-"She was frightened by the earnestness of his manner, and ran past him
-to the window through which she was accustomed to hand the meals. It was
-already opened, and Hunter was seated at the small table inside. She had
-begun to tell him of what had happened, when the stranger came up again.
-
-"'Good-evening,' said he, looking through the window. 'I wanted to have
-a word with you.' The girl has sworn that as he spoke she noticed the
-corner of the little paper packet protruding from his closed hand.
-
-"'What business have you here?' asked the lad.
-
-"'It's business that may put something into your pocket,' said the
-other. 'You've two horses in for the Wessex Cup--Silver Blaze and
-Bayard. Let me have the straight tip and you won't be a loser. Is it a
-fact that at the weights Bayard could give the other a hundred yards in
-five furlongs, and that the stable have put their money on him?'
-
-"'So, you're one of those damned touts!' cried the lad. 'I'll show you
-how we serve them in King's Pyland.' He sprang up and rushed across the
-stable to unloose the dog. The girl fled away to the house, but as she
-ran she looked back and saw that the stranger was leaning through the
-window. A minute later, however, when Hunter rushed out with the hound
-he was gone, and though he ran all round the buildings he failed to find
-any trace of him."
-
-"One moment," I asked. "Did the stable-boy, when he ran out with the
-dog, leave the door unlocked behind him?"
-
-"Excellent, Watson, excellent!" murmured my companion. "The importance
-of the point struck me so forcibly that I sent a special wire to
-Dartmoor yesterday to clear the matter up. The boy locked the door
-before he left it. The window, I may add, was not large enough for a man
-to get through.
-
-"Hunter waited until his fellow-grooms had returned, when he sent a
-message to the trainer and told him what had occurred. Straker was
-excited at hearing the account, although he does not seem to have quite
-realized its true significance. It left him, however, vaguely uneasy,
-and Mrs. Straker, waking at one in the morning, found that he was
-dressing. In reply to her inquiries, he said that he could not sleep on
-account of his anxiety about the horses, and that he intended to walk
-down to the stables to see that all was well. She begged him to remain
-at home, as she could hear the rain pattering against the window, but in
-spite of her entreaties he pulled on his large mackintosh and left the
-house.
-
-"Mrs. Straker awoke at seven in the morning, to find that her husband
-had not yet returned. She dressed herself hastily, called the maid, and
-set off for the stables. The door was open; inside, huddled together
-upon a chair, Hunter was sunk in a state of absolute stupor, the
-favorite's stall was empty, and there were no signs of his trainer.
-
-"The two lads who slept in the chaff-cutting loft above the harness-room
-were quickly aroused. They had heard nothing during the night, for they
-are both sound sleepers. Hunter was obviously under the influence of
-some powerful drug, and as no sense could be got out of him, he was left
-to sleep it off while the two lads and the two women ran out in search
-of the absentees. They still had hopes that the trainer had for some
-reason taken out the horse for early exercise, but on ascending the
-knoll near the house, from which all the neighboring moors were visible,
-they not only could see no signs of the missing favorite, but they
-perceived something which warned them that they were in the presence of
-a tragedy.
-
-"About a quarter of a mile from the stables John Straker's overcoat was
-flapping from a furze-bush. Immediately beyond there was a bowl-shaped
-depression in the moor, and at the bottom of this was found the dead
-body of the unfortunate trainer. His head had been shattered by a savage
-blow from some heavy weapon, and he was wounded on the thigh, where
-there was a long, clean cut, inflicted evidently by some very sharp
-instrument. It was clear, however, that Straker had defended himself
-vigorously against his assailants, for in his right hand he held a small
-knife, which was clotted with blood up to the handle, while in his left
-he clasped a red and black silk cravat, which was recognized by the maid
-as having been worn on the preceding evening by the stranger who had
-visited the stables. Hunter, on recovering from his stupor, was also
-quite positive as to the ownership of the cravat. He was equally certain
-that the same stranger had, while standing at the window, drugged his
-curried mutton, and so deprived the stables of their watchman. As to the
-missing horse, there were abundant proofs in the mud which lay at the
-bottom of the fatal hollow that he had been there at the time of the
-struggle. But from that morning he has disappeared, and although a large
-reward has been offered, and all the gypsies of Dartmoor are on the
-alert, no news has come of him. Finally, an analysis has shown that
-the remains of his supper left by the stable-lad contain an appreciable
-quantity of powdered opium, while the people at the house partook of the
-same dish on the same night without any ill effect.
-
-"Those are the main facts of the case, stripped of all surmise, and
-stated as baldly as possible. I shall now recapitulate what the police
-have done in the matter.
-
-"Inspector Gregory, to whom the case has been committed, is an extremely
-competent officer. Were he but gifted with imagination he might rise to
-great heights in his profession. On his arrival he promptly found and
-arrested the man upon whom suspicion naturally rested. There was little
-difficulty in finding him, for he inhabited one of those villas which I
-have mentioned. His name, it appears, was Fitzroy Simpson. He was a man
-of excellent birth and education, who had squandered a fortune upon the
-turf, and who lived now by doing a little quiet and genteel book-making
-in the sporting clubs of London. An examination of his betting-book
-shows that bets to the amount of five thousand pounds had been
-registered by him against the favorite. On being arrested he volunteered
-that statement that he had come down to Dartmoor in the hope of
-getting some information about the King's Pyland horses, and also about
-Desborough, the second favorite, which was in charge of Silas Brown at
-the Mapleton stables. He did not attempt to deny that he had acted as
-described upon the evening before, but declared that he had no sinister
-designs, and had simply wished to obtain first-hand information. When
-confronted with his cravat, he turned very pale, and was utterly unable
-to account for its presence in the hand of the murdered man. His wet
-clothing showed that he had been out in the storm of the night before,
-and his stick, which was a Penang-lawyer weighted with lead, was just
-such a weapon as might, by repeated blows, have inflicted the terrible
-injuries to which the trainer had succumbed. On the other hand, there
-was no wound upon his person, while the state of Straker's knife would
-show that one at least of his assailants must bear his mark upon him.
-There you have it all in a nutshell, Watson, and if you can give me any
-light I shall be infinitely obliged to you."
-
-I had listened with the greatest interest to the statement which Holmes,
-with characteristic clearness, had laid before me. Though most of the
-facts were familiar to me, I had not sufficiently appreciated their
-relative importance, nor their connection to each other.
-
-"Is it not possible," I suggested, "that the incised wound upon Straker
-may have been caused by his own knife in the convulsive struggles which
-follow any brain injury?"
-
-"It is more than possible; it is probable," said Holmes. "In that case
-one of the main points in favor of the accused disappears."
-
-"And yet," said I, "even now I fail to understand what the theory of the
-police can be."
-
-"I am afraid that whatever theory we state has very grave objections to
-it," returned my companion. "The police imagine, I take it, that this
-Fitzroy Simpson, having drugged the lad, and having in some way obtained
-a duplicate key, opened the stable door and took out the horse, with
-the intention, apparently, of kidnapping him altogether. His bridle is
-missing, so that Simpson must have put this on. Then, having left the
-door open behind him, he was leading the horse away over the moor, when
-he was either met or overtaken by the trainer. A row naturally ensued.
-Simpson beat out the trainer's brains with his heavy stick without
-receiving any injury from the small knife which Straker used in
-self-defence, and then the thief either led the horse on to some secret
-hiding-place, or else it may have bolted during the struggle, and be
-now wandering out on the moors. That is the case as it appears to
-the police, and improbable as it is, all other explanations are more
-improbable still. However, I shall very quickly test the matter when I
-am once upon the spot, and until then I cannot really see how we can get
-much further than our present position."
-
-It was evening before we reached the little town of Tavistock, which
-lies, like the boss of a shield, in the middle of the huge circle of
-Dartmoor. Two gentlemen were awaiting us in the station--the one a tall,
-fair man with lion-like hair and beard and curiously penetrating light
-blue eyes; the other a small, alert person, very neat and dapper, in a
-frock-coat and gaiters, with trim little side-whiskers and an eye-glass.
-The latter was Colonel Ross, the well-known sportsman; the other,
-Inspector Gregory, a man who was rapidly making his name in the English
-detective service.
-
-"I am delighted that you have come down, Mr. Holmes," said the Colonel.
-"The Inspector here has done all that could possibly be suggested, but I
-wish to leave no stone unturned in trying to avenge poor Straker and in
-recovering my horse."
-
-"Have there been any fresh developments?" asked Holmes.
-
-"I am sorry to say that we have made very little progress," said the
-Inspector. "We have an open carriage outside, and as you would no doubt
-like to see the place before the light fails, we might talk it over as
-we drive."
-
-A minute later we were all seated in a comfortable landau, and were
-rattling through the quaint old Devonshire city. Inspector Gregory was
-full of his case, and poured out a stream of remarks, while Holmes threw
-in an occasional question or interjection. Colonel Ross leaned back with
-his arms folded and his hat tilted over his eyes, while I listened with
-interest to the dialogue of the two detectives. Gregory was formulating
-his theory, which was almost exactly what Holmes had foretold in the
-train.
-
-"The net is drawn pretty close round Fitzroy Simpson," he remarked, "and
-I believe myself that he is our man. At the same time I recognize that
-the evidence is purely circumstantial, and that some new development may
-upset it."
-
-"How about Straker's knife?"
-
-"We have quite come to the conclusion that he wounded himself in his
-fall."
-
-"My friend Dr. Watson made that suggestion to me as we came down. If so,
-it would tell against this man Simpson."
-
-"Undoubtedly. He has neither a knife nor any sign of a wound. The
-evidence against him is certainly very strong. He had a great interest
-in the disappearance of the favorite. He lies under suspicion of having
-poisoned the stable-boy, he was undoubtedly out in the storm, he was
-armed with a heavy stick, and his cravat was found in the dead man's
-hand. I really think we have enough to go before a jury."
-
-Holmes shook his head. "A clever counsel would tear it all to rags,"
-said he. "Why should he take the horse out of the stable? If he wished
-to injure it why could he not do it there? Has a duplicate key been
-found in his possession? What chemist sold him the powdered opium? Above
-all, where could he, a stranger to the district, hide a horse, and such
-a horse as this? What is his own explanation as to the paper which he
-wished the maid to give to the stable-boy?"
-
-"He says that it was a ten-pound note. One was found in his purse. But
-your other difficulties are not so formidable as they seem. He is not
-a stranger to the district. He has twice lodged at Tavistock in the
-summer. The opium was probably brought from London. The key, having
-served its purpose, would be hurled away. The horse may be at the bottom
-of one of the pits or old mines upon the moor."
-
-"What does he say about the cravat?"
-
-"He acknowledges that it is his, and declares that he had lost it. But a
-new element has been introduced into the case which may account for his
-leading the horse from the stable."
-
-Holmes pricked up his ears.
-
-"We have found traces which show that a party of gypsies encamped on
-Monday night within a mile of the spot where the murder took place. On
-Tuesday they were gone. Now, presuming that there was some understanding
-between Simpson and these gypsies, might he not have been leading the
-horse to them when he was overtaken, and may they not have him now?"
-
-"It is certainly possible."
-
-"The moor is being scoured for these gypsies. I have also examined every
-stable and out-house in Tavistock, and for a radius of ten miles."
-
-"There is another training-stable quite close, I understand?"
-
-"Yes, and that is a factor which we must certainly not neglect. As
-Desborough, their horse, was second in the betting, they had an interest
-in the disappearance of the favorite. Silas Brown, the trainer, is known
-to have had large bets upon the event, and he was no friend to poor
-Straker. We have, however, examined the stables, and there is nothing to
-connect him with the affair."
-
-"And nothing to connect this man Simpson with the interests of the
-Mapleton stables?"
-
-"Nothing at all."
-
-Holmes leaned back in the carriage, and the conversation ceased. A few
-minutes later our driver pulled up at a neat little red-brick villa with
-overhanging eaves which stood by the road. Some distance off, across a
-paddock, lay a long gray-tiled out-building. In every other direction
-the low curves of the moor, bronze-colored from the fading ferns,
-stretched away to the sky-line, broken only by the steeples of
-Tavistock, and by a cluster of houses away to the westward which marked
-the Mapleton stables. We all sprang out with the exception of Holmes,
-who continued to lean back with his eyes fixed upon the sky in front of
-him, entirely absorbed in his own thoughts. It was only when I touched
-his arm that he roused himself with a violent start and stepped out of
-the carriage.
-
-"Excuse me," said he, turning to Colonel Ross, who had looked at him in
-some surprise. "I was day-dreaming." There was a gleam in his eyes and a
-suppressed excitement in his manner which convinced me, used as I was
-to his ways, that his hand was upon a clue, though I could not imagine
-where he had found it.
-
-"Perhaps you would prefer at once to go on to the scene of the crime,
-Mr. Holmes?" said Gregory.
-
-"I think that I should prefer to stay here a little and go into one or
-two questions of detail. Straker was brought back here, I presume?"
-
-"Yes; he lies upstairs. The inquest is to-morrow."
-
-"He has been in your service some years, Colonel Ross?"
-
-"I have always found him an excellent servant."
-
-"I presume that you made an inventory of what he had in his pockets at
-the time of his death, Inspector?"
-
-"I have the things themselves in the sitting-room, if you would care to
-see them."
-
-"I should be very glad." We all filed into the front room and sat round
-the central table while the Inspector unlocked a square tin box and laid
-a small heap of things before us. There was a box of vestas, two inches
-of tallow candle, an A D P brier-root pipe, a pouch of seal-skin with
-half an ounce of long-cut Cavendish, a silver watch with a gold chain,
-five sovereigns in gold, an aluminum pencil-case, a few papers, and an
-ivory-handled knife with a very delicate, inflexible blade marked Weiss
-& Co., London.
-
-"This is a very singular knife," said Holmes, lifting it up and
-examining it minutely. "I presume, as I see blood-stains upon it, that
-it is the one which was found in the dead man's grasp. Watson, this
-knife is surely in your line?"
-
-"It is what we call a cataract knife," said I.
-
-"I thought so. A very delicate blade devised for very delicate work.
-A strange thing for a man to carry with him upon a rough expedition,
-especially as it would not shut in his pocket."
-
-"The tip was guarded by a disk of cork which we found beside his body,"
-said the Inspector. "His wife tells us that the knife had lain upon the
-dressing-table, and that he had picked it up as he left the room. It was
-a poor weapon, but perhaps the best that he could lay his hands on at
-the moment."
-
-"Very possible. How about these papers?"
-
-"Three of them are receipted hay-dealers' accounts. One of them is a
-letter of instructions from Colonel Ross. This other is a milliner's
-account for thirty-seven pounds fifteen made out by Madame Lesurier,
-of Bond Street, to William Derbyshire. Mrs. Straker tells us that
-Derbyshire was a friend of her husband's and that occasionally his
-letters were addressed here."
-
-"Madam Derbyshire had somewhat expensive tastes," remarked Holmes,
-glancing down the account. "Twenty-two guineas is rather heavy for a
-single costume. However there appears to be nothing more to learn, and
-we may now go down to the scene of the crime."
-
-As we emerged from the sitting-room a woman, who had been waiting in
-the passage, took a step forward and laid her hand upon the Inspector's
-sleeve. Her face was haggard and thin and eager, stamped with the print
-of a recent horror.
-
-"Have you got them? Have you found them?" she panted.
-
-"No, Mrs. Straker. But Mr. Holmes here has come from London to help us,
-and we shall do all that is possible."
-
-"Surely I met you in Plymouth at a garden-party some little time ago,
-Mrs. Straker?" said Holmes.
-
-"No, sir; you are mistaken."
-
-"Dear me! Why, I could have sworn to it. You wore a costume of
-dove-colored silk with ostrich-feather trimming."
-
-"I never had such a dress, sir," answered the lady.
-
-"Ah, that quite settles it," said Holmes. And with an apology he
-followed the Inspector outside. A short walk across the moor took us to
-the hollow in which the body had been found. At the brink of it was the
-furze-bush upon which the coat had been hung.
-
-"There was no wind that night, I understand," said Holmes.
-
-"None; but very heavy rain."
-
-"In that case the overcoat was not blown against the furze-bush, but
-placed there."
-
-"Yes, it was laid across the bush."
-
-"You fill me with interest, I perceive that the ground has been trampled
-up a good deal. No doubt many feet have been here since Monday night."
-
-"A piece of matting has been laid here at the side, and we have all
-stood upon that."
-
-"Excellent."
-
-"In this bag I have one of the boots which Straker wore, one of Fitzroy
-Simpson's shoes, and a cast horseshoe of Silver Blaze."
-
-"My dear Inspector, you surpass yourself!" Holmes took the bag, and,
-descending into the hollow, he pushed the matting into a more central
-position. Then stretching himself upon his face and leaning his chin
-upon his hands, he made a careful study of the trampled mud in front of
-him. "Hullo!" said he, suddenly. "What's this?" It was a wax vesta half
-burned, which was so coated with mud that it looked at first like a
-little chip of wood.
-
-"I cannot think how I came to overlook it," said the Inspector, with an
-expression of annoyance.
-
-"It was invisible, buried in the mud. I only saw it because I was
-looking for it."
-
-"What! You expected to find it?"
-
-"I thought it not unlikely."
-
-He took the boots from the bag, and compared the impressions of each of
-them with marks upon the ground. Then he clambered up to the rim of the
-hollow, and crawled about among the ferns and bushes.
-
-"I am afraid that there are no more tracks," said the Inspector. "I
-have examined the ground very carefully for a hundred yards in each
-direction."
-
-"Indeed!" said Holmes, rising. "I should not have the impertinence to
-do it again after what you say. But I should like to take a little walk
-over the moor before it grows dark, that I may know my ground to-morrow,
-and I think that I shall put this horseshoe into my pocket for luck."
-
-Colonel Ross, who had shown some signs of impatience at my companion's
-quiet and systematic method of work, glanced at his watch. "I wish you
-would come back with me, Inspector," said he. "There are several points
-on which I should like your advice, and especially as to whether we do
-not owe it to the public to remove our horse's name from the entries for
-the Cup."
-
-"Certainly not," cried Holmes, with decision. "I should let the name
-stand."
-
-The Colonel bowed. "I am very glad to have had your opinion, sir," said
-he. "You will find us at poor Straker's house when you have finished
-your walk, and we can drive together into Tavistock."
-
-He turned back with the Inspector, while Holmes and I walked slowly
-across the moor. The sun was beginning to sink behind the stables of
-Mapleton, and the long, sloping plain in front of us was tinged with
-gold, deepening into rich, ruddy browns where the faded ferns and
-brambles caught the evening light. But the glories of the landscape were
-all wasted upon my companion, who was sunk in the deepest thought.
-
-"It's this way, Watson," said he at last. "We may leave the question
-of who killed John Straker for the instant, and confine ourselves to
-finding out what has become of the horse. Now, supposing that he broke
-away during or after the tragedy, where could he have gone to? The horse
-is a very gregarious creature. If left to himself his instincts would
-have been either to return to King's Pyland or go over to Mapleton. Why
-should he run wild upon the moor? He would surely have been seen by now.
-And why should gypsies kidnap him? These people always clear out when
-they hear of trouble, for they do not wish to be pestered by the police.
-They could not hope to sell such a horse. They would run a great risk
-and gain nothing by taking him. Surely that is clear."
-
-"Where is he, then?"
-
-"I have already said that he must have gone to King's Pyland or to
-Mapleton. He is not at King's Pyland. Therefore he is at Mapleton. Let
-us take that as a working hypothesis and see what it leads us to. This
-part of the moor, as the Inspector remarked, is very hard and dry. But
-it falls away towards Mapleton, and you can see from here that there
-is a long hollow over yonder, which must have been very wet on Monday
-night. If our supposition is correct, then the horse must have crossed
-that, and there is the point where we should look for his tracks."
-
-We had been walking briskly during this conversation, and a few more
-minutes brought us to the hollow in question. At Holmes' request I
-walked down the bank to the right, and he to the left, but I had not
-taken fifty paces before I heard him give a shout, and saw him waving
-his hand to me. The track of a horse was plainly outlined in the soft
-earth in front of him, and the shoe which he took from his pocket
-exactly fitted the impression.
-
-"See the value of imagination," said Holmes. "It is the one quality
-which Gregory lacks. We imagined what might have happened, acted upon
-the supposition, and find ourselves justified. Let us proceed."
-
-We crossed the marshy bottom and passed over a quarter of a mile of dry,
-hard turf. Again the ground sloped, and again we came on the tracks.
-Then we lost them for half a mile, but only to pick them up once more
-quite close to Mapleton. It was Holmes who saw them first, and he stood
-pointing with a look of triumph upon his face. A man's track was visible
-beside the horse's.
-
-"The horse was alone before," I cried.
-
-"Quite so. It was alone before. Hullo, what is this?"
-
-The double track turned sharp off and took the direction of King's
-Pyland. Holmes whistled, and we both followed along after it. His eyes
-were on the trail, but I happened to look a little to one side, and
-saw to my surprise the same tracks coming back again in the opposite
-direction.
-
-"One for you, Watson," said Holmes, when I pointed it out. "You have
-saved us a long walk, which would have brought us back on our own
-traces. Let us follow the return track."
-
-We had not to go far. It ended at the paving of asphalt which led up
-to the gates of the Mapleton stables. As we approached, a groom ran out
-from them.
-
-"We don't want any loiterers about here," said he.
-
-"I only wished to ask a question," said Holmes, with his finger and
-thumb in his waistcoat pocket. "Should I be too early to see your
-master, Mr. Silas Brown, if I were to call at five o'clock to-morrow
-morning?"
-
-"Bless you, sir, if any one is about he will be, for he is always
-the first stirring. But here he is, sir, to answer your questions for
-himself. No, sir, no; it is as much as my place is worth to let him see
-me touch your money. Afterwards, if you like."
-
-As Sherlock Holmes replaced the half-crown which he had drawn from his
-pocket, a fierce-looking elderly man strode out from the gate with a
-hunting-crop swinging in his hand.
-
-"What's this, Dawson!" he cried. "No gossiping! Go about your business!
-And you, what the devil do you want here?"
-
-"Ten minutes' talk with you, my good sir," said Holmes in the sweetest
-of voices.
-
-"I've no time to talk to every gadabout. We want no stranger here. Be
-off, or you may find a dog at your heels."
-
-Holmes leaned forward and whispered something in the trainer's ear. He
-started violently and flushed to the temples.
-
-"It's a lie!" he shouted, "an infernal lie!"
-
-"Very good. Shall we argue about it here in public or talk it over in
-your parlor?"
-
-"Oh, come in if you wish to."
-
-Holmes smiled. "I shall not keep you more than a few minutes, Watson,"
-said he. "Now, Mr. Brown, I am quite at your disposal."
-
-It was twenty minutes, and the reds had all faded into grays before
-Holmes and the trainer reappeared. Never have I seen such a change as
-had been brought about in Silas Brown in that short time. His face was
-ashy pale, beads of perspiration shone upon his brow, and his hands
-shook until the hunting-crop wagged like a branch in the wind. His
-bullying, overbearing manner was all gone too, and he cringed along at
-my companion's side like a dog with its master.
-
-"Your instructions will be done. It shall all be done," said he.
-
-"There must be no mistake," said Holmes, looking round at him. The other
-winced as he read the menace in his eyes.
-
-"Oh no, there shall be no mistake. It shall be there. Should I change it
-first or not?"
-
-Holmes thought a little and then burst out laughing. "No, don't," said
-he; "I shall write to you about it. No tricks, now, or--"
-
-"Oh, you can trust me, you can trust me!"
-
-"Yes, I think I can. Well, you shall hear from me to-morrow." He turned
-upon his heel, disregarding the trembling hand which the other held out
-to him, and we set off for King's Pyland.
-
-"A more perfect compound of the bully, coward, and sneak than Master
-Silas Brown I have seldom met with," remarked Holmes as we trudged along
-together.
-
-"He has the horse, then?"
-
-"He tried to bluster out of it, but I described to him so exactly what
-his actions had been upon that morning that he is convinced that I was
-watching him. Of course you observed the peculiarly square toes in the
-impressions, and that his own boots exactly corresponded to them.
-Again, of course no subordinate would have dared to do such a thing.
-I described to him how, when according to his custom he was the first
-down, he perceived a strange horse wandering over the moor. How he went
-out to it, and his astonishment at recognizing, from the white forehead
-which has given the favorite its name, that chance had put in his power
-the only horse which could beat the one upon which he had put his money.
-Then I described how his first impulse had been to lead him back to
-King's Pyland, and how the devil had shown him how he could hide the
-horse until the race was over, and how he had led it back and concealed
-it at Mapleton. When I told him every detail he gave it up and thought
-only of saving his own skin."
-
-"But his stables had been searched?"
-
-"Oh, an old horse-faker like him has many a dodge."
-
-"But are you not afraid to leave the horse in his power now, since he
-has every interest in injuring it?"
-
-"My dear fellow, he will guard it as the apple of his eye. He knows that
-his only hope of mercy is to produce it safe."
-
-"Colonel Ross did not impress me as a man who would be likely to show
-much mercy in any case."
-
-"The matter does not rest with Colonel Ross. I follow my own methods,
-and tell as much or as little as I choose. That is the advantage of
-being unofficial. I don't know whether you observed it, Watson, but the
-Colonel's manner has been just a trifle cavalier to me. I am inclined
-now to have a little amusement at his expense. Say nothing to him about
-the horse."
-
-"Certainly not without your permission."
-
-"And of course this is all quite a minor point compared to the question
-of who killed John Straker."
-
-"And you will devote yourself to that?"
-
-"On the contrary, we both go back to London by the night train."
-
-I was thunderstruck by my friend's words. We had only been a few hours
-in Devonshire, and that he should give up an investigation which he had
-begun so brilliantly was quite incomprehensible to me. Not a word more
-could I draw from him until we were back at the trainer's house. The
-Colonel and the Inspector were awaiting us in the parlor.
-
-"My friend and I return to town by the night-express," said Holmes. "We
-have had a charming little breath of your beautiful Dartmoor air."
-
-The Inspector opened his eyes, and the Colonel's lip curled in a sneer.
-
-"So you despair of arresting the murderer of poor Straker," said he.
-
-Holmes shrugged his shoulders. "There are certainly grave difficulties
-in the way," said he. "I have every hope, however, that your horse
-will start upon Tuesday, and I beg that you will have your jockey in
-readiness. Might I ask for a photograph of Mr. John Straker?"
-
-The Inspector took one from an envelope and handed it to him.
-
-"My dear Gregory, you anticipate all my wants. If I might ask you to
-wait here for an instant, I have a question which I should like to put
-to the maid."
-
-"I must say that I am rather disappointed in our London consultant,"
-said Colonel Ross, bluntly, as my friend left the room. "I do not see
-that we are any further than when he came."
-
-"At least you have his assurance that your horse will run," said I.
-
-"Yes, I have his assurance," said the Colonel, with a shrug of his
-shoulders. "I should prefer to have the horse."
-
-I was about to make some reply in defence of my friend when he entered
-the room again.
-
-"Now, gentlemen," said he, "I am quite ready for Tavistock."
-
-As we stepped into the carriage one of the stable-lads held the door
-open for us. A sudden idea seemed to occur to Holmes, for he leaned
-forward and touched the lad upon the sleeve.
-
-"You have a few sheep in the paddock," he said. "Who attends to them?"
-
-"I do, sir."
-
-"Have you noticed anything amiss with them of late?"
-
-"Well, sir, not of much account; but three of them have gone lame, sir."
-
-I could see that Holmes was extremely pleased, for he chuckled and
-rubbed his hands together.
-
-"A long shot, Watson; a very long shot," said he, pinching my arm.
-"Gregory, let me recommend to your attention this singular epidemic
-among the sheep. Drive on, coachman!"
-
-Colonel Ross still wore an expression which showed the poor opinion
-which he had formed of my companion's ability, but I saw by the
-Inspector's face that his attention had been keenly aroused.
-
-"You consider that to be important?" he asked.
-
-"Exceedingly so."
-
-"Is there any point to which you would wish to draw my attention?"
-
-"To the curious incident of the dog in the night-time."
-
-"The dog did nothing in the night-time."
-
-"That was the curious incident," remarked Sherlock Holmes.
-
-
-Four days later Holmes and I were again in the train, bound for
-Winchester to see the race for the Wessex Cup. Colonel Ross met us by
-appointment outside the station, and we drove in his drag to the course
-beyond the town. His face was grave, and his manner was cold in the
-extreme.
-
-"I have seen nothing of my horse," said he.
-
-"I suppose that you would know him when you saw him?" asked Holmes.
-
-The Colonel was very angry. "I have been on the turf for twenty years,
-and never was asked such a question as that before," said he. "A
-child would know Silver Blaze, with his white forehead and his mottled
-off-foreleg."
-
-"How is the betting?"
-
-"Well, that is the curious part of it. You could have got fifteen to one
-yesterday, but the price has become shorter and shorter, until you can
-hardly get three to one now."
-
-"Hum!" said Holmes. "Somebody knows something, that is clear."
-
-As the drag drew up in the enclosure near the grand stand I glanced at
-the card to see the entries.
-
-Wessex Plate [it ran] 50 sovs each h ft with 1000 sovs added for four
-and five year olds. Second, L300. Third, L200. New course (one mile and
-five furlongs). Mr. Heath Newton's The Negro. Red cap. Cinnamon jacket.
-Colonel Wardlaw's Pugilist. Pink cap. Blue and black jacket. Lord
-Backwater's Desborough. Yellow cap and sleeves. Colonel Ross's Silver
-Blaze. Black cap. Red jacket. Duke of Balmoral's Iris. Yellow and black
-stripes. Lord Singleford's Rasper. Purple cap. Black sleeves.
-
-"We scratched our other one, and put all hopes on your word," said the
-Colonel. "Why, what is that? Silver Blaze favorite?"
-
-"Five to four against Silver Blaze!" roared the ring. "Five to four
-against Silver Blaze! Five to fifteen against Desborough! Five to four
-on the field!"
-
-"There are the numbers up," I cried. "They are all six there."
-
-"All six there? Then my horse is running," cried the Colonel in great
-agitation. "But I don't see him. My colors have not passed."
-
-"Only five have passed. This must be he."
-
-As I spoke a powerful bay horse swept out from the weighing enclosure
-and cantered past us, bearing on its back the well-known black and red
-of the Colonel.
-
-"That's not my horse," cried the owner. "That beast has not a white hair
-upon its body. What is this that you have done, Mr. Holmes?"
-
-"Well, well, let us see how he gets on," said my friend, imperturbably.
-For a few minutes he gazed through my field-glass. "Capital! An
-excellent start!" he cried suddenly. "There they are, coming round the
-curve!"
-
-From our drag we had a superb view as they came up the straight. The six
-horses were so close together that a carpet could have covered them,
-but half way up the yellow of the Mapleton stable showed to the front.
-Before they reached us, however, Desborough's bolt was shot, and the
-Colonel's horse, coming away with a rush, passed the post a good six
-lengths before its rival, the Duke of Balmoral's Iris making a bad
-third.
-
-"It's my race, anyhow," gasped the Colonel, passing his hand over his
-eyes. "I confess that I can make neither head nor tail of it. Don't you
-think that you have kept up your mystery long enough, Mr. Holmes?"
-
-"Certainly, Colonel, you shall know everything. Let us all go round and
-have a look at the horse together. Here he is," he continued, as we made
-our way into the weighing enclosure, where only owners and their friends
-find admittance. "You have only to wash his face and his leg in spirits
-of wine, and you will find that he is the same old Silver Blaze as
-ever."
-
-"You take my breath away!"
-
-"I found him in the hands of a faker, and took the liberty of running
-him just as he was sent over."
-
-"My dear sir, you have done wonders. The horse looks very fit and well.
-It never went better in its life. I owe you a thousand apologies
-for having doubted your ability. You have done me a great service by
-recovering my horse. You would do me a greater still if you could lay
-your hands on the murderer of John Straker."
-
-"I have done so," said Holmes quietly.
-
-The Colonel and I stared at him in amazement. "You have got him! Where
-is he, then?"
-
-"He is here."
-
-"Here! Where?"
-
-"In my company at the present moment."
-
-The Colonel flushed angrily. "I quite recognize that I am under
-obligations to you, Mr. Holmes," said he, "but I must regard what you
-have just said as either a very bad joke or an insult."
-
-Sherlock Holmes laughed. "I assure you that I have not associated
-you with the crime, Colonel," said he. "The real murderer is standing
-immediately behind you." He stepped past and laid his hand upon the
-glossy neck of the thoroughbred.
-
-"The horse!" cried both the Colonel and myself.
-
-"Yes, the horse. And it may lessen his guilt if I say that it was
-done in self-defence, and that John Straker was a man who was entirely
-unworthy of your confidence. But there goes the bell, and as I stand
-to win a little on this next race, I shall defer a lengthy explanation
-until a more fitting time."
-
-
-
-We had the corner of a Pullman car to ourselves that evening as we
-whirled back to London, and I fancy that the journey was a short one
-to Colonel Ross as well as to myself, as we listened to our
-companion's narrative of the events which had occurred at the Dartmoor
-training-stables upon the Monday night, and the means by which he had
-unravelled them.
-
-"I confess," said he, "that any theories which I had formed from
-the newspaper reports were entirely erroneous. And yet there were
-indications there, had they not been overlaid by other details which
-concealed their true import. I went to Devonshire with the conviction
-that Fitzroy Simpson was the true culprit, although, of course, I saw
-that the evidence against him was by no means complete. It was while I
-was in the carriage, just as we reached the trainer's house, that the
-immense significance of the curried mutton occurred to me. You may
-remember that I was distrait, and remained sitting after you had all
-alighted. I was marvelling in my own mind how I could possibly have
-overlooked so obvious a clue."
-
-"I confess," said the Colonel, "that even now I cannot see how it helps
-us."
-
-"It was the first link in my chain of reasoning. Powdered opium is by no
-means tasteless. The flavor is not disagreeable, but it is perceptible.
-Were it mixed with any ordinary dish the eater would undoubtedly detect
-it, and would probably eat no more. A curry was exactly the medium
-which would disguise this taste. By no possible supposition could
-this stranger, Fitzroy Simpson, have caused curry to be served in
-the trainer's family that night, and it is surely too monstrous a
-coincidence to suppose that he happened to come along with powdered
-opium upon the very night when a dish happened to be served which would
-disguise the flavor. That is unthinkable. Therefore Simpson becomes
-eliminated from the case, and our attention centers upon Straker and
-his wife, the only two people who could have chosen curried mutton for
-supper that night. The opium was added after the dish was set aside
-for the stable-boy, for the others had the same for supper with no ill
-effects. Which of them, then, had access to that dish without the maid
-seeing them?
-
-"Before deciding that question I had grasped the significance of the
-silence of the dog, for one true inference invariably suggests others.
-The Simpson incident had shown me that a dog was kept in the stables,
-and yet, though some one had been in and had fetched out a horse, he
-had not barked enough to arouse the two lads in the loft. Obviously the
-midnight visitor was some one whom the dog knew well.
-
-"I was already convinced, or almost convinced, that John Straker went
-down to the stables in the dead of the night and took out Silver Blaze.
-For what purpose? For a dishonest one, obviously, or why should he drug
-his own stable-boy? And yet I was at a loss to know why. There have been
-cases before now where trainers have made sure of great sums of money
-by laying against their own horses, through agents, and then preventing
-them from winning by fraud. Sometimes it is a pulling jockey. Sometimes
-it is some surer and subtler means. What was it here? I hoped that the
-contents of his pockets might help me to form a conclusion.
-
-"And they did so. You cannot have forgotten the singular knife which was
-found in the dead man's hand, a knife which certainly no sane man would
-choose for a weapon. It was, as Dr. Watson told us, a form of knife
-which is used for the most delicate operations known in surgery. And it
-was to be used for a delicate operation that night. You must know, with
-your wide experience of turf matters, Colonel Ross, that it is possible
-to make a slight nick upon the tendons of a horse's ham, and to do it
-subcutaneously, so as to leave absolutely no trace. A horse so treated
-would develop a slight lameness, which would be put down to a strain in
-exercise or a touch of rheumatism, but never to foul play."
-
-"Villain! Scoundrel!" cried the Colonel.
-
-"We have here the explanation of why John Straker wished to take the
-horse out on to the moor. So spirited a creature would have certainly
-roused the soundest of sleepers when it felt the prick of the knife. It
-was absolutely necessary to do it in the open air."
-
-"I have been blind!" cried the Colonel. "Of course that was why he
-needed the candle, and struck the match."
-
-"Undoubtedly. But in examining his belongings I was fortunate enough to
-discover not only the method of the crime, but even its motives. As a
-man of the world, Colonel, you know that men do not carry other people's
-bills about in their pockets. We have most of us quite enough to do to
-settle our own. I at once concluded that Straker was leading a double
-life, and keeping a second establishment. The nature of the bill showed
-that there was a lady in the case, and one who had expensive tastes.
-Liberal as you are with your servants, one can hardly expect that they
-can buy twenty-guinea walking dresses for their ladies. I questioned
-Mrs. Straker as to the dress without her knowing it, and having
-satisfied myself that it had never reached her, I made a note of the
-milliner's address, and felt that by calling there with Straker's
-photograph I could easily dispose of the mythical Derbyshire.
-
-"From that time on all was plain. Straker had led out the horse to a
-hollow where his light would be invisible. Simpson in his flight had
-dropped his cravat, and Straker had picked it up--with some idea,
-perhaps, that he might use it in securing the horse's leg. Once in the
-hollow, he had got behind the horse and had struck a light; but the
-creature frightened at the sudden glare, and with the strange instinct
-of animals feeling that some mischief was intended, had lashed out, and
-the steel shoe had struck Straker full on the forehead. He had already,
-in spite of the rain, taken off his overcoat in order to do his delicate
-task, and so, as he fell, his knife gashed his thigh. Do I make it
-clear?"
-
-"Wonderful!" cried the Colonel. "Wonderful! You might have been there!"
-
-"My final shot was, I confess a very long one. It struck me that so
-astute a man as Straker would not undertake this delicate tendon-nicking
-without a little practice. What could he practice on? My eyes fell upon
-the sheep, and I asked a question which, rather to my surprise, showed
-that my surmise was correct.
-
-"When I returned to London I called upon the milliner, who had
-recognized Straker as an excellent customer of the name of Derbyshire,
-who had a very dashing wife, with a strong partiality for expensive
-dresses. I have no doubt that this woman had plunged him over head and
-ears in debt, and so led him into this miserable plot."
-
-"You have explained all but one thing," cried the Colonel. "Where was
-the horse?"
-
-"Ah, it bolted, and was cared for by one of your neighbors. We must have
-an amnesty in that direction, I think. This is Clapham Junction, if I am
-not mistaken, and we shall be in Victoria in less than ten minutes. If
-you care to smoke a cigar in our rooms, Colonel, I shall be happy to
-give you any other details which might interest you."
-
-
-
-
-Adventure II. The Yellow Face
-
-
-[In publishing these short sketches based upon the numerous cases in
-which my companion's singular gifts have made us the listeners to, and
-eventually the actors in, some strange drama, it is only natural that I
-should dwell rather upon his successes than upon his failures. And this
-not so much for the sake of his reputation--for, indeed, it was when
-he was at his wits' end that his energy and his versatility were most
-admirable--but because where he failed it happened too often that no one
-else succeeded, and that the tale was left forever without a conclusion.
-Now and again, however, it chanced that even when he erred, the truth
-was still discovered. I have noted of some half-dozen cases of the
-kind; the Adventure of the Musgrave Ritual and that which I am about to
-recount are the two which present the strongest features of interest.]
-
-Sherlock Holmes was a man who seldom took exercise for exercise's sake.
-Few men were capable of greater muscular effort, and he was undoubtedly
-one of the finest boxers of his weight that I have ever seen; but he
-looked upon aimless bodily exertion as a waste of energy, and he seldom
-bestirred himself save when there was some professional object to be
-served. Then he was absolutely untiring and indefatigable. That he
-should have kept himself in training under such circumstances is
-remarkable, but his diet was usually of the sparest, and his habits
-were simple to the verge of austerity. Save for the occasional use of
-cocaine, he had no vices, and he only turned to the drug as a protest
-against the monotony of existence when cases were scanty and the papers
-uninteresting.
-
-One day in early spring he had so far relaxed as to go for a walk with
-me in the Park, where the first faint shoots of green were breaking out
-upon the elms, and the sticky spear-heads of the chestnuts were just
-beginning to burst into their five-fold leaves. For two hours we rambled
-about together, in silence for the most part, as befits two men who know
-each other intimately. It was nearly five before we were back in Baker
-Street once more.
-
-"Beg pardon, sir," said our page-boy, as he opened the door. "There's
-been a gentleman here asking for you, sir."
-
-Holmes glanced reproachfully at me. "So much for afternoon walks!" said
-he. "Has this gentleman gone, then?"
-
-"Yes, sir."
-
-"Didn't you ask him in?"
-
-"Yes, sir; he came in."
-
-"How long did he wait?"
-
-"Half an hour, sir. He was a very restless gentleman, sir, a-walkin'
-and a-stampin' all the time he was here. I was waitin' outside the door,
-sir, and I could hear him. At last he outs into the passage, and he
-cries, 'Is that man never goin' to come?' Those were his very words,
-sir. 'You'll only need to wait a little longer,' says I. 'Then I'll wait
-in the open air, for I feel half choked,' says he. 'I'll be back before
-long.' And with that he ups and he outs, and all I could say wouldn't
-hold him back."
-
-"Well, well, you did your best," said Holmes, as we walked into our
-room. "It's very annoying, though, Watson. I was badly in need of
-a case, and this looks, from the man's impatience, as if it were of
-importance. Hullo! That's not your pipe on the table. He must have
-left his behind him. A nice old brier with a good long stem of what the
-tobacconists call amber. I wonder how many real amber mouthpieces there
-are in London? Some people think that a fly in it is a sign. Well, he
-must have been disturbed in his mind to leave a pipe behind him which he
-evidently values highly."
-
-"How do you know that he values it highly?" I asked.
-
-"Well, I should put the original cost of the pipe at seven and sixpence.
-Now it has, you see, been twice mended, once in the wooden stem and once
-in the amber. Each of these mends, done, as you observe, with silver
-bands, must have cost more than the pipe did originally. The man must
-value the pipe highly when he prefers to patch it up rather than buy a
-new one with the same money."
-
-"Anything else?" I asked, for Holmes was turning the pipe about in his
-hand, and staring at it in his peculiar pensive way.
-
-He held it up and tapped on it with his long, thin fore-finger, as a
-professor might who was lecturing on a bone.
-
-"Pipes are occasionally of extraordinary interest," said he. "Nothing
-has more individuality, save perhaps watches and bootlaces. The
-indications here, however, are neither very marked nor very important.
-The owner is obviously a muscular man, left-handed, with an excellent
-set of teeth, careless in his habits, and with no need to practise
-economy."
-
-My friend threw out the information in a very offhand way, but I saw
-that he cocked his eye at me to see if I had followed his reasoning.
-
-"You think a man must be well-to-do if he smokes a seven-shilling pipe,"
-said I.
-
-"This is Grosvenor mixture at eightpence an ounce," Holmes answered,
-knocking a little out on his palm. "As he might get an excellent smoke
-for half the price, he has no need to practise economy."
-
-"And the other points?"
-
-"He has been in the habit of lighting his pipe at lamps and gas-jets.
-You can see that it is quite charred all down one side. Of course a
-match could not have done that. Why should a man hold a match to the
-side of his pipe? But you cannot light it at a lamp without getting the
-bowl charred. And it is all on the right side of the pipe. From that I
-gather that he is a left-handed man. You hold your own pipe to the lamp,
-and see how naturally you, being right-handed, hold the left side to the
-flame. You might do it once the other way, but not as a constancy. This
-has always been held so. Then he has bitten through his amber. It takes
-a muscular, energetic fellow, and one with a good set of teeth, to do
-that. But if I am not mistaken I hear him upon the stair, so we shall
-have something more interesting than his pipe to study."
-
-An instant later our door opened, and a tall young man entered the room.
-He was well but quietly dressed in a dark-gray suit, and carried a brown
-wide-awake in his hand. I should have put him at about thirty, though he
-was really some years older.
-
-"I beg your pardon," said he, with some embarrassment; "I suppose I
-should have knocked. Yes, of course I should have knocked. The fact
-is that I am a little upset, and you must put it all down to that." He
-passed his hand over his forehead like a man who is half dazed, and then
-fell rather than sat down upon a chair.
-
-"I can see that you have not slept for a night or two," said Holmes,
-in his easy, genial way. "That tries a man's nerves more than work, and
-more even than pleasure. May I ask how I can help you?"
-
-"I wanted your advice, sir. I don't know what to do and my whole life
-seems to have gone to pieces."
-
-"You wish to employ me as a consulting detective?"
-
-"Not that only. I want your opinion as a judicious man--as a man of the
-world. I want to know what I ought to do next. I hope to God you'll be
-able to tell me."
-
-He spoke in little, sharp, jerky outbursts, and it seemed to me that to
-speak at all was very painful to him, and that his will all through was
-overriding his inclinations.
-
-"It's a very delicate thing," said he. "One does not like to speak of
-one's domestic affairs to strangers. It seems dreadful to discuss the
-conduct of one's wife with two men whom I have never seen before. It's
-horrible to have to do it. But I've got to the end of my tether, and I
-must have advice."
-
-"My dear Mr. Grant Munro--" began Holmes.
-
-Our visitor sprang from his chair. "What!" he cried, "you know my name?"
-
-"If you wish to preserve your incognito," said Holmes, smiling, "I would
-suggest that you cease to write your name upon the lining of your
-hat, or else that you turn the crown towards the person whom you are
-addressing. I was about to say that my friend and I have listened to a
-good many strange secrets in this room, and that we have had the good
-fortune to bring peace to many troubled souls. I trust that we may do as
-much for you. Might I beg you, as time may prove to be of importance, to
-furnish me with the facts of your case without further delay?"
-
-Our visitor again passed his hand over his forehead, as if he found it
-bitterly hard. From every gesture and expression I could see that he was
-a reserved, self-contained man, with a dash of pride in his nature, more
-likely to hide his wounds than to expose them. Then suddenly, with a
-fierce gesture of his closed hand, like one who throws reserve to the
-winds, he began.
-
-"The facts are these, Mr. Holmes," said he. "I am a married man, and
-have been so for three years. During that time my wife and I have loved
-each other as fondly and lived as happily as any two that ever were
-joined. We have not had a difference, not one, in thought or word or
-deed. And now, since last Monday, there has suddenly sprung up a barrier
-between us, and I find that there is something in her life and in her
-thought of which I know as little as if she were the woman who brushes
-by me in the street. We are estranged, and I want to know why.
-
-"Now there is one thing that I want to impress upon you before I go
-any further, Mr. Holmes. Effie loves me. Don't let there be any mistake
-about that. She loves me with her whole heart and soul, and never more
-than now. I know it. I feel it. I don't want to argue about that. A man
-can tell easily enough when a woman loves him. But there's this secret
-between us, and we can never be the same until it is cleared."
-
-"Kindly let me have the facts, Mr. Munro," said Holmes, with some
-impatience.
-
-"I'll tell you what I know about Effie's history. She was a widow when
-I met her first, though quite young--only twenty-five. Her name then was
-Mrs. Hebron. She went out to America when she was young, and lived in
-the town of Atlanta, where she married this Hebron, who was a lawyer
-with a good practice. They had one child, but the yellow fever broke out
-badly in the place, and both husband and child died of it. I have seen
-his death certificate. This sickened her of America, and she came back
-to live with a maiden aunt at Pinner, in Middlesex. I may mention that
-her husband had left her comfortably off, and that she had a capital of
-about four thousand five hundred pounds, which had been so well invested
-by him that it returned an average of seven per cent. She had only been
-six months at Pinner when I met her; we fell in love with each other,
-and we married a few weeks afterwards.
-
-"I am a hop merchant myself, and as I have an income of seven or
-eight hundred, we found ourselves comfortably off, and took a nice
-eighty-pound-a-year villa at Norbury. Our little place was very
-countrified, considering that it is so close to town. We had an inn and
-two houses a little above us, and a single cottage at the other side of
-the field which faces us, and except those there were no houses until
-you got half way to the station. My business took me into town at
-certain seasons, but in summer I had less to do, and then in our country
-home my wife and I were just as happy as could be wished. I tell you
-that there never was a shadow between us until this accursed affair
-began.
-
-"There's one thing I ought to tell you before I go further. When we
-married, my wife made over all her property to me--rather against my
-will, for I saw how awkward it would be if my business affairs went
-wrong. However, she would have it so, and it was done. Well, about six
-weeks ago she came to me.
-
-"'Jack,' said she, 'when you took my money you said that if ever I
-wanted any I was to ask you for it.'
-
-"'Certainly,' said I. 'It's all your own.'
-
-"'Well,' said she, 'I want a hundred pounds.'
-
-"I was a bit staggered at this, for I had imagined it was simply a new
-dress or something of the kind that she was after.
-
-"'What on earth for?' I asked.
-
-"'Oh,' said she, in her playful way, 'you said that you were only my
-banker, and bankers never ask questions, you know.'
-
-"'If you really mean it, of course you shall have the money,' said I.
-
-"'Oh, yes, I really mean it.'
-
-"'And you won't tell me what you want it for?'
-
-"'Some day, perhaps, but not just at present, Jack.'
-
-"So I had to be content with that, though it was the first time that
-there had ever been any secret between us. I gave her a check, and I
-never thought any more of the matter. It may have nothing to do with
-what came afterwards, but I thought it only right to mention it.
-
-"Well, I told you just now that there is a cottage not far from our
-house. There is just a field between us, but to reach it you have to
-go along the road and then turn down a lane. Just beyond it is a nice
-little grove of Scotch firs, and I used to be very fond of strolling
-down there, for trees are always a neighborly kind of things. The
-cottage had been standing empty this eight months, and it was a pity,
-for it was a pretty two-storied place, with an old-fashioned porch and
-honeysuckle about it. I have stood many a time and thought what a neat
-little homestead it would make.
-
-"Well, last Monday evening I was taking a stroll down that way, when
-I met an empty van coming up the lane, and saw a pile of carpets and
-things lying about on the grass-plot beside the porch. It was clear that
-the cottage had at last been let. I walked past it, and wondered what
-sort of folk they were who had come to live so near us. And as I looked
-I suddenly became aware that a face was watching me out of one of the
-upper windows.
-
-"I don't know what there was about that face, Mr. Holmes, but it seemed
-to send a chill right down my back. I was some little way off, so that
-I could not make out the features, but there was something unnatural and
-inhuman about the face. That was the impression that I had, and I moved
-quickly forwards to get a nearer view of the person who was watching
-me. But as I did so the face suddenly disappeared, so suddenly that it
-seemed to have been plucked away into the darkness of the room. I stood
-for five minutes thinking the business over, and trying to analyze my
-impressions. I could not tell if the face were that of a man or a
-woman. It had been too far from me for that. But its color was what had
-impressed me most. It was of a livid chalky white, and with something
-set and rigid about it which was shockingly unnatural. So disturbed
-was I that I determined to see a little more of the new inmates of
-the cottage. I approached and knocked at the door, which was instantly
-opened by a tall, gaunt woman with a harsh, forbidding face.
-
-"'What may you be wantin'?' she asked, in a Northern accent.
-
-"'I am your neighbor over yonder,' said I, nodding towards my house. 'I
-see that you have only just moved in, so I thought that if I could be of
-any help to you in any--'
-
-"'Ay, we'll just ask ye when we want ye,' said she, and shut the door
-in my face. Annoyed at the churlish rebuff, I turned my back and walked
-home. All evening, though I tried to think of other things, my mind
-would still turn to the apparition at the window and the rudeness of the
-woman. I determined to say nothing about the former to my wife, for
-she is a nervous, highly strung woman, and I had no wish that she would
-share the unpleasant impression which had been produced upon myself. I
-remarked to her, however, before I fell asleep, that the cottage was now
-occupied, to which she returned no reply.
-
-"I am usually an extremely sound sleeper. It has been a standing jest
-in the family that nothing could ever wake me during the night. And yet
-somehow on that particular night, whether it may have been the slight
-excitement produced by my little adventure or not I know not, but
-I slept much more lightly than usual. Half in my dreams I was dimly
-conscious that something was going on in the room, and gradually became
-aware that my wife had dressed herself and was slipping on her mantle
-and her bonnet. My lips were parted to murmur out some sleepy words of
-surprise or remonstrance at this untimely preparation, when suddenly my
-half-opened eyes fell upon her face, illuminated by the candle-light,
-and astonishment held me dumb. She wore an expression such as I had
-never seen before--such as I should have thought her incapable of
-assuming. She was deadly pale and breathing fast, glancing furtively
-towards the bed as she fastened her mantle, to see if she had disturbed
-me. Then, thinking that I was still asleep, she slipped noiselessly from
-the room, and an instant later I heard a sharp creaking which could only
-come from the hinges of the front door. I sat up in bed and rapped my
-knuckles against the rail to make certain that I was truly awake. Then
-I took my watch from under the pillow. It was three in the morning. What
-on this earth could my wife be doing out on the country road at three in
-the morning?
-
-"I had sat for about twenty minutes turning the thing over in my mind
-and trying to find some possible explanation. The more I thought, the
-more extraordinary and inexplicable did it appear. I was still puzzling
-over it when I heard the door gently close again, and her footsteps
-coming up the stairs.
-
-"'Where in the world have you been, Effie?' I asked as she entered.
-
-"She gave a violent start and a kind of gasping cry when I spoke, and
-that cry and start troubled me more than all the rest, for there was
-something indescribably guilty about them. My wife had always been
-a woman of a frank, open nature, and it gave me a chill to see her
-slinking into her own room, and crying out and wincing when her own
-husband spoke to her.
-
-"'You awake, Jack!' she cried, with a nervous laugh. 'Why, I thought
-that nothing could awake you.'
-
-"'Where have you been?' I asked, more sternly.
-
-"'I don't wonder that you are surprised,' said she, and I could see that
-her fingers were trembling as she undid the fastenings of her mantle.
-'Why, I never remember having done such a thing in my life before. The
-fact is that I felt as though I were choking, and had a perfect longing
-for a breath of fresh air. I really think that I should have fainted if
-I had not gone out. I stood at the door for a few minutes, and now I am
-quite myself again.'
-
-"All the time that she was telling me this story she never once looked
-in my direction, and her voice was quite unlike her usual tones. It
-was evident to me that she was saying what was false. I said nothing
-in reply, but turned my face to the wall, sick at heart, with my mind
-filled with a thousand venomous doubts and suspicions. What was it that
-my wife was concealing from me? Where had she been during that strange
-expedition? I felt that I should have no peace until I knew, and yet I
-shrank from asking her again after once she had told me what was false.
-All the rest of the night I tossed and tumbled, framing theory after
-theory, each more unlikely than the last.
-
-"I should have gone to the City that day, but I was too disturbed in my
-mind to be able to pay attention to business matters. My wife seemed
-to be as upset as myself, and I could see from the little questioning
-glances which she kept shooting at me that she understood that I
-disbelieved her statement, and that she was at her wits' end what to do.
-We hardly exchanged a word during breakfast, and immediately afterwards
-I went out for a walk, that I might think the matter out in the fresh
-morning air.
-
-"I went as far as the Crystal Palace, spent an hour in the grounds, and
-was back in Norbury by one o'clock. It happened that my way took me past
-the cottage, and I stopped for an instant to look at the windows, and to
-see if I could catch a glimpse of the strange face which had looked
-out at me on the day before. As I stood there, imagine my surprise, Mr.
-Holmes, when the door suddenly opened and my wife walked out.
-
-"I was struck dumb with astonishment at the sight of her; but my
-emotions were nothing to those which showed themselves upon her face
-when our eyes met. She seemed for an instant to wish to shrink back
-inside the house again; and then, seeing how useless all concealment
-must be, she came forward, with a very white face and frightened eyes
-which belied the smile upon her lips.
-
-"'Ah, Jack,' she said, 'I have just been in to see if I can be of any
-assistance to our new neighbors. Why do you look at me like that, Jack?
-You are not angry with me?'
-
-"'So,' said I, 'this is where you went during the night.'
-
-"'What do you mean?' she cried.
-
-"'You came here. I am sure of it. Who are these people, that you should
-visit them at such an hour?'
-
-"'I have not been here before.'
-
-"'How can you tell me what you know is false?' I cried. 'Your very voice
-changes as you speak. When have I ever had a secret from you? I shall
-enter that cottage, and I shall probe the matter to the bottom.'
-
-"'No, no, Jack, for God's sake!' she gasped, in uncontrollable emotion.
-Then, as I approached the door, she seized my sleeve and pulled me back
-with convulsive strength.
-
-"'I implore you not to do this, Jack,' she cried. 'I swear that I will
-tell you everything some day, but nothing but misery can come of it if
-you enter that cottage.' Then, as I tried to shake her off, she clung to
-me in a frenzy of entreaty.
-
-"'Trust me, Jack!' she cried. 'Trust me only this once. You will never
-have cause to regret it. You know that I would not have a secret from
-you if it were not for your own sake. Our whole lives are at stake in
-this. If you come home with me, all will be well. If you force your way
-into that cottage, all is over between us.'
-
-"There was such earnestness, such despair, in her manner that her words
-arrested me, and I stood irresolute before the door.
-
-"'I will trust you on one condition, and on one condition only,' said I
-at last. 'It is that this mystery comes to an end from now. You are
-at liberty to preserve your secret, but you must promise me that there
-shall be no more nightly visits, no more doings which are kept from my
-knowledge. I am willing to forget those which are passed if you will
-promise that there shall be no more in the future.'
-
-"'I was sure that you would trust me,' she cried, with a great sigh of
-relief. 'It shall be just as you wish. Come away--oh, come away up to
-the house.'
-
-"Still pulling at my sleeve, she led me away from the cottage. As we
-went I glanced back, and there was that yellow livid face watching us
-out of the upper window. What link could there be between that creature
-and my wife? Or how could the coarse, rough woman whom I had seen the
-day before be connected with her? It was a strange puzzle, and yet I
-knew that my mind could never know ease again until I had solved it.
-
-"For two days after this I stayed at home, and my wife appeared to abide
-loyally by our engagement, for, as far as I know, she never stirred out
-of the house. On the third day, however, I had ample evidence that
-her solemn promise was not enough to hold her back from this secret
-influence which drew her away from her husband and her duty.
-
-"I had gone into town on that day, but I returned by the 2.40 instead of
-the 3.36, which is my usual train. As I entered the house the maid ran
-into the hall with a startled face.
-
-"'Where is your mistress?' I asked.
-
-"'I think that she has gone out for a walk,' she answered.
-
-"My mind was instantly filled with suspicion. I rushed upstairs to make
-sure that she was not in the house. As I did so I happened to glance out
-of one of the upper windows, and saw the maid with whom I had just been
-speaking running across the field in the direction of the cottage. Then
-of course I saw exactly what it all meant. My wife had gone over there,
-and had asked the servant to call her if I should return. Tingling with
-anger, I rushed down and hurried across, determined to end the matter
-once and forever. I saw my wife and the maid hurrying back along the
-lane, but I did not stop to speak with them. In the cottage lay the
-secret which was casting a shadow over my life. I vowed that, come what
-might, it should be a secret no longer. I did not even knock when I
-reached it, but turned the handle and rushed into the passage.
-
-"It was all still and quiet upon the ground floor. In the kitchen a
-kettle was singing on the fire, and a large black cat lay coiled up in
-the basket; but there was no sign of the woman whom I had seen before.
-I ran into the other room, but it was equally deserted. Then I rushed up
-the stairs, only to find two other rooms empty and deserted at the top.
-There was no one at all in the whole house. The furniture and pictures
-were of the most common and vulgar description, save in the one chamber
-at the window of which I had seen the strange face. That was comfortable
-and elegant, and all my suspicions rose into a fierce bitter flame when
-I saw that on the mantelpiece stood a copy of a full-length photograph
-of my wife, which had been taken at my request only three months ago.
-
-"I stayed long enough to make certain that the house was absolutely
-empty. Then I left it, feeling a weight at my heart such as I had never
-had before. My wife came out into the hall as I entered my house; but I
-was too hurt and angry to speak with her, and pushing past her, I made
-my way into my study. She followed me, however, before I could close the
-door.
-
-"'I am sorry that I broke my promise, Jack,' said she; 'but if you knew
-all the circumstances I am sure that you would forgive me.'
-
-"'Tell me everything, then,' said I.
-
-"'I cannot, Jack, I cannot,' she cried.
-
-"'Until you tell me who it is that has been living in that cottage, and
-who it is to whom you have given that photograph, there can never be any
-confidence between us,' said I, and breaking away from her, I left the
-house. That was yesterday, Mr. Holmes, and I have not seen her since,
-nor do I know anything more about this strange business. It is the first
-shadow that has come between us, and it has so shaken me that I do not
-know what I should do for the best. Suddenly this morning it occurred to
-me that you were the man to advise me, so I have hurried to you now, and
-I place myself unreservedly in your hands. If there is any point which I
-have not made clear, pray question me about it. But, above all, tell me
-quickly what I am to do, for this misery is more than I can bear."
-
-Holmes and I had listened with the utmost interest to this extraordinary
-statement, which had been delivered in the jerky, broken fashion of a
-man who is under the influence of extreme emotions. My companion sat
-silent for some time, with his chin upon his hand, lost in thought.
-
-"Tell me," said he at last, "could you swear that this was a man's face
-which you saw at the window?"
-
-"Each time that I saw it I was some distance away from it, so that it is
-impossible for me to say."
-
-"You appear, however, to have been disagreeably impressed by it."
-
-"It seemed to be of an unnatural color, and to have a strange rigidity
-about the features. When I approached, it vanished with a jerk."
-
-"How long is it since your wife asked you for a hundred pounds?"
-
-"Nearly two months."
-
-"Have you ever seen a photograph of her first husband?"
-
-"No; there was a great fire at Atlanta very shortly after his death, and
-all her papers were destroyed."
-
-"And yet she had a certificate of death. You say that you saw it."
-
-"Yes; she got a duplicate after the fire."
-
-"Did you ever meet any one who knew her in America?"
-
-"No."
-
-"Did she ever talk of revisiting the place?"
-
-"No."
-
-"Or get letters from it?"
-
-"No."
-
-"Thank you. I should like to think over the matter a little now. If the
-cottage is now permanently deserted we may have some difficulty. If, on
-the other hand, as I fancy is more likely, the inmates were warned of
-your coming, and left before you entered yesterday, then they may be
-back now, and we should clear it all up easily. Let me advise you, then,
-to return to Norbury, and to examine the windows of the cottage again.
-If you have reason to believe that it is inhabited, do not force your
-way in, but send a wire to my friend and me. We shall be with you within
-an hour of receiving it, and we shall then very soon get to the bottom
-of the business."
-
-"And if it is still empty?"
-
-"In that case I shall come out to-morrow and talk it over with you.
-Good-by; and, above all, do not fret until you know that you really have
-a cause for it."
-
-"I am afraid that this is a bad business, Watson," said my companion, as
-he returned after accompanying Mr. Grant Munro to the door. "What do you
-make of it?"
-
-"It had an ugly sound," I answered.
-
-"Yes. There's blackmail in it, or I am much mistaken."
-
-"And who is the blackmailer?"
-
-"Well, it must be the creature who lives in the only comfortable room
-in the place, and has her photograph above his fireplace. Upon my word,
-Watson, there is something very attractive about that livid face at the
-window, and I would not have missed the case for worlds."
-
-"You have a theory?"
-
-"Yes, a provisional one. But I shall be surprised if it does not turn
-out to be correct. This woman's first husband is in that cottage."
-
-"Why do you think so?"
-
-"How else can we explain her frenzied anxiety that her second one should
-not enter it? The facts, as I read them, are something like this:
-This woman was married in America. Her husband developed some hateful
-qualities; or shall we say that he contracted some loathsome disease,
-and became a leper or an imbecile? She flies from him at last, returns
-to England, changes her name, and starts her life, as she thinks,
-afresh. She has been married three years, and believes that her position
-is quite secure, having shown her husband the death certificate of
-some man whose name she has assumed, when suddenly her whereabouts
-is discovered by her first husband; or, we may suppose, by some
-unscrupulous woman who has attached herself to the invalid. They write
-to the wife, and threaten to come and expose her. She asks for a hundred
-pounds, and endeavors to buy them off. They come in spite of it, and
-when the husband mentions casually to the wife that there are new-comers
-in the cottage, she knows in some way that they are her pursuers. She
-waits until her husband is asleep, and then she rushes down to endeavor
-to persuade them to leave her in peace. Having no success, she goes
-again next morning, and her husband meets her, as he has told us, as
-she comes out. She promises him then not to go there again, but two days
-afterwards the hope of getting rid of those dreadful neighbors was too
-strong for her, and she made another attempt, taking down with her the
-photograph which had probably been demanded from her. In the midst of
-this interview the maid rushed in to say that the master had come home,
-on which the wife, knowing that he would come straight down to the
-cottage, hurried the inmates out at the back door, into the grove of
-fir-trees, probably, which was mentioned as standing near. In this way
-he found the place deserted. I shall be very much surprised, however, if
-it is still so when he reconnoitres it this evening. What do you think
-of my theory?"
-
-"It is all surmise."
-
-"But at least it covers all the facts. When new facts come to our
-knowledge which cannot be covered by it, it will be time enough to
-reconsider it. We can do nothing more until we have a message from our
-friend at Norbury."
-
-But we had not a very long time to wait for that. It came just as we had
-finished our tea. "The cottage is still tenanted," it said. "Have seen
-the face again at the window. Will meet the seven o'clock train, and
-will take no steps until you arrive."
-
-
-He was waiting on the platform when we stepped out, and we could see in
-the light of the station lamps that he was very pale, and quivering with
-agitation.
-
-"They are still there, Mr. Holmes," said he, laying his hand hard upon
-my friend's sleeve. "I saw lights in the cottage as I came down. We
-shall settle it now once and for all."
-
-"What is your plan, then?" asked Holmes, as he walked down the dark
-tree-lined road.
-
-"I am going to force my way in and see for myself who is in the house. I
-wish you both to be there as witnesses."
-
-"You are quite determined to do this, in spite of your wife's warning
-that it is better that you should not solve the mystery?"
-
-"Yes, I am determined."
-
-"Well, I think that you are in the right. Any truth is better than
-indefinite doubt. We had better go up at once. Of course, legally, we
-are putting ourselves hopelessly in the wrong; but I think that it is
-worth it."
-
-It was a very dark night, and a thin rain began to fall as we turned
-from the high road into a narrow lane, deeply rutted, with hedges on
-either side. Mr. Grant Munro pushed impatiently forward, however, and we
-stumbled after him as best we could.
-
-"There are the lights of my house," he murmured, pointing to a glimmer
-among the trees. "And here is the cottage which I am going to enter."
-
-We turned a corner in the lane as he spoke, and there was the building
-close beside us. A yellow bar falling across the black foreground showed
-that the door was not quite closed, and one window in the upper story
-was brightly illuminated. As we looked, we saw a dark blur moving across
-the blind.
-
-"There is that creature!" cried Grant Munro. "You can see for yourselves
-that some one is there. Now follow me, and we shall soon know all."
-
-We approached the door; but suddenly a woman appeared out of the shadow
-and stood in the golden track of the lamp-light. I could not see her
-face in the darkness, but her arms were thrown out in an attitude of
-entreaty.
-
-"For God's sake, don't Jack!" she cried. "I had a presentiment that you
-would come this evening. Think better of it, dear! Trust me again, and
-you will never have cause to regret it."
-
-"I have trusted you too long, Effie," he cried, sternly. "Leave go of
-me! I must pass you. My friends and I are going to settle this matter
-once and forever!" He pushed her to one side, and we followed closely
-after him. As he threw the door open an old woman ran out in front of
-him and tried to bar his passage, but he thrust her back, and an instant
-afterwards we were all upon the stairs. Grant Munro rushed into the
-lighted room at the top, and we entered at his heels.
-
-It was a cosey, well-furnished apartment, with two candles burning upon
-the table and two upon the mantelpiece. In the corner, stooping over a
-desk, there sat what appeared to be a little girl. Her face was turned
-away as we entered, but we could see that she was dressed in a red
-frock, and that she had long white gloves on. As she whisked round
-to us, I gave a cry of surprise and horror. The face which she turned
-towards us was of the strangest livid tint, and the features were
-absolutely devoid of any expression. An instant later the mystery was
-explained. Holmes, with a laugh, passed his hand behind the child's
-ear, a mask peeled off from her countenance, and there was a little coal
-black negress, with all her white teeth flashing in amusement at our
-amazed faces. I burst out laughing, out of sympathy with her merriment;
-but Grant Munro stood staring, with his hand clutching his throat.
-
-"My God!" he cried. "What can be the meaning of this?"
-
-"I will tell you the meaning of it," cried the lady, sweeping into
-the room with a proud, set face. "You have forced me, against my own
-judgment, to tell you, and now we must both make the best of it. My
-husband died at Atlanta. My child survived."
-
-"Your child?"
-
-She drew a large silver locket from her bosom. "You have never seen this
-open."
-
-"I understood that it did not open."
-
-She touched a spring, and the front hinged back. There was a portrait
-within of a man strikingly handsome and intelligent-looking, but bearing
-unmistakable signs upon his features of his African descent.
-
-"That is John Hebron, of Atlanta," said the lady, "and a nobler man
-never walked the earth. I cut myself off from my race in order to wed
-him, but never once while he lived did I for an instant regret it. It
-was our misfortune that our only child took after his people rather than
-mine. It is often so in such matches, and little Lucy is darker far than
-ever her father was. But dark or fair, she is my own dear little girlie,
-and her mother's pet." The little creature ran across at the words and
-nestled up against the lady's dress. "When I left her in America," she
-continued, "it was only because her health was weak, and the change
-might have done her harm. She was given to the care of a faithful Scotch
-woman who had once been our servant. Never for an instant did I dream
-of disowning her as my child. But when chance threw you in my way, Jack,
-and I learned to love you, I feared to tell you about my child. God
-forgive me, I feared that I should lose you, and I had not the courage
-to tell you. I had to choose between you, and in my weakness I turned
-away from my own little girl. For three years I have kept her existence
-a secret from you, but I heard from the nurse, and I knew that all was
-well with her. At last, however, there came an overwhelming desire to
-see the child once more. I struggled against it, but in vain. Though I
-knew the danger, I determined to have the child over, if it were but
-for a few weeks. I sent a hundred pounds to the nurse, and I gave her
-instructions about this cottage, so that she might come as a neighbor,
-without my appearing to be in any way connected with her. I pushed my
-precautions so far as to order her to keep the child in the house during
-the daytime, and to cover up her little face and hands so that even
-those who might see her at the window should not gossip about there
-being a black child in the neighborhood. If I had been less cautious
-I might have been more wise, but I was half crazy with fear that you
-should learn the truth.
-
-"It was you who told me first that the cottage was occupied. I should
-have waited for the morning, but I could not sleep for excitement, and
-so at last I slipped out, knowing how difficult it is to awake you. But
-you saw me go, and that was the beginning of my troubles. Next day you
-had my secret at your mercy, but you nobly refrained from pursuing your
-advantage. Three days later, however, the nurse and child only just
-escaped from the back door as you rushed in at the front one. And now
-to-night you at last know all, and I ask you what is to become of us, my
-child and me?" She clasped her hands and waited for an answer.
-
-It was a long ten minutes before Grant Munro broke the silence, and
-when his answer came it was one of which I love to think. He lifted
-the little child, kissed her, and then, still carrying her, he held his
-other hand out to his wife and turned towards the door.
-
-"We can talk it over more comfortably at home," said he. "I am not a
-very good man, Effie, but I think that I am a better one than you have
-given me credit for being."
-
-Holmes and I followed them down the lane, and my friend plucked at my
-sleeve as we came out.
-
-"I think," said he, "that we shall be of more use in London than in
-Norbury."
-
-Not another word did he say of the case until late that night, when he
-was turning away, with his lighted candle, for his bedroom.
-
-"Watson," said he, "if it should ever strike you that I am getting a
-little over-confident in my powers, or giving less pains to a case
-than it deserves, kindly whisper 'Norbury' in my ear, and I shall be
-infinitely obliged to you."
-
-
-
-
-Adventure III. The Stock-Broker's Clerk
-
-
-Shortly after my marriage I had bought a connection in the Paddington
-district. Old Mr. Farquhar, from whom I purchased it, had at one time an
-excellent general practice; but his age, and an affliction of the nature
-of St. Vitus's dance from which he suffered, had very much thinned it.
-The public not unnaturally goes on the principle that he who would heal
-others must himself be whole, and looks askance at the curative powers
-of the man whose own case is beyond the reach of his drugs. Thus as my
-predecessor weakened his practice declined, until when I purchased
-it from him it had sunk from twelve hundred to little more than three
-hundred a year. I had confidence, however, in my own youth and energy,
-and was convinced that in a very few years the concern would be as
-flourishing as ever.
-
-For three months after taking over the practice I was kept very closely
-at work, and saw little of my friend Sherlock Holmes, for I was too busy
-to visit Baker Street, and he seldom went anywhere himself save upon
-professional business. I was surprised, therefore, when, one morning in
-June, as I sat reading the British Medical Journal after breakfast, I
-heard a ring at the bell, followed by the high, somewhat strident tones
-of my old companion's voice.
-
-"Ah, my dear Watson," said he, striding into the room, "I am very
-delighted to see you! I trust that Mrs. Watson has entirely recovered
-from all the little excitements connected with our adventure of the Sign
-of Four."
-
-"Thank you, we are both very well," said I, shaking him warmly by the
-hand.
-
-"And I hope, also," he continued, sitting down in the rocking-chair,
-"that the cares of medical practice have not entirely obliterated the
-interest which you used to take in our little deductive problems."
-
-"On the contrary," I answered, "it was only last night that I was
-looking over my old notes, and classifying some of our past results."
-
-"I trust that you don't consider your collection closed."
-
-"Not at all. I should wish nothing better than to have some more of such
-experiences."
-
-"To-day, for example?"
-
-"Yes, to-day, if you like."
-
-"And as far off as Birmingham?"
-
-"Certainly, if you wish it."
-
-"And the practice?"
-
-"I do my neighbor's when he goes. He is always ready to work off the
-debt."
-
-"Ha! Nothing could be better," said Holmes, leaning back in his chair
-and looking keenly at me from under his half closed lids. "I perceive
-that you have been unwell lately. Summer colds are always a little
-trying."
-
-"I was confined to the house by a severe chill for three days last week.
-I thought, however, that I had cast off every trace of it."
-
-"So you have. You look remarkably robust."
-
-"How, then, did you know of it?"
-
-"My dear fellow, you know my methods."
-
-"You deduced it, then?"
-
-"Certainly."
-
-"And from what?"
-
-"From your slippers."
-
-I glanced down at the new patent leathers which I was wearing. "How on
-earth--" I began, but Holmes answered my question before it was asked.
-
-"Your slippers are new," he said. "You could not have had them more than
-a few weeks. The soles which you are at this moment presenting to me are
-slightly scorched. For a moment I thought they might have got wet and
-been burned in the drying. But near the instep there is a small circular
-wafer of paper with the shopman's hieroglyphics upon it. Damp would of
-course have removed this. You had, then, been sitting with your feet
-outstretched to the fire, which a man would hardly do even in so wet a
-June as this if he were in his full health."
-
-Like all Holmes's reasoning the thing seemed simplicity itself when it
-was once explained. He read the thought upon my features, and his smile
-had a tinge of bitterness.
-
-"I am afraid that I rather give myself away when I explain," said he.
-"Results without causes are much more impressive. You are ready to come
-to Birmingham, then?"
-
-"Certainly. What is the case?"
-
-"You shall hear it all in the train. My client is outside in a
-four-wheeler. Can you come at once?"
-
-"In an instant." I scribbled a note to my neighbor, rushed upstairs to
-explain the matter to my wife, and joined Holmes upon the door-step.
-
-"Your neighbor is a doctor," said he, nodding at the brass plate.
-
-"Yes; he bought a practice as I did."
-
-"An old-established one?"
-
-"Just the same as mine. Both have been ever since the houses were
-built."
-
-"Ah! Then you got hold of the best of the two."
-
-"I think I did. But how do you know?"
-
-"By the steps, my boy. Yours are worn three inches deeper than his. But
-this gentleman in the cab is my client, Mr. Hall Pycroft. Allow me to
-introduce you to him. Whip your horse up, cabby, for we have only just
-time to catch our train."
-
-The man whom I found myself facing was a well built, fresh-complexioned
-young fellow, with a frank, honest face and a slight, crisp, yellow
-mustache. He wore a very shiny top hat and a neat suit of sober black,
-which made him look what he was--a smart young City man, of the class
-who have been labeled cockneys, but who give us our crack volunteer
-regiments, and who turn out more fine athletes and sportsmen than any
-body of men in these islands. His round, ruddy face was naturally full
-of cheeriness, but the corners of his mouth seemed to me to be pulled
-down in a half-comical distress. It was not, however, until we were
-all in a first-class carriage and well started upon our journey to
-Birmingham that I was able to learn what the trouble was which had
-driven him to Sherlock Holmes.
-
-"We have a clear run here of seventy minutes," Holmes remarked. "I
-want you, Mr. Hall Pycroft, to tell my friend your very interesting
-experience exactly as you have told it to me, or with more detail if
-possible. It will be of use to me to hear the succession of events
-again. It is a case, Watson, which may prove to have something in it, or
-may prove to have nothing, but which, at least, presents those unusual
-and outré features which are as dear to you as they are to me. Now, Mr.
-Pycroft, I shall not interrupt you again."
-
-Our young companion looked at me with a twinkle in his eye.
-
-"The worst of the story is," said he, "that I show myself up as such a
-confounded fool. Of course it may work out all right, and I don't see
-that I could have done otherwise; but if I have lost my crib and get
-nothing in exchange I shall feel what a soft Johnnie I have been. I'm
-not very good at telling a story, Dr. Watson, but it is like this with
-me:
-
-"I used to have a billet at Coxon & Woodhouse's, of Draper's Gardens,
-but they were let in early in the spring through the Venezuelan loan,
-as no doubt you remember, and came a nasty cropper. I had been with them
-five years, and old Coxon gave me a ripping good testimonial when
-the smash came, but of course we clerks were all turned adrift, the
-twenty-seven of us. I tried here and tried there, but there were lots of
-other chaps on the same lay as myself, and it was a perfect frost for a
-long time. I had been taking three pounds a week at Coxon's, and I had
-saved about seventy of them, but I soon worked my way through that and
-out at the other end. I was fairly at the end of my tether at last,
-and could hardly find the stamps to answer the advertisements or the
-envelopes to stick them to. I had worn out my boots paddling up office
-stairs, and I seemed just as far from getting a billet as ever.
-
-"At last I saw a vacancy at Mawson & Williams's, the great stock-broking
-firm in Lombard Street. I dare say E. C. Is not much in your line, but
-I can tell you that this is about the richest house in London.
-The advertisement was to be answered by letter only. I sent in my
-testimonial and application, but without the least hope of getting it.
-Back came an answer by return, saying that if I would appear next Monday
-I might take over my new duties at once, provided that my appearance was
-satisfactory. No one knows how these things are worked. Some people say
-that the manager just plunges his hand into the heap and takes the first
-that comes. Anyhow it was my innings that time, and I don't ever wish to
-feel better pleased. The screw was a pound a week rise, and the duties
-just about the same as at Coxon's.
-
-"And now I come to the queer part of the business. I was in diggings out
-Hampstead way, 17 Potter's Terrace. Well, I was sitting doing a smoke
-that very evening after I had been promised the appointment, when up
-came my landlady with a card which had 'Arthur Pinner, Financial Agent,'
-printed upon it. I had never heard the name before and could not imagine
-what he wanted with me; but, of course, I asked her to show him up. In
-he walked, a middle-sized, dark-haired, dark-eyed, black-bearded man,
-with a touch of the Sheeny about his nose. He had a brisk kind of way
-with him and spoke sharply, like a man who knew the value of time."
-
-"'Mr. Hall Pycroft, I believe?'" said he.
-
-"'Yes, sir,' I answered, pushing a chair towards him.
-
-"'Lately engaged at Coxon & Woodhouse's?'
-
-"'Yes, sir.'
-
-"'And now on the staff of Mawson's.'
-
-"'Quite so.'
-
-"'Well,' said he, 'the fact is that I have heard some really
-extraordinary stories about your financial ability. You remember Parker,
-who used to be Coxon's manager? He can never say enough about it.'
-
-"Of course I was pleased to hear this. I had always been pretty sharp in
-the office, but I had never dreamed that I was talked about in the City
-in this fashion.
-
-"'You have a good memory?' said he.
-
-"'Pretty fair,' I answered, modestly.
-
-"'Have you kept in touch with the market while you have been out of
-work?' he asked.
-
-"'Yes. I read the stock exchange list every morning.'
-
-"'Now that shows real application!' he cried. 'That is the way to
-prosper! You won't mind my testing you, will you? Let me see. How are
-Ayrshires?'
-
-"'A hundred and six and a quarter to a hundred and five and
-seven-eighths.'
-
-"'And New Zealand consolidated?'
-
-"'A hundred and four.
-
-"'And British Broken Hills?'
-
-"'Seven to seven-and-six.'
-
-"'Wonderful!' he cried, with his hands up. 'This quite fits in with all
-that I had heard. My boy, my boy, you are very much too good to be a
-clerk at Mawson's!'
-
-"This outburst rather astonished me, as you can think. 'Well,' said I,
-'other people don't think quite so much of me as you seem to do, Mr.
-Pinner. I had a hard enough fight to get this berth, and I am very glad
-to have it.'
-
-"'Pooh, man; you should soar above it. You are not in your true sphere.
-Now, I'll tell you how it stands with me. What I have to offer is little
-enough when measured by your ability, but when compared with Mawson's,
-it's light to dark. Let me see. When do you go to Mawson's?'
-
-"'On Monday.'
-
-"'Ha, ha! I think I would risk a little sporting flutter that you don't
-go there at all.'
-
-"'Not go to Mawson's?'
-
-"'No, sir. By that day you will be the business manager of the
-Franco-Midland Hardware Company, Limited, with a hundred and thirty-four
-branches in the towns and villages of France, not counting one in
-Brussels and one in San Remo.'
-
-"This took my breath away. 'I never heard of it,' said I.
-
-"'Very likely not. It has been kept very quiet, for the capital was all
-privately subscribed, and it's too good a thing to let the public
-into. My brother, Harry Pinner, is promoter, and joins the board after
-allotment as managing director. He knew I was in the swim down here, and
-asked me to pick up a good man cheap. A young, pushing man with plenty
-of snap about him. Parker spoke of you, and that brought me here
-to-night. We can only offer you a beggarly five hundred to start with.'
-
-"'Five hundred a year!' I shouted.
-
-"'Only that at the beginning; but you are to have an overriding
-commission of one per cent on all business done by your agents, and you
-may take my word for it that this will come to more than your salary.'
-
-"'But I know nothing about hardware.'
-
-"'Tut, my boy; you know about figures.'
-
-"My head buzzed, and I could hardly sit still in my chair. But suddenly
-a little chill of doubt came upon me.
-
-"'I must be frank with you,' said I. 'Mawson only gives me two hundred,
-but Mawson is safe. Now, really, I know so little about your company
-that--'
-
-"'Ah, smart, smart!' he cried, in a kind of ecstasy of delight. 'You
-are the very man for us. You are not to be talked over, and quite right,
-too. Now, here's a note for a hundred pounds, and if you think that we
-can do business you may just slip it into your pocket as an advance upon
-your salary.'
-
-"'That is very handsome,' said I. 'When should I take over my new
-duties?'
-
-"'Be in Birmingham to-morrow at one,' said he. 'I have a note in my
-pocket here which you will take to my brother. You will find him at
-126b Corporation Street, where the temporary offices of the company
-are situated. Of course he must confirm your engagement, but between
-ourselves it will be all right.'
-
-"'Really, I hardly know how to express my gratitude, Mr. Pinner,' said
-I.
-
-"'Not at all, my boy. You have only got your deserts. There are one or
-two small things--mere formalities--which I must arrange with you.
-You have a bit of paper beside you there. Kindly write upon it "I am
-perfectly willing to act as business manager to the Franco-Midland
-Hardware Company, Limited, at a minimum salary of L500."'
-
-"I did as he asked, and he put the paper in his pocket.
-
-"'There is one other detail,' said he. 'What do you intend to do about
-Mawson's?'
-
-"I had forgotten all about Mawson's in my joy. 'I'll write and resign,'
-said I.
-
-"'Precisely what I don't want you to do. I had a row over you with
-Mawson's manager. I had gone up to ask him about you, and he was very
-offensive; accused me of coaxing you away from the service of the firm,
-and that sort of thing. At last I fairly lost my temper. "If you want
-good men you should pay them a good price," said I.'
-
-"'He would rather have our small price than your big one,' said he.
-
-"'I'll lay you a fiver,' said I, 'that when he has my offer you'll never
-so much as hear from him again.'
-
-"'Done!' said he. 'We picked him out of the gutter, and he won't leave
-us so easily.' Those were his very words."
-
-"'The impudent scoundrel!' I cried. 'I've never so much as seen him in
-my life. Why should I consider him in any way? I shall certainly not
-write if you would rather I didn't.'
-
-"'Good! That's a promise,' said he, rising from his chair. 'Well, I'm
-delighted to have got so good a man for my brother. Here's your advance
-of a hundred pounds, and here is the letter. Make a note of the address,
-126b Corporation Street, and remember that one o'clock to-morrow is
-your appointment. Good-night; and may you have all the fortune that you
-deserve!'
-
-"That's just about all that passed between us, as near as I can
-remember. You can imagine, Dr. Watson, how pleased I was at such an
-extraordinary bit of good fortune. I sat up half the night hugging
-myself over it, and next day I was off to Birmingham in a train that
-would take me in plenty time for my appointment. I took my things to
-a hotel in New Street, and then I made my way to the address which had
-been given me.
-
-"It was a quarter of an hour before my time, but I thought that would
-make no difference. 126b was a passage between two large shops, which
-led to a winding stone stair, from which there were many flats, let as
-offices to companies or professional men. The names of the occupants
-were painted at the bottom on the wall, but there was no such name as
-the Franco-Midland Hardware Company, Limited. I stood for a few minutes
-with my heart in my boots, wondering whether the whole thing was an
-elaborate hoax or not, when up came a man and addressed me. He was very
-like the chap I had seen the night before, the same figure and voice,
-but he was clean shaven and his hair was lighter.
-
-"'Are you Mr. Hall Pycroft?' he asked.
-
-"'Yes,' said I.
-
-"'Oh! I was expecting you, but you are a trifle before your time. I had
-a note from my brother this morning in which he sang your praises very
-loudly.'
-
-"'I was just looking for the offices when you came.
-
-"'We have not got our name up yet, for we only secured these temporary
-premises last week. Come up with me, and we will talk the matter over.'
-
-"I followed him to the top of a very lofty stair, and there, right under
-the slates, were a couple of empty, dusty little rooms, uncarpeted and
-uncurtained, into which he led me. I had thought of a great office with
-shining tables and rows of clerks, such as I was used to, and I dare say
-I stared rather straight at the two deal chairs and one little table,
-which, with a ledger and a waste paper basket, made up the whole
-furniture.
-
-"'Don't be disheartened, Mr. Pycroft,' said my new acquaintance, seeing
-the length of my face. 'Rome was not built in a day, and we have lots of
-money at our backs, though we don't cut much dash yet in offices. Pray
-sit down, and let me have your letter.'
-
-"I gave it to him, and he read it over very carefully.
-
-"'You seem to have made a vast impression upon my brother Arthur,' said
-he; 'and I know that he is a pretty shrewd judge. He swears by London,
-you know; and I by Birmingham; but this time I shall follow his advice.
-Pray consider yourself definitely engaged."
-
-"'What are my duties?' I asked.
-
-"'You will eventually manage the great depot in Paris, which will pour
-a flood of English crockery into the shops of a hundred and thirty-four
-agents in France. The purchase will be completed in a week, and
-meanwhile you will remain in Birmingham and make yourself useful.'
-
-"'How?'
-
-"For answer, he took a big red book out of a drawer.
-
-"'This is a directory of Paris,' said he, 'with the trades after the
-names of the people. I want you to take it home with you, and to mark
-off all the hardware sellers, with their addresses. It would be of the
-greatest use to me to have them.'
-
-"'Surely there are classified lists?' I suggested.
-
-"'Not reliable ones. Their system is different from ours. Stick at it,
-and let me have the lists by Monday, at twelve. Good-day, Mr. Pycroft.
-If you continue to show zeal and intelligence you will find the company
-a good master.'
-
-"I went back to the hotel with the big book under my arm, and with very
-conflicting feelings in my breast. On the one hand, I was definitely
-engaged and had a hundred pounds in my pocket; on the other, the look
-of the offices, the absence of name on the wall, and other of the points
-which would strike a business man had left a bad impression as to the
-position of my employers. However, come what might, I had my money, so I
-settled down to my task. All Sunday I was kept hard at work, and yet by
-Monday I had only got as far as H. I went round to my employer, found
-him in the same dismantled kind of room, and was told to keep at
-it until Wednesday, and then come again. On Wednesday it was still
-unfinished, so I hammered away until Friday--that is, yesterday. Then I
-brought it round to Mr. Harry Pinner.
-
-"'Thank you very much,' said he; 'I fear that I underrated the
-difficulty of the task. This list will be of very material assistance to
-me.'
-
-"'It took some time,' said I.
-
-"'And now,' said he, 'I want you to make a list of the furniture shops,
-for they all sell crockery.'
-
-"'Very good.'
-
-"'And you can come up to-morrow evening, at seven, and let me know how
-you are getting on. Don't overwork yourself. A couple of hours at Day's
-Music Hall in the evening would do you no harm after your labors.' He
-laughed as he spoke, and I saw with a thrill that his second tooth upon
-the left-hand side had been very badly stuffed with gold."
-
-
-Sherlock Holmes rubbed his hands with delight, and I stared with
-astonishment at our client.
-
-"You may well look surprised, Dr. Watson; but it is this way," said he:
-"When I was speaking to the other chap in London, at the time that he
-laughed at my not going to Mawson's, I happened to notice that his tooth
-was stuffed in this very identical fashion. The glint of the gold in
-each case caught my eye, you see. When I put that with the voice and
-figure being the same, and only those things altered which might be
-changed by a razor or a wig, I could not doubt that it was the same man.
-Of course you expect two brothers to be alike, but not that they should
-have the same tooth stuffed in the same way. He bowed me out, and I
-found myself in the street, hardly knowing whether I was on my head or
-my heels. Back I went to my hotel, put my head in a basin of cold water,
-and tried to think it out. Why had he sent me from London to Birmingham?
-Why had he got there before me? And why had he written a letter from
-himself to himself? It was altogether too much for me, and I could make
-no sense of it. And then suddenly it struck me that what was dark to me
-might be very light to Mr. Sherlock Holmes. I had just time to get up to
-town by the night train to see him this morning, and to bring you both
-back with me to Birmingham."
-
-There was a pause after the stock-broker's clerk had concluded his
-surprising experience. Then Sherlock Holmes cocked his eye at me,
-leaning back on the cushions with a pleased and yet critical face, like
-a connoisseur who has just taken his first sip of a comet vintage.
-
-"Rather fine, Watson, is it not?" said he. "There are points in it which
-please me. I think that you will agree with me that an interview with
-Mr. Arthur Harry Pinner in the temporary offices of the Franco-Midland
-Hardware Company, Limited, would be a rather interesting experience for
-both of us."
-
-"But how can we do it?" I asked.
-
-"Oh, easily enough," said Hall Pycroft, cheerily. "You are two friends
-of mine who are in want of a billet, and what could be more natural than
-that I should bring you both round to the managing director?"
-
-"Quite so, of course," said Holmes. "I should like to have a look at
-the gentleman, and see if I can make anything of his little game.
-What qualities have you, my friend, which would make your services
-so valuable? or is it possible that--" He began biting his nails and
-staring blankly out of the window, and we hardly drew another word from
-him until we were in New Street.
-
-At seven o'clock that evening we were walking, the three of us, down
-Corporation Street to the company's offices.
-
-"It is no use our being at all before our time," said our client. "He
-only comes there to see me, apparently, for the place is deserted up to
-the very hour he names."
-
-"That is suggestive," remarked Holmes.
-
-"By Jove, I told you so!" cried the clerk. "That's he walking ahead of
-us there."
-
-He pointed to a smallish, dark, well-dressed man who was bustling along
-the other side of the road. As we watched him he looked across at a boy
-who was bawling out the latest edition of the evening paper, and running
-over among the cabs and busses, he bought one from him. Then, clutching
-it in his hand, he vanished through a door-way.
-
-"There he goes!" cried Hall Pycroft. "These are the company's offices
-into which he has gone. Come with me, and I'll fix it up as easily as
-possible."
-
-Following his lead, we ascended five stories, until we found ourselves
-outside a half-opened door, at which our client tapped. A voice within
-bade us enter, and we entered a bare, unfurnished room such as Hall
-Pycroft had described. At the single table sat the man whom we had seen
-in the street, with his evening paper spread out in front of him, and as
-he looked up at us it seemed to me that I had never looked upon a face
-which bore such marks of grief, and of something beyond grief--of a
-horror such as comes to few men in a lifetime. His brow glistened with
-perspiration, his cheeks were of the dull, dead white of a fish's belly,
-and his eyes were wild and staring. He looked at his clerk as though he
-failed to recognize him, and I could see by the astonishment depicted
-upon our conductor's face that this was by no means the usual appearance
-of his employer.
-
-"You look ill, Mr. Pinner!" he exclaimed.
-
-"Yes, I am not very well," answered the other, making obvious efforts
-to pull himself together, and licking his dry lips before he spoke. "Who
-are these gentlemen whom you have brought with you?"
-
-"One is Mr. Harris, of Bermondsey, and the other is Mr. Price, of this
-town," said our clerk, glibly. "They are friends of mine and gentlemen
-of experience, but they have been out of a place for some little time,
-and they hoped that perhaps you might find an opening for them in the
-company's employment."
-
-"Very possibly! Very possibly!" cried Mr. Pinner with a ghastly smile.
-"Yes, I have no doubt that we shall be able to do something for you.
-What is your particular line, Mr. Harris?"
-
-"I am an accountant," said Holmes.
-
-"Ah yes, we shall want something of the sort. And you, Mr. Price?"
-
-"A clerk," said I.
-
-"I have every hope that the company may accommodate you. I will let you
-know about it as soon as we come to any conclusion. And now I beg that
-you will go. For God's sake leave me to myself!"
-
-These last words were shot out of him, as though the constraint which
-he was evidently setting upon himself had suddenly and utterly burst
-asunder. Holmes and I glanced at each other, and Hall Pycroft took a
-step towards the table.
-
-"You forget, Mr. Pinner, that I am here by appointment to receive some
-directions from you," said he.
-
-"Certainly, Mr. Pycroft, certainly," the other resumed in a calmer tone.
-"You may wait here a moment; and there is no reason why your friends
-should not wait with you. I will be entirely at your service in three
-minutes, if I might trespass upon your patience so far." He rose with a
-very courteous air, and, bowing to us, he passed out through a door at
-the farther end of the room, which he closed behind him.
-
-"What now?" whispered Holmes. "Is he giving us the slip?"
-
-"Impossible," answered Pycroft.
-
-"Why so?"
-
-"That door leads into an inner room."
-
-"There is no exit?"
-
-"None."
-
-"Is it furnished?"
-
-"It was empty yesterday."
-
-"Then what on earth can he be doing? There is something which I don't
-understand in this manner. If ever a man was three parts mad with
-terror, that man's name is Pinner. What can have put the shivers on
-him?"
-
-"He suspects that we are detectives," I suggested.
-
-"That's it," cried Pycroft.
-
-Holmes shook his head. "He did not turn pale. He was pale when we
-entered the room," said he. "It is just possible that--"
-
-His words were interrupted by a sharp rat-tat from the direction of the
-inner door.
-
-"What the deuce is he knocking at his own door for?" cried the clerk.
-
-Again and much louder came the rat-tat-tat. We all gazed expectantly at
-the closed door. Glancing at Holmes, I saw his face turn rigid, and he
-leaned forward in intense excitement. Then suddenly came a low guggling,
-gargling sound, and a brisk drumming upon woodwork. Holmes sprang
-frantically across the room and pushed at the door. It was fastened on
-the inner side. Following his example, we threw ourselves upon it with
-all our weight. One hinge snapped, then the other, and down came the
-door with a crash. Rushing over it, we found ourselves in the inner
-room. It was empty.
-
-But it was only for a moment that we were at fault. At one corner, the
-corner nearest the room which we had left, there was a second door.
-Holmes sprang to it and pulled it open. A coat and waistcoat were lying
-on the floor, and from a hook behind the door, with his own braces
-round his neck, was hanging the managing director of the Franco-Midland
-Hardware Company. His knees were drawn up, his head hung at a dreadful
-angle to his body, and the clatter of his heels against the door made
-the noise which had broken in upon our conversation. In an instant I
-had caught him round the waist, and held him up while Holmes and Pycroft
-untied the elastic bands which had disappeared between the livid creases
-of skin. Then we carried him into the other room, where he lay with
-a clay-colored face, puffing his purple lips in and out with every
-breath--a dreadful wreck of all that he had been but five minutes
-before.
-
-"What do you think of him, Watson?" asked Holmes.
-
-I stooped over him and examined him. His pulse was feeble and
-intermittent, but his breathing grew longer, and there was a little
-shivering of his eyelids, which showed a thin white slit of ball
-beneath.
-
-"It has been touch and go with him," said I, "but he'll live now. Just
-open that window, and hand me the water carafe." I undid his collar,
-poured the cold water over his face, and raised and sank his arms until
-he drew a long, natural breath. "It's only a question of time now," said
-I, as I turned away from him.
-
-Holmes stood by the table, with his hands deep in his trouser's pockets
-and his chin upon his breast.
-
-"I suppose we ought to call the police in now," said he. "And yet I
-confess that I'd like to give them a complete case when they come."
-
-"It's a blessed mystery to me," cried Pycroft, scratching his head.
-"Whatever they wanted to bring me all the way up here for, and then--"
-
-"Pooh! All that is clear enough," said Holmes impatiently. "It is this
-last sudden move."
-
-"You understand the rest, then?"
-
-"I think that it is fairly obvious. What do you say, Watson?"
-
-I shrugged my shoulders. "I must confess that I am out of my depths,"
-said I.
-
-"Oh surely if you consider the events at first they can only point to
-one conclusion."
-
-"What do you make of them?"
-
-"Well, the whole thing hinges upon two points. The first is the making
-of Pycroft write a declaration by which he entered the service of this
-preposterous company. Do you not see how very suggestive that is?"
-
-"I am afraid I miss the point."
-
-"Well, why did they want him to do it? Not as a business matter, for
-these arrangements are usually verbal, and there was no earthly business
-reason why this should be an exception. Don't you see, my young friend,
-that they were very anxious to obtain a specimen of your handwriting,
-and had no other way of doing it?"
-
-"And why?"
-
-"Quite so. Why? When we answer that we have made some progress with our
-little problem. Why? There can be only one adequate reason. Some one
-wanted to learn to imitate your writing, and had to procure a specimen
-of it first. And now if we pass on to the second point we find that each
-throws light upon the other. That point is the request made by Pinner
-that you should not resign your place, but should leave the manager of
-this important business in the full expectation that a Mr. Hall Pycroft,
-whom he had never seen, was about to enter the office upon the Monday
-morning."
-
-"My God!" cried our client, "what a blind beetle I have been!"
-
-"Now you see the point about the handwriting. Suppose that some one
-turned up in your place who wrote a completely different hand from that
-in which you had applied for the vacancy, of course the game would have
-been up. But in the interval the rogue had learned to imitate you,
-and his position was therefore secure, as I presume that nobody in the
-office had ever set eyes upon you."
-
-"Not a soul," groaned Hall Pycroft.
-
-"Very good. Of course it was of the utmost importance to prevent you
-from thinking better of it, and also to keep you from coming into
-contact with any one who might tell you that your double was at work
-in Mawson's office. Therefore they gave you a handsome advance on your
-salary, and ran you off to the Midlands, where they gave you enough work
-to do to prevent your going to London, where you might have burst their
-little game up. That is all plain enough."
-
-"But why should this man pretend to be his own brother?"
-
-"Well, that is pretty clear also. There are evidently only two of them
-in it. The other is impersonating you at the office. This one acted
-as your engager, and then found that he could not find you an employer
-without admitting a third person into his plot. That he was most
-unwilling to do. He changed his appearance as far as he could, and
-trusted that the likeness, which you could not fail to observe, would be
-put down to a family resemblance. But for the happy chance of the gold
-stuffing, your suspicions would probably never have been aroused."
-
-Hall Pycroft shook his clinched hands in the air. "Good Lord!" he cried,
-"while I have been fooled in this way, what has this other Hall Pycroft
-been doing at Mawson's? What should we do, Mr. Holmes? Tell me what to
-do."
-
-"We must wire to Mawson's."
-
-"They shut at twelve on Saturdays."
-
-"Never mind. There may be some door-keeper or attendant--"
-
-"Ah yes, they keep a permanent guard there on account of the value of
-the securities that they hold. I remember hearing it talked of in the
-City."
-
-"Very good; we shall wire to him, and see if all is well, and if a clerk
-of your name is working there. That is clear enough; but what is not so
-clear is why at sight of us one of the rogues should instantly walk out
-of the room and hang himself."
-
-"The paper!" croaked a voice behind us. The man was sitting up, blanched
-and ghastly, with returning reason in his eyes, and hands which rubbed
-nervously at the broad red band which still encircled his throat.
-
-"The paper! Of course!" yelled Holmes, in a paroxysm of excitement.
-"Idiot that I was! I thought so much of our visit that the paper never
-entered my head for an instant. To be sure, the secret must be there."
-He flattened it out upon the table, and a cry of triumph burst from his
-lips. "Look at this, Watson," he cried. "It is a London paper, an early
-edition of the Evening Standard. Here is what we want. Look at the
-headlines: 'Crime in the City. Murder at Mawson & Williams's. Gigantic
-attempted Robbery. Capture of the Criminal.' Here, Watson, we are all
-equally anxious to hear it, so kindly read it aloud to us."
-
-It appeared from its position in the paper to have been the one event of
-importance in town, and the account of it ran in this way:
-
-"A desperate attempt at robbery, culminating in the death of one man and
-the capture of the criminal, occurred this afternoon in the City. For
-some time back Mawson & Williams, the famous financial house, have been
-the guardians of securities which amount in the aggregate to a sum of
-considerably over a million sterling. So conscious was the manager of
-the responsibility which devolved upon him in consequence of the great
-interests at stake that safes of the very latest construction have
-been employed, and an armed watchman has been left day and night in the
-building. It appears that last week a new clerk named Hall Pycroft was
-engaged by the firm. This person appears to have been none other that
-Beddington, the famous forger and cracksman, who, with his brother, had
-only recently emerged from a five years' spell of penal servitude. By
-some means, which are not yet clear, he succeeded in winning, under a
-false name, this official position in the office, which he utilized in
-order to obtain moulding of various locks, and a thorough knowledge of
-the position of the strong room and the safes.
-
-"It is customary at Mawson's for the clerks to leave at midday on
-Saturday. Sergeant Tuson, of the City Police, was somewhat surprised,
-therefore to see a gentleman with a carpet bag come down the steps at
-twenty minutes past one. His suspicions being aroused, the sergeant
-followed the man, and with the aid of Constable Pollock succeeded, after
-a most desperate resistance, in arresting him. It was at once clear
-that a daring and gigantic robbery had been committed. Nearly a hundred
-thousand pounds' worth of American railway bonds, with a large amount
-of scrip in mines and other companies, was discovered in the bag. On
-examining the premises the body of the unfortunate watchman was found
-doubled up and thrust into the largest of the safes, where it would not
-have been discovered until Monday morning had it not been for the prompt
-action of Sergeant Tuson. The man's skull had been shattered by a
-blow from a poker delivered from behind. There could be no doubt
-that Beddington had obtained entrance by pretending that he had left
-something behind him, and having murdered the watchman, rapidly rifled
-the large safe, and then made off with his booty. His brother, who
-usually works with him, has not appeared in this job as far as can
-at present be ascertained, although the police are making energetic
-inquiries as to his whereabouts."
-
-"Well, we may save the police some little trouble in that direction,"
-said Holmes, glancing at the haggard figure huddled up by the window.
-"Human nature is a strange mixture, Watson. You see that even a villain
-and murderer can inspire such affection that his brother turns to
-suicide when he learns that his neck is forfeited. However, we have
-no choice as to our action. The doctor and I will remain on guard, Mr.
-Pycroft, if you will have the kindness to step out for the police."
-
-
-
-
-Adventure IV. The "_Gloria Scott_"
-
-
-"I have some papers here," said my friend Sherlock Holmes, as we sat
-one winter's night on either side of the fire, "which I really think,
-Watson, that it would be worth your while to glance over. These are the
-documents in the extraordinary case of the Gloria Scott, and this is the
-message which struck Justice of the Peace Trevor dead with horror when
-he read it."
-
-He had picked from a drawer a little tarnished cylinder, and, undoing
-the tape, he handed me a short note scrawled upon a half-sheet of
-slate-gray paper.
-
-"The supply of game for London is going steadily up," it ran.
-"Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life."
-
-As I glanced up from reading this enigmatical message, I saw Holmes
-chuckling at the expression upon my face.
-
-"You look a little bewildered," said he.
-
-"I cannot see how such a message as this could inspire horror. It seems
-to me to be rather grotesque than otherwise."
-
-"Very likely. Yet the fact remains that the reader, who was a fine,
-robust old man, was knocked clean down by it as if it had been the butt
-end of a pistol."
-
-"You arouse my curiosity," said I. "But why did you say just now that
-there were very particular reasons why I should study this case?"
-
-"Because it was the first in which I was ever engaged."
-
-I had often endeavored to elicit from my companion what had first turned
-his mind in the direction of criminal research, but had never caught him
-before in a communicative humor. Now he sat forward in this arm-chair
-and spread out the documents upon his knees. Then he lit his pipe and
-sat for some time smoking and turning them over.
-
-"You never heard me talk of Victor Trevor?" he asked. "He was the only
-friend I made during the two years I was at college. I was never a very
-sociable fellow, Watson, always rather fond of moping in my rooms and
-working out my own little methods of thought, so that I never mixed
-much with the men of my year. Bar fencing and boxing I had few athletic
-tastes, and then my line of study was quite distinct from that of the
-other fellows, so that we had no points of contact at all. Trevor was
-the only man I knew, and that only through the accident of his bull
-terrier freezing on to my ankle one morning as I went down to chapel.
-
-"It was a prosaic way of forming a friendship, but it was effective.
-I was laid by the heels for ten days, but Trevor used to come in to
-inquire after me. At first it was only a minute's chat, but soon his
-visits lengthened, and before the end of the term we were close friends.
-He was a hearty, full-blooded fellow, full of spirits and energy,
-the very opposite to me in most respects, but we had some subjects
-in common, and it was a bond of union when I found that he was as
-friendless as I. Finally, he invited me down to his father's place at
-Donnithorpe, in Norfolk, and I accepted his hospitality for a month of
-the long vacation.
-
-"Old Trevor was evidently a man of some wealth and consideration, a
-J.P., and a landed proprietor. Donnithorpe is a little hamlet just to
-the north of Langmere, in the country of the Broads. The house was
-an old-fashioned, wide-spread, oak-beamed brick building, with a fine
-lime-lined avenue leading up to it. There was excellent wild-duck
-shooting in the fens, remarkably good fishing, a small but select
-library, taken over, as I understood, from a former occupant, and a
-tolerable cook, so that he would be a fastidious man who could not put
-in a pleasant month there.
-
-"Trevor senior was a widower, and my friend his only son.
-
-"There had been a daughter, I heard, but she had died of diphtheria
-while on a visit to Birmingham. The father interested me extremely.
-He was a man of little culture, but with a considerable amount of rude
-strength, both physically and mentally. He knew hardly any books, but
-he had traveled far, had seen much of the world. And had remembered
-all that he had learned. In person he was a thick-set, burly man with
-a shock of grizzled hair, a brown, weather-beaten face, and blue eyes
-which were keen to the verge of fierceness. Yet he had a reputation for
-kindness and charity on the country-side, and was noted for the leniency
-of his sentences from the bench.
-
-"One evening, shortly after my arrival, we were sitting over a glass of
-port after dinner, when young Trevor began to talk about those habits
-of observation and inference which I had already formed into a system,
-although I had not yet appreciated the part which they were to play in
-my life. The old man evidently thought that his son was exaggerating in
-his description of one or two trivial feats which I had performed.
-
-"'Come, now, Mr. Holmes,' said he, laughing good-humoredly. 'I'm an
-excellent subject, if you can deduce anything from me.'
-
-"'I fear there is not very much,' I answered; 'I might suggest that
-you have gone about in fear of some personal attack within the last
-twelvemonth.'
-
-"The laugh faded from his lips, and he stared at me in great surprise.
-
-"'Well, that's true enough,' said he. 'You know, Victor,' turning to his
-son, 'when we broke up that poaching gang they swore to knife us, and
-Sir Edward Holly has actually been attacked. I've always been on my
-guard since then, though I have no idea how you know it.'
-
-"'You have a very handsome stick,' I answered. 'By the inscription I
-observed that you had not had it more than a year. But you have taken
-some pains to bore the head of it and pour melted lead into the hole so
-as to make it a formidable weapon. I argued that you would not take such
-precautions unless you had some danger to fear.'
-
-"'Anything else?' he asked, smiling.
-
-"'You have boxed a good deal in your youth.'
-
-"'Right again. How did you know it? Is my nose knocked a little out of
-the straight?'
-
-"'No,' said I. 'It is your ears. They have the peculiar flattening and
-thickening which marks the boxing man.'
-
-"'Anything else?'
-
-"'You have done a good deal of digging by your callosities.'
-
-"'Made all my money at the gold fields.'
-
-"'You have been in New Zealand.'
-
-"'Right again.'
-
-"'You have visited Japan.'
-
-"'Quite true.'
-
-"'And you have been most intimately associated with some one whose
-initials were J. A., and whom you afterwards were eager to entirely
-forget.'
-
-"Mr. Trevor stood slowly up, fixed his large blue eyes upon me with a
-strange wild stare, and then pitched forward, with his face among the
-nutshells which strewed the cloth, in a dead faint.
-
-"You can imagine, Watson, how shocked both his son and I were. His
-attack did not last long, however, for when we undid his collar, and
-sprinkled the water from one of the finger-glasses over his face, he
-gave a gasp or two and sat up.
-
-"'Ah, boys,' said he, forcing a smile, 'I hope I haven't frightened you.
-Strong as I look, there is a weak place in my heart, and it does not
-take much to knock me over. I don't know how you manage this, Mr.
-Holmes, but it seems to me that all the detectives of fact and of fancy
-would be children in your hands. That's your line of life, sir, and you
-may take the word of a man who has seen something of the world.'
-
-"And that recommendation, with the exaggerated estimate of my ability
-with which he prefaced it, was, if you will believe me, Watson, the very
-first thing which ever made me feel that a profession might be made
-out of what had up to that time been the merest hobby. At the moment,
-however, I was too much concerned at the sudden illness of my host to
-think of anything else.
-
-"'I hope that I have said nothing to pain you?' said I.
-
-"'Well, you certainly touched upon rather a tender point. Might I ask
-how you know, and how much you know?' He spoke now in a half-jesting
-fashion, but a look of terror still lurked at the back of his eyes.
-
-"'It is simplicity itself,' said I. 'When you bared your arm to draw
-that fish into the boat I saw that J. A. Had been tattooed in the bend
-of the elbow. The letters were still legible, but it was perfectly clear
-from their blurred appearance, and from the staining of the skin round
-them, that efforts had been made to obliterate them. It was obvious,
-then, that those initials had once been very familiar to you, and that
-you had afterwards wished to forget them.'
-
-"What an eye you have!" he cried, with a sigh of relief. 'It is just as
-you say. But we won't talk of it. Of all ghosts the ghosts of our old
-lovers are the worst. Come into the billiard-room and have a quiet
-cigar.'
-
-
-"From that day, amid all his cordiality, there was always a touch of
-suspicion in Mr. Trevor's manner towards me. Even his son remarked it.
-'You've given the governor such a turn,' said he, 'that he'll never be
-sure again of what you know and what you don't know.' He did not mean
-to show it, I am sure, but it was so strongly in his mind that it peeped
-out at every action. At last I became so convinced that I was causing
-him uneasiness that I drew my visit to a close. On the very day,
-however, before I left, and incident occurred which proved in the sequel
-to be of importance.
-
-"We were sitting out upon the lawn on garden chairs, the three of us,
-basking in the sun and admiring the view across the Broads, when a maid
-came out to say that there was a man at the door who wanted to see Mr.
-Trevor.
-
-"'What is his name?' asked my host.
-
-"'He would not give any.'
-
-"'What does he want, then?'
-
-"'He says that you know him, and that he only wants a moment's
-conversation.'
-
-"'Show him round here.' An instant afterwards there appeared a little
-wizened fellow with a cringing manner and a shambling style of
-walking. He wore an open jacket, with a splotch of tar on the sleeve,
-a red-and-black check shirt, dungaree trousers, and heavy boots badly
-worn. His face was thin and brown and crafty, with a perpetual smile
-upon it, which showed an irregular line of yellow teeth, and his
-crinkled hands were half closed in a way that is distinctive of sailors.
-As he came slouching across the lawn I heard Mr. Trevor make a sort of
-hiccoughing noise in his throat, and jumping out of his chair, he ran
-into the house. He was back in a moment, and I smelt a strong reek of
-brandy as he passed me.
-
-"'Well, my man,' said he. 'What can I do for you?'
-
-"The sailor stood looking at him with puckered eyes, and with the same
-loose-lipped smile upon his face.
-
-"'You don't know me?' he asked.
-
-"'Why, dear me, it is surely Hudson,' said Mr. Trevor in a tone of
-surprise.
-
-"'Hudson it is, sir,' said the seaman. 'Why, it's thirty year and more
-since I saw you last. Here you are in your house, and me still picking
-my salt meat out of the harness cask.'
-
-"'Tut, you will find that I have not forgotten old times,' cried Mr.
-Trevor, and, walking towards the sailor, he said something in a low
-voice. 'Go into the kitchen,' he continued out loud, 'and you will get
-food and drink. I have no doubt that I shall find you a situation.'
-
-"'Thank you, sir,' said the seaman, touching his fore-lock. 'I'm just
-off a two-yearer in an eight-knot tramp, short-handed at that, and I
-wants a rest. I thought I'd get it either with Mr. Beddoes or with you.'
-
-"'Ah!' cried Trevor. 'You know where Mr. Beddoes is?'
-
-"'Bless you, sir, I know where all my old friends are,' said the
-fellow with a sinister smile, and he slouched off after the maid to the
-kitchen. Mr. Trevor mumbled something to us about having been shipmate
-with the man when he was going back to the diggings, and then, leaving
-us on the lawn, he went indoors. An hour later, when we entered the
-house, we found him stretched dead drunk upon the dining-room sofa. The
-whole incident left a most ugly impression upon my mind, and I was
-not sorry next day to leave Donnithorpe behind me, for I felt that my
-presence must be a source of embarrassment to my friend.
-
-"All this occurred during the first month of the long vacation. I went
-up to my London rooms, where I spent seven weeks working out a few
-experiments in organic chemistry. One day, however, when the autumn was
-far advanced and the vacation drawing to a close, I received a telegram
-from my friend imploring me to return to Donnithorpe, and saying that
-he was in great need of my advice and assistance. Of course I dropped
-everything and set out for the North once more.
-
-"He met me with the dog-cart at the station, and I saw at a glance that
-the last two months had been very trying ones for him. He had grown thin
-and careworn, and had lost the loud, cheery manner for which he had been
-remarkable.
-
-"'The governor is dying,' were the first words he said.
-
-"'Impossible!' I cried. 'What is the matter?'
-
-"'Apoplexy. Nervous shock, He's been on the verge all day. I doubt if we
-shall find him alive.'
-
-"I was, as you may think, Watson, horrified at this unexpected news.
-
-"'What has caused it?' I asked.
-
-"'Ah, that is the point. Jump in and we can talk it over while we drive.
-You remember that fellow who came upon the evening before you left us?'
-
-"'Perfectly.'
-
-"'Do you know who it was that we let into the house that day?'
-
-"'I have no idea.'
-
-"'It was the devil, Holmes,' he cried.
-
-"I stared at him in astonishment.
-
-"'Yes, it was the devil himself. We have not had a peaceful hour
-since--not one. The governor has never held up his head from that
-evening, and now the life has been crushed out of him and his heart
-broken, all through this accursed Hudson.'
-
-"'What power had he, then?'
-
-"'Ah, that is what I would give so much to know. The kindly, charitable,
-good old governor--how could he have fallen into the clutches of such a
-ruffian! But I am so glad that you have come, Holmes. I trust very much
-to your judgment and discretion, and I know that you will advise me for
-the best.'
-
-"We were dashing along the smooth white country road, with the long
-stretch of the Broads in front of us glimmering in the red light of the
-setting sun. From a grove upon our left I could already see the high
-chimneys and the flag-staff which marked the squire's dwelling.
-
-"'My father made the fellow gardener,' said my companion, 'and then, as
-that did not satisfy him, he was promoted to be butler. The house seemed
-to be at his mercy, and he wandered about and did what he chose in it.
-The maids complained of his drunken habits and his vile language. The
-dad raised their wages all round to recompense them for the annoyance.
-The fellow would take the boat and my father's best gun and treat
-himself to little shooting trips. And all this with such a sneering,
-leering, insolent face that I would have knocked him down twenty times
-over if he had been a man of my own age. I tell you, Holmes, I have
-had to keep a tight hold upon myself all this time; and now I am asking
-myself whether, if I had let myself go a little more, I might not have
-been a wiser man.
-
-"'Well, matters went from bad to worse with us, and this animal Hudson
-became more and more intrusive, until at last, on making some insolent
-reply to my father in my presence one day, I took him by the shoulders
-and turned him out of the room. He slunk away with a livid face and two
-venomous eyes which uttered more threats than his tongue could do. I
-don't know what passed between the poor dad and him after that, but the
-dad came to me next day and asked me whether I would mind apologizing to
-Hudson. I refused, as you can imagine, and asked my father how he
-could allow such a wretch to take such liberties with himself and his
-household.
-
-"'"Ah, my boy," said he, "it is all very well to talk, but you don't
-know how I am placed. But you shall know, Victor. I'll see that you
-shall know, come what may. You wouldn't believe harm of your poor old
-father, would you, lad?" He was very much moved, and shut himself up
-in the study all day, where I could see through the window that he was
-writing busily.
-
-"'That evening there came what seemed to me to be a grand release,
-for Hudson told us that he was going to leave us. He walked into the
-dining-room as we sat after dinner, and announced his intention in the
-thick voice of a half-drunken man.
-
-"'"I've had enough of Norfolk," said he. "I'll run down to Mr. Beddoes
-in Hampshire. He'll be as glad to see me as you were, I dare say."
-
-"'"You're not going away in an unkind spirit, Hudson, I hope," said my
-father, with a tameness which made my blood boil.
-
-"'"I've not had my 'pology," said he sulkily, glancing in my direction.
-
-"'"Victor, you will acknowledge that you have used this worthy fellow
-rather roughly," said the dad, turning to me.
-
-"'"On the contrary, I think that we have both shown extraordinary
-patience towards him," I answered.
-
-"'"Oh, you do, do you?" he snarls. "Very good, mate. We'll see about
-that!"
-
-"'He slouched out of the room, and half an hour afterwards left the
-house, leaving my father in a state of pitiable nervousness. Night after
-night I heard him pacing his room, and it was just as he was recovering
-his confidence that the blow did at last fall.'
-
-"'And how?' I asked eagerly.
-
-"'In a most extraordinary fashion. A letter arrived for my father
-yesterday evening, bearing the Fordingbridge post-mark. My father read
-it, clapped both his hands to his head, and began running round the room
-in little circles like a man who has been driven out of his senses. When
-I at last drew him down on to the sofa, his mouth and eyelids were all
-puckered on one side, and I saw that he had a stroke. Dr. Fordham came
-over at once. We put him to bed; but the paralysis has spread, he has
-shown no sign of returning consciousness, and I think that we shall
-hardly find him alive.'
-
-"'You horrify me, Trevor!' I cried. 'What then could have been in this
-letter to cause so dreadful a result?'
-
-"'Nothing. There lies the inexplicable part of it. The message was
-absurd and trivial. Ah, my God, it is as I feared!'
-
-"As he spoke we came round the curve of the avenue, and saw in the
-fading light that every blind in the house had been drawn down. As
-we dashed up to the door, my friend's face convulsed with grief, a
-gentleman in black emerged from it.
-
-"'When did it happen, doctor?' asked Trevor.
-
-"'Almost immediately after you left.'
-
-"'Did he recover consciousness?'
-
-"'For an instant before the end.'
-
-"'Any message for me.'
-
-"'Only that the papers were in the back drawer of the Japanese cabinet.'
-
-"My friend ascended with the doctor to the chamber of death, while I
-remained in the study, turning the whole matter over and over in my
-head, and feeling as sombre as ever I had done in my life. What was the
-past of this Trevor, pugilist, traveler, and gold-digger, and how had he
-placed himself in the power of this acid-faced seaman? Why, too, should
-he faint at an allusion to the half-effaced initials upon his arm, and
-die of fright when he had a letter from Fordingham? Then I remembered
-that Fordingham was in Hampshire, and that this Mr. Beddoes, whom the
-seaman had gone to visit and presumably to blackmail, had also been
-mentioned as living in Hampshire. The letter, then, might either come
-from Hudson, the seaman, saying that he had betrayed the guilty secret
-which appeared to exist, or it might come from Beddoes, warning an old
-confederate that such a betrayal was imminent. So far it seemed clear
-enough. But then how could this letter be trivial and grotesque, as
-describe by the son? He must have misread it. If so, it must have been
-one of those ingenious secret codes which mean one thing while they seem
-to mean another. I must see this letter. If there were a hidden meaning
-in it, I was confident that I could pluck it forth. For an hour I sat
-pondering over it in the gloom, until at last a weeping maid brought in
-a lamp, and close at her heels came my friend Trevor, pale but composed,
-with these very papers which lie upon my knee held in his grasp. He sat
-down opposite to me, drew the lamp to the edge of the table, and handed
-me a short note scribbled, as you see, upon a single sheet of gray
-paper. 'The supply of game for London is going steadily up,' it ran.
-'Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life.'
-
-"I dare say my face looked as bewildered as yours did just now when
-first I read this message. Then I reread it very carefully. It was
-evidently as I had thought, and some secret meaning must lie buried
-in this strange combination of words. Or could it be that there was
-a prearranged significance to such phrases as 'fly-paper' and
-'hen-pheasant'? Such a meaning would be arbitrary and could not be
-deduced in any way. And yet I was loath to believe that this was the
-case, and the presence of the word Hudson seemed to show that the
-subject of the message was as I had guessed, and that it was from
-Beddoes rather than the sailor. I tried it backwards, but the
-combination 'life pheasant's hen' was not encouraging. Then I tried
-alternate words, but neither 'the of for' nor 'supply game London'
-promised to throw any light upon it.
-
-"And then in an instant the key of the riddle was in my hands, and I saw
-that every third word, beginning with the first, would give a message
-which might well drive old Trevor to despair.
-
-"It was short and terse, the warning, as I now read it to my companion:
-
-"'The game is up. Hudson has told all. Fly for your life.'
-
-"Victor Trevor sank his face into his shaking hands. 'It must be that,
-I suppose,' said he. "This is worse than death, for it means disgrace
-as well. But what is the meaning of these "head-keepers" and
-"hen-pheasants"?'
-
-"'It means nothing to the message, but it might mean a good deal to us
-if we had no other means of discovering the sender. You see that he has
-begun by writing "The...game...is," and so on. Afterwards he had, to
-fulfill the prearranged cipher, to fill in any two words in each space.
-He would naturally use the first words which came to his mind, and
-if there were so many which referred to sport among them, you may
-be tolerably sure that he is either an ardent shot or interested in
-breeding. Do you know anything of this Beddoes?'
-
-"'Why, now that you mention it,' said he, 'I remember that my poor
-father used to have an invitation from him to shoot over his preserves
-every autumn.'
-
-"'Then it is undoubtedly from him that the note comes,' said I. 'It only
-remains for us to find out what this secret was which the sailor Hudson
-seems to have held over the heads of these two wealthy and respected
-men.'
-
-"'Alas, Holmes, I fear that it is one of sin and shame!' cried my
-friend. 'But from you I shall have no secrets. Here is the statement
-which was drawn up by my father when he knew that the danger from Hudson
-had become imminent. I found it in the Japanese cabinet, as he told the
-doctor. Take it and read it to me, for I have neither the strength nor
-the courage to do it myself.'
-
-"These are the very papers, Watson, which he handed to me, and I will
-read them to you, as I read them in the old study that night to him.
-They are endorsed outside, as you see, 'Some particulars of the voyage
-of the bark _Gloria Scott_, from her leaving Falmouth on the 8th
-October, 1855, to her destruction in N. Lat. 15 degrees 20', W. Long.
-25 degrees 14' on Nov. 6th.' It is in the form of a letter, and runs in
-this way:
-
-"'My dear, dear son, now that approaching disgrace begins to darken the
-closing years of my life, I can write with all truth and honesty that it
-is not the terror of the law, it is not the loss of my position in the
-county, nor is it my fall in the eyes of all who have known me, which
-cuts me to the heart; but it is the thought that you should come to
-blush for me--you who love me and who have seldom, I hope, had reason to
-do other than respect me. But if the blow falls which is forever hanging
-over me, then I should wish you to read this, that you may know straight
-from me how far I have been to blame. On the other hand, if all should
-go well (which may kind God Almighty grant!), then if by any chance this
-paper should be still undestroyed and should fall into your hands, I
-conjure you, by all you hold sacred, by the memory of your dear mother,
-and by the love which had been between us, to hurl it into the fire and
-to never give one thought to it again.
-
-"'If then your eye goes on to read this line, I know that I shall
-already have been exposed and dragged from my home, or as is more
-likely, for you know that my heart is weak, by lying with my tongue
-sealed forever in death. In either case the time for suppression is
-past, and every word which I tell you is the naked truth, and this I
-swear as I hope for mercy.
-
-"'My name, dear lad, is not Trevor. I was James Armitage in my younger
-days, and you can understand now the shock that it was to me a few weeks
-ago when your college friend addressed me in words which seemed to imply
-that he had surprised my secret. As Armitage it was that I entered a
-London banking-house, and as Armitage I was convicted of breaking my
-country's laws, and was sentenced to transportation. Do not think very
-harshly of me, laddie. It was a debt of honor, so called, which I had
-to pay, and I used money which was not my own to do it, in the certainty
-that I could replace it before there could be any possibility of its
-being missed. But the most dreadful ill-luck pursued me. The money which
-I had reckoned upon never came to hand, and a premature examination of
-accounts exposed my deficit. The case might have been dealt leniently
-with, but the laws were more harshly administered thirty years ago than
-now, and on my twenty-third birthday I found myself chained as a felon
-with thirty-seven other convicts in 'tween-decks of the bark _Gloria
-Scott_, bound for Australia.
-
-"'It was the year '55 when the Crimean war was at its height, and the
-old convict ships had been largely used as transports in the Black
-Sea. The government was compelled, therefore, to use smaller and less
-suitable vessels for sending out their prisoners. The Gloria Scott
-had been in the Chinese tea-trade, but she was an old-fashioned,
-heavy-bowed, broad-beamed craft, and the new clippers had cut her
-out. She was a five-hundred-ton boat; and besides her thirty-eight
-jail-birds, she carried twenty-six of a crew, eighteen soldiers, a
-captain, three mates, a doctor, a chaplain, and four warders. Nearly a
-hundred souls were in her, all told, when we set sail from Falmouth.
-
-"'The partitions between the cells of the convicts, instead of being of
-thick oak, as is usual in convict-ships, were quite thin and frail.
-The man next to me, upon the aft side, was one whom I had particularly
-noticed when we were led down the quay. He was a young man with a
-clear, hairless face, a long, thin nose, and rather nut-cracker jaws.
-He carried his head very jauntily in the air, had a swaggering style
-of walking, and was, above all else, remarkable for his extraordinary
-height. I don't think any of our heads would have come up to his
-shoulder, and I am sure that he could not have measured less than six
-and a half feet. It was strange among so many sad and weary faces to see
-one which was full of energy and resolution. The sight of it was to me
-like a fire in a snow-storm. I was glad, then, to find that he was my
-neighbor, and gladder still when, in the dead of the night, I heard a
-whisper close to my ear, and found that he had managed to cut an opening
-in the board which separated us.
-
-"'"Hullo, chummy!" said he, "what's your name, and what are you here
-for?"
-
-"'I answered him, and asked in turn who I was talking with.
-
-"'"I'm Jack Prendergast," said he, "and by God! You'll learn to bless my
-name before you've done with me."
-
-"'I remembered hearing of his case, for it was one which had made an
-immense sensation throughout the country some time before my own arrest.
-He was a man of good family and of great ability, but of incurably
-vicious habits, who had by an ingenious system of fraud obtained huge
-sums of money from the leading London merchants.
-
-"'"Ha, ha! You remember my case!" said he proudly.
-
-"'"Very well, indeed."
-
-"'"Then maybe you remember something queer about it?"
-
-"'"What was that, then?"
-
-"'"I'd had nearly a quarter of a million, hadn't I?"
-
-"'"So it was said."
-
-"'"But none was recovered, eh?"
-
-"'"No."
-
-"'"Well, where d'ye suppose the balance is?" he asked.
-
-"'"I have no idea," said I.
-
-"'"Right between my finger and thumb," he cried. "By God! I've got more
-pounds to my name than you've hairs on your head. And if you've money,
-my son, and know how to handle it and spread it, you can do anything.
-Now, you don't think it likely that a man who could do anything is going
-to wear his breeches out sitting in the stinking hold of a rat-gutted,
-beetle-ridden, mouldy old coffin of a Chin China coaster. No, sir, such
-a man will look after himself and will look after his chums. You may lay
-to that! You hold on to him, and you may kiss the book that he'll haul
-you through."
-
-"'That was his style of talk, and at first I thought it meant nothing;
-but after a while, when he had tested me and sworn me in with all
-possible solemnity, he let me understand that there really was a plot
-to gain command of the vessel. A dozen of the prisoners had hatched it
-before they came aboard, Prendergast was the leader, and his money was
-the motive power.
-
-"'"I'd a partner," said he, "a rare good man, as true as a stock to a
-barrel. He's got the dibbs, he has, and where do you think he is at this
-moment? Why, he's the chaplain of this ship--the chaplain, no less! He
-came aboard with a black coat, and his papers right, and money enough in
-his box to buy the thing right up from keel to main-truck. The crew
-are his, body and soul. He could buy 'em at so much a gross with a cash
-discount, and he did it before ever they signed on. He's got two of the
-warders and Mereer, the second mate, and he'd get the captain himself,
-if he thought him worth it."
-
-"'"What are we to do, then?" I asked.
-
-"'"What do you think?" said he. "We'll make the coats of some of these
-soldiers redder than ever the tailor did."
-
-"'"But they are armed," said I.
-
-"'"And so shall we be, my boy. There's a brace of pistols for every
-mother's son of us, and if we can't carry this ship, with the crew at
-our back, it's time we were all sent to a young misses' boarding-school.
-You speak to your mate upon the left to-night, and see if he is to be
-trusted."
-
-"'I did so, and found my other neighbor to be a young fellow in much
-the same position as myself, whose crime had been forgery. His name was
-Evans, but he afterwards changed it, like myself, and he is now a rich
-and prosperous man in the south of England. He was ready enough to join
-the conspiracy, as the only means of saving ourselves, and before we had
-crossed the Bay there were only two of the prisoners who were not in the
-secret. One of these was of weak mind, and we did not dare to trust him,
-and the other was suffering from jaundice, and could not be of any use
-to us.
-
-"'From the beginning there was really nothing to prevent us from taking
-possession of the ship. The crew were a set of ruffians, specially
-picked for the job. The sham chaplain came into our cells to exhort us,
-carrying a black bag, supposed to be full of tracts, and so often did
-he come that by the third day we had each stowed away at the foot of our
-beds a file, a brace of pistols, a pound of powder, and twenty slugs.
-Two of the warders were agents of Prendergast, and the second mate was
-his right-hand man. The captain, the two mates, two warders Lieutenant
-Martin, his eighteen soldiers, and the doctor were all that we had
-against us. Yet, safe as it was, we determined to neglect no precaution,
-and to make our attack suddenly by night. It came, however, more quickly
-than we expected, and in this way.
-
-"'One evening, about the third week after our start, the doctor had come
-down to see one of the prisoners who was ill, and putting his hand down
-on the bottom of his bunk he felt the outline of the pistols. If he had
-been silent he might have blown the whole thing, but he was a nervous
-little chap, so he gave a cry of surprise and turned so pale that the
-man knew what was up in an instant and seized him. He was gagged before
-he could give the alarm, and tied down upon the bed. He had unlocked
-the door that led to the deck, and we were through it in a rush. The two
-sentries were shot down, and so was a corporal who came running to see
-what was the matter. There were two more soldiers at the door of the
-state-room, and their muskets seemed not to be loaded, for they never
-fired upon us, and they were shot while trying to fix their bayonets.
-Then we rushed on into the captain's cabin, but as we pushed open the
-door there was an explosion from within, and there he lay with his
-brains smeared over the chart of the Atlantic which was pinned upon the
-table, while the chaplain stood with a smoking pistol in his hand at
-his elbow. The two mates had both been seized by the crew, and the whole
-business seemed to be settled.
-
-"'The state-room was next the cabin, and we flocked in there and flopped
-down on the settees, all speaking together, for we were just mad with
-the feeling that we were free once more. There were lockers all round,
-and Wilson, the sham chaplain, knocked one of them in, and pulled out a
-dozen of brown sherry. We cracked off the necks of the bottles, poured
-the stuff out into tumblers, and were just tossing them off, when in an
-instant without warning there came the roar of muskets in our ears, and
-the saloon was so full of smoke that we could not see across the table.
-When it cleared again the place was a shambles. Wilson and eight others
-were wriggling on the top of each other on the floor, and the blood and
-the brown sherry on that table turn me sick now when I think of it. We
-were so cowed by the sight that I think we should have given the job up
-if it had not been for Prendergast. He bellowed like a bull and rushed
-for the door with all that were left alive at his heels. Out we ran,
-and there on the poop were the lieutenant and ten of his men. The swing
-skylights above the saloon table had been a bit open, and they had fired
-on us through the slit. We got on them before they could load, and they
-stood to it like men; but we had the upper hand of them, and in five
-minutes it was all over. My God! Was there ever a slaughter-house
-like that ship! Prendergast was like a raging devil, and he picked the
-soldiers up as if they had been children and threw them overboard alive
-or dead. There was one sergeant that was horribly wounded and yet kept
-on swimming for a surprising time, until some one in mercy blew out his
-brains. When the fighting was over there was no one left of our enemies
-except just the warders the mates, and the doctor.
-
-"'It was over them that the great quarrel arose. There were many of us
-who were glad enough to win back our freedom, and yet who had no wish
-to have murder on our souls. It was one thing to knock the soldiers over
-with their muskets in their hands, and it was another to stand by while
-men were being killed in cold blood. Eight of us, five convicts and
-three sailors, said that we would not see it done. But there was no
-moving Prendergast and those who were with him. Our only chance of
-safety lay in making a clean job of it, said he, and he would not leave
-a tongue with power to wag in a witness-box. It nearly came to our
-sharing the fate of the prisoners, but at last he said that if we wished
-we might take a boat and go. We jumped at the offer, for we were already
-sick of these bloodthirsty doings, and we saw that there would be worse
-before it was done. We were given a suit of sailor togs each, a barrel
-of water, two casks, one of junk and one of biscuits, and a compass.
-Prendergast threw us over a chart, told us that we were shipwrecked
-mariners whose ship had foundered in Lat. 15 degrees and Long 25 degrees
-west, and then cut the painter and let us go.
-
-"'And now I come to the most surprising part of my story, my dear son.
-The seamen had hauled the fore-yard aback during the rising, but now as
-we left them they brought it square again, and as there was a light wind
-from the north and east the bark began to draw slowly away from us. Our
-boat lay, rising and falling, upon the long, smooth rollers, and Evans
-and I, who were the most educated of the party, were sitting in the
-sheets working out our position and planning what coast we should make
-for. It was a nice question, for the Cape de Verdes were about five
-hundred miles to the north of us, and the African coast about seven
-hundred to the east. On the whole, as the wind was coming round to the
-north, we thought that Sierra Leone might be best, and turned our head
-in that direction, the bark being at that time nearly hull down on our
-starboard quarter. Suddenly as we looked at her we saw a dense black
-cloud of smoke shoot up from her, which hung like a monstrous tree upon
-the sky line. A few seconds later a roar like thunder burst upon our
-ears, and as the smoke thinned away there was no sign left of the
-_Gloria Scott_. In an instant we swept the boat's head round again and
-pulled with all our strength for the place where the haze still trailing
-over the water marked the scene of this catastrophe.
-
-"'It was a long hour before we reached it, and at first we feared that
-we had come too late to save any one. A splintered boat and a number of
-crates and fragments of spars rising and falling on the waves showed us
-where the vessel had foundered; but there was no sign of life, and we
-had turned away in despair when we heard a cry for help, and saw at some
-distance a piece of wreckage with a man lying stretched across it. When
-we pulled him aboard the boat he proved to be a young seaman of the
-name of Hudson, who was so burned and exhausted that he could give us no
-account of what had happened until the following morning.
-
-"'It seemed that after we had left, Prendergast and his gang had
-proceeded to put to death the five remaining prisoners. The two warders
-had been shot and thrown overboard, and so also had the third mate.
-Prendergast then descended into the 'tween-decks and with his own hands
-cut the throat of the unfortunate surgeon. There only remained the first
-mate, who was a bold and active man. When he saw the convict approaching
-him with the bloody knife in his hand he kicked off his bonds, which he
-had somehow contrived to loosen, and rushing down the deck he plunged
-into the after-hold. A dozen convicts, who descended with their pistols
-in search of him, found him with a match-box in his hand seated beside
-an open powder-barrel, which was one of a hundred carried on board, and
-swearing that he would blow all hands up if he were in any way molested.
-An instant later the explosion occurred, though Hudson thought it was
-caused by the misdirected bullet of one of the convicts rather than the
-mate's match. Be the cause what it may, it was the end of the _Gloria
-Scott_ and of the rabble who held command of her.
-
-"'Such, in a few words, my dear boy, is the history of this terrible
-business in which I was involved. Next day we were picked up by the brig
-_Hotspur_, bound for Australia, whose captain found no difficulty in
-believing that we were the survivors of a passenger ship which had
-foundered. The transport ship Gloria Scott was set down by the Admiralty
-as being lost at sea, and no word has ever leaked out as to her true
-fate. After an excellent voyage the _Hotspur_ landed us at Sydney, where
-Evans and I changed our names and made our way to the diggings,
-where, among the crowds who were gathered from all nations, we had no
-difficulty in losing our former identities. The rest I need not relate.
-We prospered, we traveled, we came back as rich colonials to England,
-and we bought country estates. For more than twenty years we have
-led peaceful and useful lives, and we hoped that our past was forever
-buried. Imagine, then, my feelings when in the seaman who came to us I
-recognized instantly the man who had been picked off the wreck. He had
-tracked us down somehow, and had set himself to live upon our fears. You
-will understand now how it was that I strove to keep the peace with him,
-and you will in some measure sympathize with me in the fears which fill
-me, now that he has gone from me to his other victim with threats upon
-his tongue.'
-
-"Underneath is written in a hand so shaky as to be hardly legible,
-'Beddoes writes in cipher to say H. Has told all. Sweet Lord, have mercy
-on our souls!'
-
-"That was the narrative which I read that night to young Trevor, and I
-think, Watson, that under the circumstances it was a dramatic one.
-The good fellow was heart-broken at it, and went out to the Terai tea
-planting, where I hear that he is doing well. As to the sailor and
-Beddoes, neither of them was ever heard of again after that day on which
-the letter of warning was written. They both disappeared utterly and
-completely. No complaint had been lodged with the police, so that
-Beddoes had mistaken a threat for a deed. Hudson had been seen lurking
-about, and it was believed by the police that he had done away with
-Beddoes and had fled. For myself I believe that the truth was exactly
-the opposite. I think that it is most probable that Beddoes, pushed to
-desperation and believing himself to have been already betrayed, had
-revenged himself upon Hudson, and had fled from the country with as much
-money as he could lay his hands on. Those are the facts of the case,
-Doctor, and if they are of any use to your collection, I am sure that
-they are very heartily at your service."
-
-
-
-
-Adventure V. The Musgrave Ritual
-
-
-An anomaly which often struck me in the character of my friend Sherlock
-Holmes was that, although in his methods of thought he was the neatest
-and most methodical of mankind, and although also he affected a certain
-quiet primness of dress, he was none the less in his personal habits one
-of the most untidy men that ever drove a fellow-lodger to distraction.
-Not that I am in the least conventional in that respect myself. The
-rough-and-tumble work in Afghanistan, coming on the top of a natural
-Bohemianism of disposition, has made me rather more lax than befits a
-medical man. But with me there is a limit, and when I find a man who
-keeps his cigars in the coal-scuttle, his tobacco in the toe end of
-a Persian slipper, and his unanswered correspondence transfixed by a
-jack-knife into the very centre of his wooden mantelpiece, then I begin
-to give myself virtuous airs. I have always held, too, that pistol
-practice should be distinctly an open-air pastime; and when Holmes, in
-one of his queer humors, would sit in an arm-chair with his hair-trigger
-and a hundred Boxer cartridges, and proceed to adorn the opposite
-wall with a patriotic V. R. done in bullet-pocks, I felt strongly that
-neither the atmosphere nor the appearance of our room was improved by
-it.
-
-Our chambers were always full of chemicals and of criminal relics which
-had a way of wandering into unlikely positions, and of turning up in
-the butter-dish or in even less desirable places. But his papers were
-my great crux. He had a horror of destroying documents, especially those
-which were connected with his past cases, and yet it was only once in
-every year or two that he would muster energy to docket and arrange
-them; for, as I have mentioned somewhere in these incoherent memoirs,
-the outbursts of passionate energy when he performed the remarkable
-feats with which his name is associated were followed by reactions of
-lethargy during which he would lie about with his violin and his books,
-hardly moving save from the sofa to the table. Thus month after month
-his papers accumulated, until every corner of the room was stacked with
-bundles of manuscript which were on no account to be burned, and which
-could not be put away save by their owner. One winter's night, as we
-sat together by the fire, I ventured to suggest to him that, as he had
-finished pasting extracts into his common-place book, he might employ
-the next two hours in making our room a little more habitable. He could
-not deny the justice of my request, so with a rather rueful face he went
-off to his bedroom, from which he returned presently pulling a large tin
-box behind him. This he placed in the middle of the floor and, squatting
-down upon a stool in front of it, he threw back the lid. I could see
-that it was already a third full of bundles of paper tied up with red
-tape into separate packages.
-
-"There are cases enough here, Watson," said he, looking at me with
-mischievous eyes. "I think that if you knew all that I had in this box
-you would ask me to pull some out instead of putting others in."
-
-"These are the records of your early work, then?" I asked. "I have often
-wished that I had notes of those cases."
-
-"Yes, my boy, these were all done prematurely before my biographer
-had come to glorify me." He lifted bundle after bundle in a tender,
-caressing sort of way. "They are not all successes, Watson," said he.
-"But there are some pretty little problems among them. Here's the record
-of the Tarleton murders, and the case of Vamberry, the wine merchant,
-and the adventure of the old Russian woman, and the singular affair
-of the aluminium crutch, as well as a full account of Ricoletti of the
-club-foot, and his abominable wife. And here--ah, now, this really is
-something a little recherché."
-
-He dived his arm down to the bottom of the chest, and brought up a small
-wooden box with a sliding lid, such as children's toys are kept in. From
-within he produced a crumpled piece of paper, and old-fashioned brass
-key, a peg of wood with a ball of string attached to it, and three rusty
-old disks of metal.
-
-"Well, my boy, what do you make of this lot?" he asked, smiling at my
-expression.
-
-"It is a curious collection."
-
-"Very curious, and the story that hangs round it will strike you as
-being more curious still."
-
-"These relics have a history then?"
-
-"So much so that they are history."
-
-"What do you mean by that?"
-
-Sherlock Holmes picked them up one by one, and laid them along the edge
-of the table. Then he reseated himself in his chair and looked them over
-with a gleam of satisfaction in his eyes.
-
-"These," said he, "are all that I have left to remind me of the
-adventure of the Musgrave Ritual."
-
-I had heard him mention the case more than once, though I had never been
-able to gather the details. "I should be so glad," said I, "if you would
-give me an account of it."
-
-"And leave the litter as it is?" he cried, mischievously. "Your tidiness
-won't bear much strain after all, Watson. But I should be glad that you
-should add this case to your annals, for there are points in it which
-make it quite unique in the criminal records of this or, I believe,
-of any other country. A collection of my trifling achievements would
-certainly be incomplete which contained no account of this very singular
-business.
-
-"You may remember how the affair of the _Gloria Scott_, and my
-conversation with the unhappy man whose fate I told you of, first turned
-my attention in the direction of the profession which has become my
-life's work. You see me now when my name has become known far and
-wide, and when I am generally recognized both by the public and by the
-official force as being a final court of appeal in doubtful cases.
-Even when you knew me first, at the time of the affair which you have
-commemorated in 'A Study in Scarlet,' I had already established a
-considerable, though not a very lucrative, connection. You can hardly
-realize, then, how difficult I found it at first, and how long I had to
-wait before I succeeded in making any headway.
-
-"When I first came up to London I had rooms in Montague Street, just
-round the corner from the British Museum, and there I waited, filling in
-my too abundant leisure time by studying all those branches of science
-which might make me more efficient. Now and again cases came in my way,
-principally through the introduction of old fellow-students, for during
-my last years at the University there was a good deal of talk there
-about myself and my methods. The third of these cases was that of the
-Musgrave Ritual, and it is to the interest which was aroused by that
-singular chain of events, and the large issues which proved to be at
-stake, that I trace my first stride towards the position which I now
-hold.
-
-"Reginald Musgrave had been in the same college as myself, and I had
-some slight acquaintance with him. He was not generally popular among
-the undergraduates, though it always seemed to me that what was set down
-as pride was really an attempt to cover extreme natural diffidence.
-In appearance he was a man of exceedingly aristocratic type, thin,
-high-nosed, and large-eyed, with languid and yet courtly manners. He was
-indeed a scion of one of the very oldest families in the kingdom,
-though his branch was a cadet one which had separated from the northern
-Musgraves some time in the sixteenth century, and had established itself
-in western Sussex, where the Manor House of Hurlstone is perhaps the
-oldest inhabited building in the county. Something of his birth place
-seemed to cling to the man, and I never looked at his pale, keen face
-or the poise of his head without associating him with gray archways and
-mullioned windows and all the venerable wreckage of a feudal keep. Once
-or twice we drifted into talk, and I can remember that more than once he
-expressed a keen interest in my methods of observation and inference.
-
-"For four years I had seen nothing of him until one morning he walked
-into my room in Montague Street. He had changed little, was dressed like
-a young man of fashion--he was always a bit of a dandy--and preserved
-the same quiet, suave manner which had formerly distinguished him.
-
-"'How has all gone with you Musgrave?' I asked, after we had cordially
-shaken hands.
-
-"'You probably heard of my poor father's death,' said he; 'he was
-carried off about two years ago. Since then I have of course had the
-Hurlstone estates to manage, and as I am member for my district as well,
-my life has been a busy one. But I understand, Holmes, that you are
-turning to practical ends those powers with which you used to amaze us?'
-
-"'Yes,' said I, 'I have taken to living by my wits.'
-
-"'I am delighted to hear it, for your advice at present would be
-exceedingly valuable to me. We have had some very strange doings at
-Hurlstone, and the police have been able to throw no light upon the
-matter. It is really the most extraordinary and inexplicable business.'
-
-"You can imagine with what eagerness I listened to him, Watson, for
-the very chance for which I had been panting during all those months
-of inaction seemed to have come within my reach. In my inmost heart I
-believed that I could succeed where others failed, and now I had the
-opportunity to test myself.
-
-"'Pray, let me have the details,' I cried.
-
-"Reginald Musgrave sat down opposite to me, and lit the cigarette which
-I had pushed towards him.
-
-"'You must know,' said he, 'that though I am a bachelor, I have to keep
-up a considerable staff of servants at Hurlstone, for it is a rambling
-old place, and takes a good deal of looking after. I preserve, too, and
-in the pheasant months I usually have a house-party, so that it would
-not do to be short-handed. Altogether there are eight maids, the cook,
-the butler, two footmen, and a boy. The garden and the stables of course
-have a separate staff.
-
-"'Of these servants the one who had been longest in our service was
-Brunton the butler. He was a young school-master out of place when he
-was first taken up by my father, but he was a man of great energy and
-character, and he soon became quite invaluable in the household. He was
-a well-grown, handsome man, with a splendid forehead, and though he has
-been with us for twenty years he cannot be more than forty now. With
-his personal advantages and his extraordinary gifts--for he can speak
-several languages and play nearly every musical instrument--it is
-wonderful that he should have been satisfied so long in such a position,
-but I suppose that he was comfortable, and lacked energy to make any
-change. The butler of Hurlstone is always a thing that is remembered by
-all who visit us.
-
-"'But this paragon has one fault. He is a bit of a Don Juan, and you can
-imagine that for a man like him it is not a very difficult part to play
-in a quiet country district. When he was married it was all right, but
-since he has been a widower we have had no end of trouble with him. A
-few months ago we were in hopes that he was about to settle down again
-for he became engaged to Rachel Howells, our second house-maid; but he
-has thrown her over since then and taken up with Janet Tregellis, the
-daughter of the head game-keeper. Rachel--who is a very good girl, but
-of an excitable Welsh temperament--had a sharp touch of brain-fever,
-and goes about the house now--or did until yesterday--like a black-eyed
-shadow of her former self. That was our first drama at Hurlstone; but a
-second one came to drive it from our minds, and it was prefaced by the
-disgrace and dismissal of butler Brunton.
-
-"'This was how it came about. I have said that the man was intelligent,
-and this very intelligence has caused his ruin, for it seems to have
-led to an insatiable curiosity about things which did not in the least
-concern him. I had no idea of the lengths to which this would carry him,
-until the merest accident opened my eyes to it.
-
-"'I have said that the house is a rambling one. One day last week--on
-Thursday night, to be more exact--I found that I could not sleep,
-having foolishly taken a cup of strong café noir after my dinner. After
-struggling against it until two in the morning, I felt that it was quite
-hopeless, so I rose and lit the candle with the intention of continuing
-a novel which I was reading. The book, however, had been left in the
-billiard-room, so I pulled on my dressing-gown and started off to get
-it.
-
-"'In order to reach the billiard-room I had to descend a flight of
-stairs and then to cross the head of a passage which led to the library
-and the gun-room. You can imagine my surprise when, as I looked down
-this corridor, I saw a glimmer of light coming from the open door of the
-library. I had myself extinguished the lamp and closed the door before
-coming to bed. Naturally my first thought was of burglars. The corridors
-at Hurlstone have their walls largely decorated with trophies of old
-weapons. From one of these I picked a battle-axe, and then, leaving my
-candle behind me, I crept on tiptoe down the passage and peeped in at
-the open door.
-
-"'Brunton, the butler, was in the library. He was sitting, fully
-dressed, in an easy-chair, with a slip of paper which looked like a
-map upon his knee, and his forehead sunk forward upon his hand in deep
-thought. I stood dumb with astonishment, watching him from the darkness.
-A small taper on the edge of the table shed a feeble light which
-sufficed to show me that he was fully dressed. Suddenly, as I looked,
-he rose from his chair, and walking over to a bureau at the side, he
-unlocked it and drew out one of the drawers. From this he took a paper,
-and returning to his seat he flattened it out beside the taper on the
-edge of the table, and began to study it with minute attention. My
-indignation at this calm examination of our family documents overcame
-me so far that I took a step forward, and Brunton, looking up, saw me
-standing in the doorway. He sprang to his feet, his face turned livid
-with fear, and he thrust into his breast the chart-like paper which he
-had been originally studying.
-
-"'"So!" said I. "This is how you repay the trust which we have reposed
-in you. You will leave my service to-morrow."
-
-"'He bowed with the look of a man who is utterly crushed, and slunk past
-me without a word. The taper was still on the table, and by its light
-I glanced to see what the paper was which Brunton had taken from the
-bureau. To my surprise it was nothing of any importance at all,
-but simply a copy of the questions and answers in the singular old
-observance called the Musgrave Ritual. It is a sort of ceremony peculiar
-to our family, which each Musgrave for centuries past has gone through
-on his coming of age--a thing of private interest, and perhaps of some
-little importance to the archaeologist, like our own blazonings and
-charges, but of no practical use whatever.'
-
-"'We had better come back to the paper afterwards,' said I.
-
-"'If you think it really necessary,' he answered, with some hesitation.
-'To continue my statement, however: I relocked the bureau, using the key
-which Brunton had left, and I had turned to go when I was surprised to
-find that the butler had returned, and was standing before me.
-
-"'"Mr. Musgrave, sir," he cried, in a voice which was hoarse with
-emotion, "I can't bear disgrace, sir. I've always been proud above my
-station in life, and disgrace would kill me. My blood will be on your
-head, sir--it will, indeed--if you drive me to despair. If you cannot
-keep me after what has passed, then for God's sake let me give you
-notice and leave in a month, as if of my own free will. I could stand
-that, Mr. Musgrave, but not to be cast out before all the folk that I
-know so well."
-
-"'"You don't deserve much consideration, Brunton," I answered. "Your
-conduct has been most infamous. However, as you have been a long time in
-the family, I have no wish to bring public disgrace upon you. A month,
-however is too long. Take yourself away in a week, and give what reason
-you like for going."
-
-"'"Only a week, sir?" he cried, in a despairing voice. "A fortnight--say
-at least a fortnight!"
-
-"'"A week," I repeated, "and you may consider yourself to have been very
-leniently dealt with."
-
-"'He crept away, his face sunk upon his breast, like a broken man, while
-I put out the light and returned to my room.
-
-
-"'"For two days after this Brunton was most assiduous in his attention
-to his duties. I made no allusion to what had passed, and waited with
-some curiosity to see how he would cover his disgrace. On the third
-morning, however he did not appear, as was his custom, after breakfast
-to receive my instructions for the day. As I left the dining-room I
-happened to meet Rachel Howells, the maid. I have told you that she had
-only recently recovered from an illness, and was looking so wretchedly
-pale and wan that I remonstrated with her for being at work.
-
-"'"You should be in bed," I said. "Come back to your duties when you are
-stronger."
-
-"'She looked at me with so strange an expression that I began to suspect
-that her brain was affected.
-
-"'"I am strong enough, Mr. Musgrave," said she.
-
-"'"We will see what the doctor says," I answered. "You must stop work
-now, and when you go downstairs just say that I wish to see Brunton."
-
-"'"The butler is gone," said she.
-
-"'"Gone! Gone where?"
-
-"'"He is gone. No one has seen him. He is not in his room. Oh, yes, he
-is gone, he is gone!" She fell back against the wall with shriek after
-shriek of laughter, while I, horrified at this sudden hysterical attack,
-rushed to the bell to summon help. The girl was taken to her room, still
-screaming and sobbing, while I made inquiries about Brunton. There was
-no doubt about it that he had disappeared. His bed had not been slept
-in, he had been seen by no one since he had retired to his room the
-night before, and yet it was difficult to see how he could have left
-the house, as both windows and doors were found to be fastened in the
-morning. His clothes, his watch, and even his money were in his room,
-but the black suit which he usually wore was missing. His slippers,
-too, were gone, but his boots were left behind. Where then could butler
-Brunton have gone in the night, and what could have become of him now?
-
-"'Of course we searched the house from cellar to garret, but there was
-no trace of him. It is, as I have said, a labyrinth of an old house,
-especially the original wing, which is now practically uninhabited; but
-we ransacked every room and cellar without discovering the least sign
-of the missing man. It was incredible to me that he could have gone away
-leaving all his property behind him, and yet where could he be? I called
-in the local police, but without success. Rain had fallen on the night
-before and we examined the lawn and the paths all round the house, but
-in vain. Matters were in this state, when a new development quite drew
-our attention away from the original mystery.
-
-"'For two days Rachel Howells had been so ill, sometimes delirious,
-sometimes hysterical, that a nurse had been employed to sit up with her
-at night. On the third night after Brunton's disappearance, the nurse,
-finding her patient sleeping nicely, had dropped into a nap in the
-arm-chair, when she woke in the early morning to find the bed empty, the
-window open, and no signs of the invalid. I was instantly aroused, and,
-with the two footmen, started off at once in search of the missing girl.
-It was not difficult to tell the direction which she had taken, for,
-starting from under her window, we could follow her footmarks easily
-across the lawn to the edge of the mere, where they vanished close to
-the gravel path which leads out of the grounds. The lake there is eight
-feet deep, and you can imagine our feelings when we saw that the trail
-of the poor demented girl came to an end at the edge of it.
-
-"'Of course, we had the drags at once, and set to work to recover the
-remains, but no trace of the body could we find. On the other hand, we
-brought to the surface an object of a most unexpected kind. It was a
-linen bag which contained within it a mass of old rusted and discolored
-metal and several dull-colored pieces of pebble or glass. This strange
-find was all that we could get from the mere, and, although we made
-every possible search and inquiry yesterday, we know nothing of the fate
-either of Rachel Howells or of Richard Brunton. The county police are at
-their wits' end, and I have come up to you as a last resource.'
-
-"You can imagine, Watson, with what eagerness I listened to this
-extraordinary sequence of events, and endeavored to piece them together,
-and to devise some common thread upon which they might all hang. The
-butler was gone. The maid was gone. The maid had loved the butler, but
-had afterwards had cause to hate him. She was of Welsh blood, fiery
-and passionate. She had been terribly excited immediately after his
-disappearance. She had flung into the lake a bag containing some
-curious contents. These were all factors which had to be taken into
-consideration, and yet none of them got quite to the heart of the
-matter. What was the starting-point of this chain of events? There lay
-the end of this tangled line.
-
-"'I must see that paper, Musgrave,' said I, 'which this butler of your
-thought it worth his while to consult, even at the risk of the loss of
-his place.'
-
-"'It is rather an absurd business, this ritual of ours,' he answered.
-'But it has at least the saving grace of antiquity to excuse it. I have
-a copy of the questions and answers here if you care to run your eye
-over them.'
-
-"He handed me the very paper which I have here, Watson, and this is the
-strange catechism to which each Musgrave had to submit when he came to
-man's estate. I will read you the questions and answers as they stand.
-
-"'Whose was it?'
-
-"'His who is gone.'
-
-"'Who shall have it?'
-
-"'He who will come.'
-
-"'Where was the sun?'
-
-"'Over the oak.'
-
-"'Where was the shadow?'
-
-"'Under the elm.'
-
-"How was it stepped?'
-
-"'North by ten and by ten, east by five and by five, south by two and by
-two, west by one and by one, and so under.'
-
-"'What shall we give for it?'
-
-"'All that is ours.'
-
-"'Why should we give it?'
-
-"'For the sake of the trust.'
-
-"'The original has no date, but is in the spelling of the middle of the
-seventeenth century,' remarked Musgrave. 'I am afraid, however, that it
-can be of little help to you in solving this mystery.'
-
-"'At least,' said I, 'it gives us another mystery, and one which is even
-more interesting than the first. It may be that the solution of the one
-may prove to be the solution of the other. You will excuse me, Musgrave,
-if I say that your butler appears to me to have been a very clever man,
-and to have had a clearer insight than ten generations of his masters.'
-
-"'I hardly follow you,' said Musgrave. 'The paper seems to me to be of
-no practical importance.'
-
-"'But to me it seems immensely practical, and I fancy that Brunton took
-the same view. He had probably seen it before that night on which you
-caught him.'
-
-"'It is very possible. We took no pains to hide it.'
-
-"'He simply wished, I should imagine, to refresh his memory upon that
-last occasion. He had, as I understand, some sort of map or chart which
-he was comparing with the manuscript, and which he thrust into his
-pocket when you appeared.'
-
-"'That is true. But what could he have to do with this old family custom
-of ours, and what does this rigmarole mean?'
-
-"'I don't think that we should have much difficulty in determining
-that,' said I; 'with your permission we will take the first train down
-to Sussex, and go a little more deeply into the matter upon the spot.'
-
-
-"The same afternoon saw us both at Hurlstone. Possibly you have seen
-pictures and read descriptions of the famous old building, so I will
-confine my account of it to saying that it is built in the shape of
-an L, the long arm being the more modern portion, and the shorter the
-ancient nucleus, from which the other had developed. Over the low,
-heavily-lintelled door, in the centre of this old part, is chiseled the
-date, 1607, but experts are agreed that the beams and stone-work are
-really much older than this. The enormously thick walls and tiny windows
-of this part had in the last century driven the family into building the
-new wing, and the old one was used now as a store-house and a cellar,
-when it was used at all. A splendid park with fine old timber surrounds
-the house, and the lake, to which my client had referred, lay close to
-the avenue, about two hundred yards from the building.
-
-"I was already firmly convinced, Watson, that there were not three
-separate mysteries here, but one only, and that if I could read the
-Musgrave Ritual aright I should hold in my hand the clue which would
-lead me to the truth concerning both the butler Brunton and the maid
-Howells. To that then I turned all my energies. Why should this servant
-be so anxious to master this old formula? Evidently because he saw
-something in it which had escaped all those generations of country
-squires, and from which he expected some personal advantage. What was it
-then, and how had it affected his fate?
-
-"It was perfectly obvious to me, on reading the ritual, that the
-measurements must refer to some spot to which the rest of the document
-alluded, and that if we could find that spot, we should be in a fair way
-towards finding what the secret was which the old Musgraves had thought
-it necessary to embalm in so curious a fashion. There were two guides
-given us to start with, an oak and an elm. As to the oak there could be
-no question at all. Right in front of the house, upon the left-hand
-side of the drive, there stood a patriarch among oaks, one of the most
-magnificent trees that I have ever seen.
-
-"'That was there when your ritual was drawn up,' said I, as we drove
-past it.
-
-"'It was there at the Norman Conquest in all probability,' he answered.
-'It has a girth of twenty-three feet.'
-
-"'Have you any old elms?' I asked.
-
-"'There used to be a very old one over yonder but it was struck by
-lightning ten years ago, and we cut down the stump.'
-
-"'You can see where it used to be?'
-
-"'Oh, yes.'
-
-"'There are no other elms?'
-
-"'No old ones, but plenty of beeches.'
-
-"'I should like to see where it grew.'
-
-"We had driven up in a dog-cart, and my client led me away at once,
-without our entering the house, to the scar on the lawn where the
-elm had stood. It was nearly midway between the oak and the house. My
-investigation seemed to be progressing.
-
-"'I suppose it is impossible to find out how high the elm was?' I asked.
-
-"'I can give you it at once. It was sixty-four feet.'
-
-"'How do you come to know it?' I asked, in surprise.
-
-"'When my old tutor used to give me an exercise in trigonometry, it
-always took the shape of measuring heights. When I was a lad I worked
-out every tree and building in the estate.'
-
-"This was an unexpected piece of luck. My data were coming more quickly
-than I could have reasonably hoped.
-
-"'Tell me,' I asked, 'did your butler ever ask you such a question?'
-
-"Reginald Musgrave looked at me in astonishment. 'Now that you call it
-to my mind,' he answered, 'Brunton did ask me about the height of the
-tree some months ago, in connection with some little argument with the
-groom.'
-
-"This was excellent news, Watson, for it showed me that I was on the
-right road. I looked up at the sun. It was low in the heavens, and I
-calculated that in less than an hour it would lie just above the topmost
-branches of the old oak. One condition mentioned in the Ritual would
-then be fulfilled. And the shadow of the elm must mean the farther end
-of the shadow, otherwise the trunk would have been chosen as the guide.
-I had, then, to find where the far end of the shadow would fall when the
-sun was just clear of the oak."
-
-"That must have been difficult, Holmes, when the elm was no longer
-there."
-
-"Well, at least I knew that if Brunton could do it, I could also.
-Besides, there was no real difficulty. I went with Musgrave to his study
-and whittled myself this peg, to which I tied this long string with a
-knot at each yard. Then I took two lengths of a fishing-rod, which came
-to just six feet, and I went back with my client to where the elm had
-been. The sun was just grazing the top of the oak. I fastened the rod
-on end, marked out the direction of the shadow, and measured it. It was
-nine feet in length.
-
-"Of course the calculation now was a simple one. If a rod of six feet
-threw a shadow of nine, a tree of sixty-four feet would throw one of
-ninety-six, and the line of the one would of course be the line of the
-other. I measured out the distance, which brought me almost to the
-wall of the house, and I thrust a peg into the spot. You can imagine
-my exultation, Watson, when within two inches of my peg I saw a conical
-depression in the ground. I knew that it was the mark made by Brunton in
-his measurements, and that I was still upon his trail.
-
-"From this starting-point I proceeded to step, having first taken the
-cardinal points by my pocket-compass. Ten steps with each foot took me
-along parallel with the wall of the house, and again I marked my spot
-with a peg. Then I carefully paced off five to the east and two to the
-south. It brought me to the very threshold of the old door. Two steps
-to the west meant now that I was to go two paces down the stone-flagged
-passage, and this was the place indicated by the Ritual.
-
-"Never have I felt such a cold chill of disappointment, Watson. For a
-moment is seemed to me that there must be some radical mistake in my
-calculations. The setting sun shone full upon the passage floor, and I
-could see that the old, foot-worn gray stones with which it was paved
-were firmly cemented together, and had certainly not been moved for many
-a long year. Brunton had not been at work here. I tapped upon the floor,
-but it sounded the same all over, and there was no sign of any crack
-or crevice. But, fortunately, Musgrave, who had begun to appreciate the
-meaning of my proceedings, and who was now as excited as myself, took
-out his manuscript to check my calculation.
-
-"'And under,' he cried. 'You have omitted the "and under."'
-
-"I had thought that it meant that we were to dig, but now, of course,
-I saw at once that I was wrong. 'There is a cellar under this then?' I
-cried.
-
-"'Yes, and as old as the house. Down here, through this door.'
-
-"We went down a winding stone stair, and my companion, striking a match,
-lit a large lantern which stood on a barrel in the corner. In an instant
-it was obvious that we had at last come upon the true place, and that we
-had not been the only people to visit the spot recently.
-
-"It had been used for the storage of wood, but the billets, which had
-evidently been littered over the floor, were now piled at the sides, so
-as to leave a clear space in the middle. In this space lay a large and
-heavy flagstone with a rusted iron ring in the centre to which a thick
-shepherd's-check muffler was attached.
-
-"'By Jove!' cried my client. 'That's Brunton's muffler. I have seen it
-on him, and could swear to it. What has the villain been doing here?'
-
-"At my suggestion a couple of the county police were summoned to be
-present, and I then endeavored to raise the stone by pulling on the
-cravat. I could only move it slightly, and it was with the aid of one
-of the constables that I succeeded at last in carrying it to one side.
-A black hole yawned beneath into which we all peered, while Musgrave,
-kneeling at the side, pushed down the lantern.
-
-"A small chamber about seven feet deep and four feet square lay open to
-us. At one side of this was a squat, brass-bound wooden box, the lid of
-which was hinged upwards, with this curious old-fashioned key projecting
-from the lock. It was furred outside by a thick layer of dust, and damp
-and worms had eaten through the wood, so that a crop of livid fungi
-was growing on the inside of it. Several discs of metal, old coins
-apparently, such as I hold here, were scattered over the bottom of the
-box, but it contained nothing else.
-
-"At the moment, however, we had no thought for the old chest, for our
-eyes were riveted upon that which crouched beside it. It was the figure
-of a man, clad in a suit of black, who squatted down upon his hams with
-his forehead sunk upon the edge of the box and his two arms thrown out
-on each side of it. The attitude had drawn all the stagnant blood to
-the face, and no man could have recognized that distorted liver-colored
-countenance; but his height, his dress, and his hair were all sufficient
-to show my client, when we had drawn the body up, that it was indeed his
-missing butler. He had been dead some days, but there was no wound or
-bruise upon his person to show how he had met his dreadful end. When
-his body had been carried from the cellar we found ourselves still
-confronted with a problem which was almost as formidable as that with
-which we had started.
-
-"I confess that so far, Watson, I had been disappointed in my
-investigation. I had reckoned upon solving the matter when once I had
-found the place referred to in the Ritual; but now I was there, and was
-apparently as far as ever from knowing what it was which the family had
-concealed with such elaborate precautions. It is true that I had thrown
-a light upon the fate of Brunton, but now I had to ascertain how that
-fate had come upon him, and what part had been played in the matter by
-the woman who had disappeared. I sat down upon a keg in the corner and
-thought the whole matter carefully over.
-
-"You know my methods in such cases, Watson. I put myself in the man's
-place and, having first gauged his intelligence, I try to imagine how I
-should myself have proceeded under the same circumstances. In this
-case the matter was simplified by Brunton's intelligence being quite
-first-rate, so that it was unnecessary to make any allowance for the
-personal equation, as the astronomers have dubbed it. He knew that
-something valuable was concealed. He had spotted the place. He found
-that the stone which covered it was just too heavy for a man to move
-unaided. What would he do next? He could not get help from outside, even
-if he had some one whom he could trust, without the unbarring of doors
-and considerable risk of detection. It was better, if he could, to have
-his helpmate inside the house. But whom could he ask? This girl had been
-devoted to him. A man always finds it hard to realize that he may have
-finally lost a woman's love, however badly he may have treated her. He
-would try by a few attentions to make his peace with the girl Howells,
-and then would engage her as his accomplice. Together they would come at
-night to the cellar, and their united force would suffice to raise the
-stone. So far I could follow their actions as if I had actually seen
-them.
-
-"But for two of them, and one a woman, it must have been heavy work the
-raising of that stone. A burly Sussex policeman and I had found it no
-light job. What would they do to assist them? Probably what I should
-have done myself. I rose and examined carefully the different billets
-of wood which were scattered round the floor. Almost at once I came
-upon what I expected. One piece, about three feet in length, had a very
-marked indentation at one end, while several were flattened at the sides
-as if they had been compressed by some considerable weight. Evidently,
-as they had dragged the stone up they had thrust the chunks of wood into
-the chink, until at last, when the opening was large enough to crawl
-through, they would hold it open by a billet placed lengthwise, which
-might very well become indented at the lower end, since the whole weight
-of the stone would press it down on to the edge of this other slab. So
-far I was still on safe ground.
-
-"And now how was I to proceed to reconstruct this midnight drama?
-Clearly, only one could fit into the hole, and that one was Brunton. The
-girl must have waited above. Brunton then unlocked the box, handed up
-the contents presumably--since they were not to be found--and then--and
-then what happened?
-
-"What smouldering fire of vengeance had suddenly sprung into flame in
-this passionate Celtic woman's soul when she saw the man who had wronged
-her--wronged her, perhaps, far more than we suspected--in her power?
-Was it a chance that the wood had slipped, and that the stone had shut
-Brunton into what had become his sepulchre? Had she only been guilty of
-silence as to his fate? Or had some sudden blow from her hand dashed the
-support away and sent the slab crashing down into its place? Be that
-as it might, I seemed to see that woman's figure still clutching at her
-treasure trove and flying wildly up the winding stair, with her ears
-ringing perhaps with the muffled screams from behind her and with the
-drumming of frenzied hands against the slab of stone which was choking
-her faithless lover's life out.
-
-"Here was the secret of her blanched face, her shaken nerves, her peals
-of hysterical laughter on the next morning. But what had been in the
-box? What had she done with that? Of course, it must have been the old
-metal and pebbles which my client had dragged from the mere. She had
-thrown them in there at the first opportunity to remove the last trace
-of her crime.
-
-"For twenty minutes I had sat motionless, thinking the matter out.
-Musgrave still stood with a very pale face, swinging his lantern and
-peering down into the hole.
-
-"'These are coins of Charles the First,' said he, holding out the few
-which had been in the box; 'you see we were right in fixing our date for
-the Ritual.'
-
-"'We may find something else of Charles the First,' I cried, as the
-probable meaning of the first two questions of the Ritual broke suddenly
-upon me. 'Let me see the contents of the bag which you fished from the
-mere.'
-
-
-"We ascended to his study, and he laid the debris before me. I could
-understand his regarding it as of small importance when I looked at it,
-for the metal was almost black and the stones lustreless and dull. I
-rubbed one of them on my sleeve, however, and it glowed afterwards like
-a spark in the dark hollow of my hand. The metal work was in the form
-of a double ring, but it had been bent and twisted out of its original
-shape.
-
-"'You must bear in mind,' said I, 'that the royal party made head in
-England even after the death of the king, and that when they at last
-fled they probably left many of their most precious possessions buried
-behind them, with the intention of returning for them in more peaceful
-times.'
-
-"'My ancestor, Sir Ralph Musgrave, was a prominent Cavalier and the
-right-hand man of Charles the Second in his wanderings,' said my friend.
-
-"'Ah, indeed!' I answered. 'Well now, I think that really should give us
-the last link that we wanted. I must congratulate you on coming into
-the possession, though in rather a tragic manner of a relic which is of
-great intrinsic value, but of even greater importance as an historical
-curiosity.'
-
-"'What is it, then?' he gasped in astonishment.
-
-"'It is nothing less than the ancient crown of the kings of England.'
-
-"'The crown!'
-
-"'Precisely. Consider what the Ritual says: How does it run? "Whose was
-it?" "His who is gone." That was after the execution of Charles. Then,
-"Who shall have it?" "He who will come." That was Charles the Second,
-whose advent was already foreseen. There can, I think, be no doubt that
-this battered and shapeless diadem once encircled the brows of the royal
-Stuarts.'
-
-"'And how came it in the pond?'
-
-"'Ah, that is a question that will take some time to answer.' And with
-that I sketched out to him the whole long chain of surmise and of proof
-which I had constructed. The twilight had closed in and the moon was
-shining brightly in the sky before my narrative was finished.
-
-"'And how was it then that Charles did not get his crown when he
-returned?' asked Musgrave, pushing back the relic into its linen bag.
-
-"'Ah, there you lay your finger upon the one point which we shall
-probably never be able to clear up. It is likely that the Musgrave who
-held the secret died in the interval, and by some oversight left this
-guide to his descendant without explaining the meaning of it. From that
-day to this it has been handed down from father to son, until at last
-it came within reach of a man who tore its secret out of it and lost his
-life in the venture.'
-
-
-"And that's the story of the Musgrave Ritual, Watson. They have the
-crown down at Hurlstone--though they had some legal bother and a
-considerable sum to pay before they were allowed to retain it. I am sure
-that if you mentioned my name they would be happy to show it to you. Of
-the woman nothing was ever heard, and the probability is that she got
-away out of England and carried herself and the memory of her crime to
-some land beyond the seas."
-
-
-
-
-Adventure VI. The Reigate Puzzle
-
-
-It was some time before the health of my friend Mr. Sherlock Holmes
-recovered from the strain caused by his immense exertions in the spring
-of '87. The whole question of the Netherland-Sumatra Company and of the
-colossal schemes of Baron Maupertuis are too recent in the minds of the
-public, and are too intimately concerned with politics and finance to be
-fitting subjects for this series of sketches. They led, however, in an
-indirect fashion to a singular and complex problem which gave my friend
-an opportunity of demonstrating the value of a fresh weapon among the
-many with which he waged his life-long battle against crime.
-
-On referring to my notes I see that it was upon the 14th of April that
-I received a telegram from Lyons which informed me that Holmes was
-lying ill in the Hotel Dulong. Within twenty-four hours I was in his
-sick-room, and was relieved to find that there was nothing formidable in
-his symptoms. Even his iron constitution, however, had broken down
-under the strain of an investigation which had extended over two months,
-during which period he had never worked less than fifteen hours a day,
-and had more than once, as he assured me, kept to his task for five days
-at a stretch. Even the triumphant issue of his labors could not save him
-from reaction after so terrible an exertion, and at a time when Europe
-was ringing with his name and when his room was literally ankle-deep
-with congratulatory telegrams I found him a prey to the blackest
-depression. Even the knowledge that he had succeeded where the police of
-three countries had failed, and that he had outmanoeuvred at every point
-the most accomplished swindler in Europe, was insufficient to rouse him
-from his nervous prostration.
-
-Three days later we were back in Baker Street together; but it was
-evident that my friend would be much the better for a change, and the
-thought of a week of spring time in the country was full of attractions
-to me also. My old friend, Colonel Hayter, who had come under my
-professional care in Afghanistan, had now taken a house near Reigate in
-Surrey, and had frequently asked me to come down to him upon a visit. On
-the last occasion he had remarked that if my friend would only come
-with me he would be glad to extend his hospitality to him also. A little
-diplomacy was needed, but when Holmes understood that the establishment
-was a bachelor one, and that he would be allowed the fullest freedom,
-he fell in with my plans and a week after our return from Lyons we were
-under the Colonel's roof. Hayter was a fine old soldier who had seen
-much of the world, and he soon found, as I had expected, that Holmes and
-he had much in common.
-
-On the evening of our arrival we were sitting in the Colonel's gun-room
-after dinner, Holmes stretched upon the sofa, while Hayter and I looked
-over his little armory of Eastern weapons.
-
-"By the way," said he suddenly, "I think I'll take one of these pistols
-upstairs with me in case we have an alarm."
-
-"An alarm!" said I.
-
-"Yes, we've had a scare in this part lately. Old Acton, who is one of
-our county magnates, had his house broken into last Monday. No great
-damage done, but the fellows are still at large."
-
-"No clue?" asked Holmes, cocking his eye at the Colonel.
-
-"None as yet. But the affair is a petty one, one of our little country
-crimes, which must seem too small for your attention, Mr. Holmes, after
-this great international affair."
-
-Holmes waved away the compliment, though his smile showed that it had
-pleased him.
-
-"Was there any feature of interest?"
-
-"I fancy not. The thieves ransacked the library and got very little for
-their pains. The whole place was turned upside down, drawers burst open,
-and presses ransacked, with the result that an odd volume of Pope's
-'Homer,' two plated candlesticks, an ivory letter-weight, a small oak
-barometer, and a ball of twine are all that have vanished."
-
-"What an extraordinary assortment!" I exclaimed.
-
-"Oh, the fellows evidently grabbed hold of everything they could get."
-
-Holmes grunted from the sofa.
-
-"The county police ought to make something of that," said he; "why, it
-is surely obvious that--"
-
-But I held up a warning finger.
-
-"You are here for a rest, my dear fellow. For Heaven's sake don't get
-started on a new problem when your nerves are all in shreds."
-
-Holmes shrugged his shoulders with a glance of comic resignation towards
-the Colonel, and the talk drifted away into less dangerous channels.
-
-It was destined, however, that all my professional caution should be
-wasted, for next morning the problem obtruded itself upon us in such a
-way that it was impossible to ignore it, and our country visit took a
-turn which neither of us could have anticipated. We were at breakfast
-when the Colonel's butler rushed in with all his propriety shaken out of
-him.
-
-"Have you heard the news, sir?" he gasped. "At the Cunningham's sir!"
-
-"Burglary!" cried the Colonel, with his coffee-cup in mid-air.
-
-"Murder!"
-
-The Colonel whistled. "By Jove!" said he. "Who's killed, then? The J.P.
-or his son?"
-
-"Neither, sir. It was William the coachman. Shot through the heart, sir,
-and never spoke again."
-
-"Who shot him, then?"
-
-"The burglar, sir. He was off like a shot and got clean away. He'd just
-broke in at the pantry window when William came on him and met his end
-in saving his master's property."
-
-"What time?"
-
-"It was last night, sir, somewhere about twelve."
-
-"Ah, then, we'll step over afterwards," said the Colonel, coolly
-settling down to his breakfast again. "It's a baddish business," he
-added when the butler had gone; "he's our leading man about here, is old
-Cunningham, and a very decent fellow too. He'll be cut up over this, for
-the man has been in his service for years and was a good servant. It's
-evidently the same villains who broke into Acton's."
-
-"And stole that very singular collection," said Holmes, thoughtfully.
-
-"Precisely."
-
-"Hum! It may prove the simplest matter in the world, but all the same
-at first glance this is just a little curious, is it not? A gang of
-burglars acting in the country might be expected to vary the scene of
-their operations, and not to crack two cribs in the same district within
-a few days. When you spoke last night of taking precautions I remember
-that it passed through my mind that this was probably the last parish
-in England to which the thief or thieves would be likely to turn their
-attention--which shows that I have still much to learn."
-
-"I fancy it's some local practitioner," said the Colonel. "In that case,
-of course, Acton's and Cunningham's are just the places he would go for,
-since they are far the largest about here."
-
-"And richest?"
-
-"Well, they ought to be, but they've had a lawsuit for some years which
-has sucked the blood out of both of them, I fancy. Old Acton has some
-claim on half Cunningham's estate, and the lawyers have been at it with
-both hands."
-
-"If it's a local villain there should not be much difficulty in running
-him down," said Holmes with a yawn. "All right, Watson, I don't intend
-to meddle."
-
-"Inspector Forrester, sir," said the butler, throwing open the door.
-
-The official, a smart, keen-faced young fellow, stepped into the room.
-"Good-morning, Colonel," said he; "I hope I don't intrude, but we hear
-that Mr. Holmes of Baker Street is here."
-
-The Colonel waved his hand towards my friend, and the Inspector bowed.
-
-"We thought that perhaps you would care to step across, Mr. Holmes."
-
-"The fates are against you, Watson," said he, laughing. "We were
-chatting about the matter when you came in, Inspector. Perhaps you
-can let us have a few details." As he leaned back in his chair in the
-familiar attitude I knew that the case was hopeless.
-
-"We had no clue in the Acton affair. But here we have plenty to go on,
-and there's no doubt it is the same party in each case. The man was
-seen."
-
-"Ah!"
-
-"Yes, sir. But he was off like a deer after the shot that killed poor
-William Kirwan was fired. Mr. Cunningham saw him from the bedroom
-window, and Mr. Alec Cunningham saw him from the back passage. It was
-quarter to twelve when the alarm broke out. Mr. Cunningham had just got
-into bed, and Mr. Alec was smoking a pipe in his dressing-gown. They
-both heard William the coachman calling for help, and Mr. Alec ran down
-to see what was the matter. The back door was open, and as he came to
-the foot of the stairs he saw two men wrestling together outside. One of
-them fired a shot, the other dropped, and the murderer rushed across the
-garden and over the hedge. Mr. Cunningham, looking out of his bedroom,
-saw the fellow as he gained the road, but lost sight of him at once. Mr.
-Alec stopped to see if he could help the dying man, and so the villain
-got clean away. Beyond the fact that he was a middle-sized man and
-dressed in some dark stuff, we have no personal clue; but we are making
-energetic inquiries, and if he is a stranger we shall soon find him
-out."
-
-"What was this William doing there? Did he say anything before he died?"
-
-"Not a word. He lives at the lodge with his mother, and as he was a
-very faithful fellow we imagine that he walked up to the house with
-the intention of seeing that all was right there. Of course this Acton
-business has put every one on their guard. The robber must have just
-burst open the door--the lock has been forced--when William came upon
-him."
-
-"Did William say anything to his mother before going out?"
-
-"She is very old and deaf, and we can get no information from her. The
-shock has made her half-witted, but I understand that she was never
-very bright. There is one very important circumstance, however. Look at
-this!"
-
-He took a small piece of torn paper from a note-book and spread it out
-upon his knee.
-
-"This was found between the finger and thumb of the dead man. It appears
-to be a fragment torn from a larger sheet. You will observe that the
-hour mentioned upon it is the very time at which the poor fellow met his
-fate. You see that his murderer might have torn the rest of the sheet
-from him or he might have taken this fragment from the murderer. It
-reads almost as though it were an appointment."
-
-Holmes took up the scrap of paper, a fac-simile of which is here
-reproduced.
-
-     d at quarter to twelve learn what maybe
-
-"Presuming that it is an appointment," continued the Inspector, "it is
-of course a conceivable theory that this William Kirwan--though he had
-the reputation of being an honest man, may have been in league with the
-thief. He may have met him there, may even have helped him to break in
-the door, and then they may have fallen out between themselves."
-
-"This writing is of extraordinary interest," said Holmes, who had been
-examining it with intense concentration. "These are much deeper waters
-than I had thought." He sank his head upon his hands, while the Inspector
-smiled at the effect which his case had had upon the famous London
-specialist.
-
-"Your last remark," said Holmes, presently, "as to the possibility of
-there being an understanding between the burglar and the servant, and
-this being a note of appointment from one to the other, is an ingenious
-and not entirely impossible supposition. But this writing opens up--" He
-sank his head into his hands again and remained for some minutes in the
-deepest thought. When he raised his face again, I was surprised to see
-that his cheek was tinged with color, and his eyes as bright as before
-his illness. He sprang to his feet with all his old energy.
-
-"I'll tell you what," said he, "I should like to have a quiet little
-glance into the details of this case. There is something in it which
-fascinates me extremely. If you will permit me, Colonel, I will leave my
-friend Watson and you, and I will step round with the Inspector to test
-the truth of one or two little fancies of mine. I will be with you again
-in half an hour."
-
-An hour and half had elapsed before the Inspector returned alone.
-
-"Mr. Holmes is walking up and down in the field outside," said he. "He
-wants us all four to go up to the house together."
-
-"To Mr. Cunningham's?"
-
-"Yes, sir."
-
-"What for?"
-
-The Inspector shrugged his shoulders. "I don't quite know, sir. Between
-ourselves, I think Mr. Holmes had not quite got over his illness yet.
-He's been behaving very queerly, and he is very much excited."
-
-"I don't think you need alarm yourself," said I. "I have usually found
-that there was method in his madness."
-
-"Some folks might say there was madness in his method," muttered the
-Inspector. "But he's all on fire to start, Colonel, so we had best go
-out if you are ready."
-
-We found Holmes pacing up and down in the field, his chin sunk upon his
-breast, and his hands thrust into his trousers pockets.
-
-"The matter grows in interest," said he. "Watson, your country-trip has
-been a distinct success. I have had a charming morning."
-
-"You have been up to the scene of the crime, I understand," said the
-Colonel.
-
-"Yes; the Inspector and I have made quite a little reconnaissance
-together."
-
-"Any success?"
-
-"Well, we have seen some very interesting things. I'll tell you what we
-did as we walk. First of all, we saw the body of this unfortunate man.
-He certainly died from a revolver wound as reported."
-
-"Had you doubted it, then?"
-
-"Oh, it is as well to test everything. Our inspection was not wasted. We
-then had an interview with Mr. Cunningham and his son, who were able
-to point out the exact spot where the murderer had broken through the
-garden-hedge in his flight. That was of great interest."
-
-"Naturally."
-
-"Then we had a look at this poor fellow's mother. We could get no
-information from her, however, as she is very old and feeble."
-
-"And what is the result of your investigations?"
-
-"The conviction that the crime is a very peculiar one. Perhaps our visit
-now may do something to make it less obscure. I think that we are both
-agreed, Inspector that the fragment of paper in the dead man's hand,
-bearing, as it does, the very hour of his death written upon it, is of
-extreme importance."
-
-"It should give a clue, Mr. Holmes."
-
-"It does give a clue. Whoever wrote that note was the man who brought
-William Kirwan out of his bed at that hour. But where is the rest of
-that sheet of paper?"
-
-"I examined the ground carefully in the hope of finding it," said the
-Inspector.
-
-"It was torn out of the dead man's hand. Why was some one so anxious to
-get possession of it? Because it incriminated him. And what would he do
-with it? Thrust it into his pocket, most likely, never noticing that a
-corner of it had been left in the grip of the corpse. If we could get
-the rest of that sheet it is obvious that we should have gone a long way
-towards solving the mystery."
-
-"Yes, but how can we get at the criminal's pocket before we catch the
-criminal?"
-
-"Well, well, it was worth thinking over. Then there is another obvious
-point. The note was sent to William. The man who wrote it could not have
-taken it; otherwise, of course, he might have delivered his own message
-by word of mouth. Who brought the note, then? Or did it come through the
-post?"
-
-"I have made inquiries," said the Inspector. "William received a letter
-by the afternoon post yesterday. The envelope was destroyed by him."
-
-"Excellent!" cried Holmes, clapping the Inspector on the back. "You've
-seen the postman. It is a pleasure to work with you. Well, here is the
-lodge, and if you will come up, Colonel, I will show you the scene of
-the crime."
-
-We passed the pretty cottage where the murdered man had lived, and
-walked up an oak-lined avenue to the fine old Queen Anne house, which
-bears the date of Malplaquet upon the lintel of the door. Holmes and
-the Inspector led us round it until we came to the side gate, which is
-separated by a stretch of garden from the hedge which lines the road. A
-constable was standing at the kitchen door.
-
-"Throw the door open, officer," said Holmes. "Now, it was on those
-stairs that young Mr. Cunningham stood and saw the two men struggling
-just where we are. Old Mr. Cunningham was at that window--the second on
-the left--and he saw the fellow get away just to the left of that bush.
-Then Mr. Alec ran out and knelt beside the wounded man. The ground is
-very hard, you see, and there are no marks to guide us." As he spoke two
-men came down the garden path, from round the angle of the house. The
-one was an elderly man, with a strong, deep-lined, heavy-eyed face; the
-other a dashing young fellow, whose bright, smiling expression and showy
-dress were in strange contract with the business which had brought us
-there.
-
-"Still at it, then?" said he to Holmes. "I thought you Londoners were
-never at fault. You don't seem to be so very quick, after all."
-
-"Ah, you must give us a little time," said Holmes good-humoredly.
-
-"You'll want it," said young Alec Cunningham. "Why, I don't see that we
-have any clue at all."
-
-"There's only one," answered the Inspector. "We thought that if we could
-only find--Good heavens, Mr. Holmes! What is the matter?"
-
-My poor friend's face had suddenly assumed the most dreadful expression.
-His eyes rolled upwards, his features writhed in agony, and with a
-suppressed groan he dropped on his face upon the ground. Horrified
-at the suddenness and severity of the attack, we carried him into the
-kitchen, where he lay back in a large chair, and breathed heavily for
-some minutes. Finally, with a shamefaced apology for his weakness, he
-rose once more.
-
-"Watson would tell you that I have only just recovered from a severe
-illness," he explained. "I am liable to these sudden nervous attacks."
-
-"Shall I send you home in my trap?" asked old Cunningham.
-
-"Well, since I am here, there is one point on which I should like to
-feel sure. We can very easily verify it."
-
-"What was it?"
-
-"Well, it seems to me that it is just possible that the arrival of
-this poor fellow William was not before, but after, the entrance of
-the burglary into the house. You appear to take it for granted that,
-although the door was forced, the robber never got in."
-
-"I fancy that is quite obvious," said Mr. Cunningham, gravely. "Why, my
-son Alec had not yet gone to bed, and he would certainly have heard any
-one moving about."
-
-"Where was he sitting?"
-
-"I was smoking in my dressing-room."
-
-"Which window is that?"
-
-"The last on the left next my father's."
-
-"Both of your lamps were lit, of course?"
-
-"Undoubtedly."
-
-"There are some very singular points here," said Holmes, smiling. "Is
-it not extraordinary that a burglary--and a burglar who had had some
-previous experience--should deliberately break into a house at a time
-when he could see from the lights that two of the family were still
-afoot?"
-
-"He must have been a cool hand."
-
-"Well, of course, if the case were not an odd one we should not have
-been driven to ask you for an explanation," said young Mr. Alec. "But as
-to your ideas that the man had robbed the house before William tackled
-him, I think it a most absurd notion. Wouldn't we have found the place
-disarranged, and missed the things which he had taken?"
-
-"It depends on what the things were," said Holmes. "You must remember
-that we are dealing with a burglar who is a very peculiar fellow, and
-who appears to work on lines of his own. Look, for example, at the
-queer lot of things which he took from Acton's--what was it?--a ball of
-string, a letter-weight, and I don't know what other odds and ends."
-
-"Well, we are quite in your hands, Mr. Holmes," said old Cunningham.
-"Anything which you or the Inspector may suggest will most certainly be
-done."
-
-"In the first place," said Holmes, "I should like you to offer a
-reward--coming from yourself, for the officials may take a little time
-before they would agree upon the sum, and these things cannot be done
-too promptly. I have jotted down the form here, if you would not mind
-signing it. Fifty pounds was quite enough, I thought."
-
-"I would willingly give five hundred," said the J.P., taking the slip
-of paper and the pencil which Holmes handed to him. "This is not quite
-correct, however," he added, glancing over the document.
-
-"I wrote it rather hurriedly."
-
-"You see you begin, 'Whereas, at about a quarter to one on Tuesday
-morning an attempt was made,' and so on. It was at a quarter to twelve,
-as a matter of fact."
-
-I was pained at the mistake, for I knew how keenly Holmes would feel any
-slip of the kind. It was his specialty to be accurate as to fact, but
-his recent illness had shaken him, and this one little incident was
-enough to show me that he was still far from being himself. He was
-obviously embarrassed for an instant, while the Inspector raised his
-eyebrows, and Alec Cunningham burst into a laugh. The old gentleman
-corrected the mistake, however, and handed the paper back to Holmes.
-
-"Get it printed as soon as possible," he said; "I think your idea is an
-excellent one."
-
-Holmes put the slip of paper carefully away into his pocket-book.
-
-"And now," said he, "it really would be a good thing that we should all
-go over the house together and make certain that this rather erratic
-burglar did not, after all, carry anything away with him."
-
-Before entering, Holmes made an examination of the door which had been
-forced. It was evident that a chisel or strong knife had been thrust
-in, and the lock forced back with it. We could see the marks in the wood
-where it had been pushed in.
-
-"You don't use bars, then?" he asked.
-
-"We have never found it necessary."
-
-"You don't keep a dog?"
-
-"Yes, but he is chained on the other side of the house."
-
-"When do the servants go to bed?"
-
-"About ten."
-
-"I understand that William was usually in bed also at that hour."
-
-"Yes."
-
-"It is singular that on this particular night he should have been up.
-Now, I should be very glad if you would have the kindness to show us
-over the house, Mr. Cunningham."
-
-A stone-flagged passage, with the kitchens branching away from it, led
-by a wooden staircase directly to the first floor of the house. It came
-out upon the landing opposite to a second more ornamental stair which
-came up from the front hall. Out of this landing opened the drawing-room
-and several bedrooms, including those of Mr. Cunningham and his son.
-Holmes walked slowly, taking keen note of the architecture of the house.
-I could tell from his expression that he was on a hot scent, and yet
-I could not in the least imagine in what direction his inferences were
-leading him.
-
-"My good sir," said Mr. Cunningham with some impatience, "this is surely
-very unnecessary. That is my room at the end of the stairs, and my
-son's is the one beyond it. I leave it to your judgment whether it was
-possible for the thief to have come up here without disturbing us."
-
-"You must try round and get on a fresh scent, I fancy," said the son
-with a rather malicious smile.
-
-"Still, I must ask you to humor me a little further. I should like, for
-example, to see how far the windows of the bedrooms command the front.
-This, I understand is your son's room"--he pushed open the door--"and
-that, I presume, is the dressing-room in which he sat smoking when the
-alarm was given. Where does the window of that look out to?" He stepped
-across the bedroom, pushed open the door, and glanced round the other
-chamber.
-
-"I hope that you are satisfied now?" said Mr. Cunningham, tartly.
-
-"Thank you, I think I have seen all that I wished."
-
-"Then if it is really necessary we can go into my room."
-
-"If it is not too much trouble."
-
-The J. P. shrugged his shoulders, and led the way into his own chamber,
-which was a plainly furnished and commonplace room. As we moved across
-it in the direction of the window, Holmes fell back until he and I were
-the last of the group. Near the foot of the bed stood a dish of oranges
-and a carafe of water. As we passed it Holmes, to my unutterable
-astonishment, leaned over in front of me and deliberately knocked the
-whole thing over. The glass smashed into a thousand pieces and the fruit
-rolled about into every corner of the room.
-
-"You've done it now, Watson," said he, coolly. "A pretty mess you've
-made of the carpet."
-
-I stooped in some confusion and began to pick up the fruit,
-understanding for some reason my companion desired me to take the blame
-upon myself. The others did the same, and set the table on its legs
-again.
-
-"Hullo!" cried the Inspector, "where's he got to?"
-
-Holmes had disappeared.
-
-"Wait here an instant," said young Alec Cunningham. "The fellow is off
-his head, in my opinion. Come with me, father, and see where he has got
-to!"
-
-They rushed out of the room, leaving the Inspector, the Colonel, and me
-staring at each other.
-
-"'Pon my word, I am inclined to agree with Master Alec," said the
-official. "It may be the effect of this illness, but it seems to me
-that--"
-
-His words were cut short by a sudden scream of "Help! Help! Murder!"
-With a thrill I recognized the voice of that of my friend. I rushed
-madly from the room on to the landing. The cries, which had sunk down
-into a hoarse, inarticulate shouting, came from the room which we had
-first visited. I dashed in, and on into the dressing-room beyond. The
-two Cunninghams were bending over the prostrate figure of Sherlock
-Holmes, the younger clutching his throat with both hands, while the
-elder seemed to be twisting one of his wrists. In an instant the three
-of us had torn them away from him, and Holmes staggered to his feet,
-very pale and evidently greatly exhausted.
-
-"Arrest these men, Inspector," he gasped.
-
-"On what charge?"
-
-"That of murdering their coachman, William Kirwan."
-
-The Inspector stared about him in bewilderment. "Oh, come now, Mr.
-Holmes," said he at last, "I'm sure you don't really mean to--"
-
-"Tut, man, look at their faces!" cried Holmes, curtly.
-
-Never certainly have I seen a plainer confession of guilt upon human
-countenances. The older man seemed numbed and dazed with a heavy, sullen
-expression upon his strongly-marked face. The son, on the other hand,
-had dropped all that jaunty, dashing style which had characterized him,
-and the ferocity of a dangerous wild beast gleamed in his dark eyes
-and distorted his handsome features. The Inspector said nothing, but,
-stepping to the door, he blew his whistle. Two of his constables came at
-the call.
-
-"I have no alternative, Mr. Cunningham," said he. "I trust that this may
-all prove to be an absurd mistake, but you can see that--Ah, would you?
-Drop it!" He struck out with his hand, and a revolver which the younger
-man was in the act of cocking clattered down upon the floor.
-
-"Keep that," said Holmes, quietly putting his foot upon it; "you will
-find it useful at the trial. But this is what we really wanted." He held
-up a little crumpled piece of paper.
-
-"The remainder of the sheet!" cried the Inspector.
-
-"Precisely."
-
-"And where was it?"
-
-"Where I was sure it must be. I'll make the whole matter clear to you
-presently. I think, Colonel, that you and Watson might return now, and
-I will be with you again in an hour at the furthest. The Inspector and I
-must have a word with the prisoners, but you will certainly see me back
-at luncheon time."
-
-
-Sherlock Holmes was as good as his word, for about one o'clock he
-rejoined us in the Colonel's smoking-room. He was accompanied by a
-little elderly gentleman, who was introduced to me as the Mr. Acton
-whose house had been the scene of the original burglary.
-
-"I wished Mr. Acton to be present while I demonstrated this small matter
-to you," said Holmes, "for it is natural that he should take a keen
-interest in the details. I am afraid, my dear Colonel, that you must
-regret the hour that you took in such a stormy petrel as I am."
-
-"On the contrary," answered the Colonel, warmly, "I consider it the
-greatest privilege to have been permitted to study your methods of
-working. I confess that they quite surpass my expectations, and that I
-am utterly unable to account for your result. I have not yet seen the
-vestige of a clue."
-
-"I am afraid that my explanation may disillusion you but it has always
-been my habit to hide none of my methods, either from my friend Watson
-or from any one who might take an intelligent interest in them. But,
-first, as I am rather shaken by the knocking about which I had in
-the dressing-room, I think that I shall help myself to a dash of your
-brandy, Colonel. My strength had been rather tried of late."
-
-"I trust that you had no more of those nervous attacks."
-
-Sherlock Holmes laughed heartily. "We will come to that in its turn,"
-said he. "I will lay an account of the case before you in its due order,
-showing you the various points which guided me in my decision. Pray
-interrupt me if there is any inference which is not perfectly clear to
-you.
-
-"It is of the highest importance in the art of detection to be able
-to recognize, out of a number of facts, which are incidental and which
-vital. Otherwise your energy and attention must be dissipated instead of
-being concentrated. Now, in this case there was not the slightest doubt
-in my mind from the first that the key of the whole matter must be
-looked for in the scrap of paper in the dead man's hand.
-
-"Before going into this, I would draw your attention to the fact that,
-if Alec Cunningham's narrative was correct, and if the assailant, after
-shooting William Kirwan, had instantly fled, then it obviously could not
-be he who tore the paper from the dead man's hand. But if it was not he,
-it must have been Alec Cunningham himself, for by the time that the old
-man had descended several servants were upon the scene. The point is a
-simple one, but the Inspector had overlooked it because he had started
-with the supposition that these county magnates had had nothing to do
-with the matter. Now, I make a point of never having any prejudices,
-and of following docilely wherever fact may lead me, and so, in the
-very first stage of the investigation, I found myself looking a little
-askance at the part which had been played by Mr. Alec Cunningham.
-
-"And now I made a very careful examination of the corner of paper which
-the Inspector had submitted to us. It was at once clear to me that it
-formed part of a very remarkable document. Here it is. Do you not now
-observe something very suggestive about it?"
-
-"It has a very irregular look," said the Colonel.
-
-"My dear sir," cried Holmes, "there cannot be the least doubt in the
-world that it has been written by two persons doing alternate words.
-When I draw your attention to the strong t's of 'at' and 'to', and ask
-you to compare them with the weak ones of 'quarter' and 'twelve,' you
-will instantly recognize the fact. A very brief analysis of these
-four words would enable you to say with the utmost confidence that the
-'learn' and the 'maybe' are written in the stronger hand, and the 'what'
-in the weaker."
-
-"By Jove, it's as clear as day!" cried the Colonel. "Why on earth should
-two men write a letter in such a fashion?"
-
-"Obviously the business was a bad one, and one of the men who distrusted
-the other was determined that, whatever was done, each should have an
-equal hand in it. Now, of the two men, it is clear that the one who
-wrote the 'at' and 'to' was the ringleader."
-
-"How do you get at that?"
-
-"We might deduce it from the mere character of the one hand as compared
-with the other. But we have more assured reasons than that for supposing
-it. If you examine this scrap with attention you will come to the
-conclusion that the man with the stronger hand wrote all his words
-first, leaving blanks for the other to fill up. These blanks were not
-always sufficient, and you can see that the second man had a squeeze
-to fit his 'quarter' in between the 'at' and the 'to,' showing that the
-latter were already written. The man who wrote all his words first is
-undoubtedly the man who planned the affair."
-
-"Excellent!" cried Mr. Acton.
-
-"But very superficial," said Holmes. "We come now, however, to a point
-which is of importance. You may not be aware that the deduction of a
-man's age from his writing is one which has brought to considerable
-accuracy by experts. In normal cases one can place a man in his true
-decade with tolerable confidence. I say normal cases, because ill-health
-and physical weakness reproduce the signs of old age, even when the
-invalid is a youth. In this case, looking at the bold, strong hand of
-the one, and the rather broken-backed appearance of the other, which
-still retains its legibility although the t's have begun to lose their
-crossing, we can say that the one was a young man and the other was
-advanced in years without being positively decrepit."
-
-"Excellent!" cried Mr. Acton again.
-
-"There is a further point, however, which is subtler and of greater
-interest. There is something in common between these hands. They belong
-to men who are blood-relatives. It may be most obvious to you in the
-Greek e's, but to me there are many small points which indicate the same
-thing. I have no doubt at all that a family mannerism can be traced in
-these two specimens of writing. I am only, of course, giving you
-the leading results now of my examination of the paper. There were
-twenty-three other deductions which would be of more interest to experts
-than to you. They all tend to deepen the impression upon my mind that
-the Cunninghams, father and son, had written this letter.
-
-"Having got so far, my next step was, of course, to examine into the
-details of the crime, and to see how far they would help us. I went up
-to the house with the Inspector, and saw all that was to be seen. The
-wound upon the dead man was, as I was able to determine with absolute
-confidence, fired from a revolver at the distance of something over
-four yards. There was no powder-blackening on the clothes. Evidently,
-therefore, Alec Cunningham had lied when he said that the two men were
-struggling when the shot was fired. Again, both father and son agreed
-as to the place where the man escaped into the road. At that point,
-however, as it happens, there is a broadish ditch, moist at the bottom.
-As there were no indications of bootmarks about this ditch, I was
-absolutely sure not only that the Cunninghams had again lied, but that
-there had never been any unknown man upon the scene at all.
-
-"And now I have to consider the motive of this singular crime. To get
-at this, I endeavored first of all to solve the reason of the original
-burglary at Mr. Acton's. I understood, from something which the Colonel
-told us, that a lawsuit had been going on between you, Mr. Acton, and
-the Cunninghams. Of course, it instantly occurred to me that they had
-broken into your library with the intention of getting at some document
-which might be of importance in the case."
-
-"Precisely so," said Mr. Acton. "There can be no possible doubt as to
-their intentions. I have the clearest claim upon half of their present
-estate, and if they could have found a single paper--which, fortunately,
-was in the strong-box of my solicitors--they would undoubtedly have
-crippled our case."
-
-"There you are," said Holmes, smiling. "It was a dangerous, reckless
-attempt, in which I seem to trace the influence of young Alec. Having
-found nothing they tried to divert suspicion by making it appear to be
-an ordinary burglary, to which end they carried off whatever they could
-lay their hands upon. That is all clear enough, but there was much that
-was still obscure. What I wanted above all was to get the missing part
-of that note. I was certain that Alec had torn it out of the dead man's
-hand, and almost certain that he must have thrust it into the pocket of
-his dressing-gown. Where else could he have put it? The only question
-was whether it was still there. It was worth an effort to find out, and
-for that object we all went up to the house.
-
-"The Cunninghams joined us, as you doubtless remember, outside the
-kitchen door. It was, of course, of the very first importance that they
-should not be reminded of the existence of this paper, otherwise they
-would naturally destroy it without delay. The Inspector was about to
-tell them the importance which we attached to it when, by the luckiest
-chance in the world, I tumbled down in a sort of fit and so changed the
-conversation.
-
-"Good heavens!" cried the Colonel, laughing, "do you mean to say all our
-sympathy was wasted and your fit an imposture?"
-
-"Speaking professionally, it was admirably done," cried I, looking in
-amazement at this man who was forever confounding me with some new phase
-of his astuteness.
-
-"It is an art which is often useful," said he. "When I recovered I
-managed, by a device which had perhaps some little merit of ingenuity,
-to get old Cunningham to write the word 'twelve,' so that I might
-compare it with the 'twelve' upon the paper."
-
-"Oh, what an ass I have been!" I exclaimed.
-
-"I could see that you were commiserating me over my weakness," said
-Holmes, laughing. "I was sorry to cause you the sympathetic pain which
-I know that you felt. We then went upstairs together, and having entered
-the room and seen the dressing-gown hanging up behind the door, I
-contrived, by upsetting a table, to engage their attention for the
-moment, and slipped back to examine the pockets. I had hardly got the
-paper, however--which was, as I had expected, in one of them--when the
-two Cunninghams were on me, and would, I verily believe, have murdered
-me then and there but for your prompt and friendly aid. As it is, I feel
-that young man's grip on my throat now, and the father has twisted my
-wrist round in the effort to get the paper out of my hand. They saw that
-I must know all about it, you see, and the sudden change from absolute
-security to complete despair made them perfectly desperate.
-
-"I had a little talk with old Cunningham afterwards as to the motive of
-the crime. He was tractable enough, though his son was a perfect demon,
-ready to blow out his own or anybody else's brains if he could have got
-to his revolver. When Cunningham saw that the case against him was so
-strong he lost all heart and made a clean breast of everything. It seems
-that William had secretly followed his two masters on the night when
-they made their raid upon Mr. Acton's, and having thus got them into
-his power, proceeded, under threats of exposure, to levy blackmail upon
-them. Mr. Alec, however, was a dangerous man to play games of that
-sort with. It was a stroke of positive genius on his part to see in the
-burglary scare which was convulsing the country side an opportunity of
-plausibly getting rid of the man whom he feared. William was decoyed up
-and shot, and had they only got the whole of the note and paid a little
-more attention to detail in the accessories, it is very possible that
-suspicion might never have been aroused."
-
-"And the note?" I asked.
-
-Sherlock Holmes placed the subjoined paper before us.
-
-     If you will only come around to the east gate you it will
-     very much surprise you and be of the greatest service to you
-     and also to Annie Morrison. But say nothing to anyone upon
-     the matter.
-
-"It is very much the sort of thing that I expected," said he. "Of
-course, we do not yet know what the relations may have been between Alec
-Cunningham, William Kirwan, and Annie Morrison. The results shows that
-the trap was skillfully baited. I am sure that you cannot fail to be
-delighted with the traces of heredity shown in the p's and in the tails
-of the g's. The absence of the i-dots in the old man's writing is also
-most characteristic. Watson, I think our quiet rest in the country has
-been a distinct success, and I shall certainly return much invigorated
-to Baker Street to-morrow."
-
-
-
-
-Adventure VII. The Crooked Man
-
-
-One summer night, a few months after my marriage, I was seated by my own
-hearth smoking a last pipe and nodding over a novel, for my day's work
-had been an exhausting one. My wife had already gone upstairs, and the
-sound of the locking of the hall door some time before told me that the
-servants had also retired. I had risen from my seat and was knocking out
-the ashes of my pipe when I suddenly heard the clang of the bell.
-
-I looked at the clock. It was a quarter to twelve. This could not be
-a visitor at so late an hour. A patient, evidently, and possibly an
-all-night sitting. With a wry face I went out into the hall and opened
-the door. To my astonishment it was Sherlock Holmes who stood upon my
-step.
-
-"Ah, Watson," said he, "I hoped that I might not be too late to catch
-you."
-
-"My dear fellow, pray come in."
-
-"You look surprised, and no wonder! Relieved, too, I fancy! Hum! You
-still smoke the Arcadia mixture of your bachelor days then! There's no
-mistaking that fluffy ash upon your coat. It's easy to tell that you
-have been accustomed to wear a uniform, Watson. You'll never pass as
-a pure-bred civilian as long as you keep that habit of carrying your
-handkerchief in your sleeve. Could you put me up to-night?"
-
-"With pleasure."
-
-"You told me that you had bachelor quarters for one, and I see that you
-have no gentleman visitor at present. Your hat-stand proclaims as much."
-
-"I shall be delighted if you will stay."
-
-"Thank you. I'll fill the vacant peg then. Sorry to see that you've had
-the British workman in the house. He's a token of evil. Not the drains,
-I hope?"
-
-"No, the gas."
-
-"Ah! He has left two nail-marks from his boot upon your linoleum
-just where the light strikes it. No, thank you, I had some supper at
-Waterloo, but I'll smoke a pipe with you with pleasure."
-
-I handed him my pouch, and he seated himself opposite to me and smoked
-for some time in silence. I was well aware that nothing but business
-of importance would have brought him to me at such an hour, so I waited
-patiently until he should come round to it.
-
-"I see that you are professionally rather busy just now," said he,
-glancing very keenly across at me.
-
-"Yes, I've had a busy day," I answered. "It may seem very foolish in
-your eyes," I added, "but really I don't know how you deduced it."
-
-Holmes chuckled to himself.
-
-"I have the advantage of knowing your habits, my dear Watson," said he.
-"When your round is a short one you walk, and when it is a long one you
-use a hansom. As I perceive that your boots, although used, are by
-no means dirty, I cannot doubt that you are at present busy enough to
-justify the hansom."
-
-"Excellent!" I cried.
-
-"Elementary," said he. "It is one of those instances where the reasoner
-can produce an effect which seems remarkable to his neighbor, because
-the latter has missed the one little point which is the basis of the
-deduction. The same may be said, my dear fellow, for the effect of
-some of these little sketches of yours, which is entirely meretricious,
-depending as it does upon your retaining in your own hands some factors
-in the problem which are never imparted to the reader. Now, at present
-I am in the position of these same readers, for I hold in this hand
-several threads of one of the strangest cases which ever perplexed a
-man's brain, and yet I lack the one or two which are needful to complete
-my theory. But I'll have them, Watson, I'll have them!" His eyes kindled
-and a slight flush sprang into his thin cheeks. For an instant only.
-When I glanced again his face had resumed that red-Indian composure
-which had made so many regard him as a machine rather than a man.
-
-"The problem presents features of interest," said he. "I may even say
-exceptional features of interest. I have already looked into the matter,
-and have come, as I think, within sight of my solution. If you could
-accompany me in that last step you might be of considerable service to
-me."
-
-"I should be delighted."
-
-"Could you go as far as Aldershot to-morrow?"
-
-"I have no doubt Jackson would take my practice."
-
-"Very good. I want to start by the 11.10 from Waterloo."
-
-"That would give me time."
-
-"Then, if you are not too sleepy, I will give you a sketch of what has
-happened, and of what remains to be done."
-
-"I was sleepy before you came. I am quite wakeful now."
-
-"I will compress the story as far as may be done without omitting
-anything vital to the case. It is conceivable that you may even have
-read some account of the matter. It is the supposed murder of Colonel
-Barclay, of the Royal Munsters, at Aldershot, which I am investigating."
-
-"I have heard nothing of it."
-
-"It has not excited much attention yet, except locally. The facts are
-only two days old. Briefly they are these:
-
-"The Royal Munsters is, as you know, one of the most famous Irish
-regiments in the British army. It did wonders both in the Crimea and the
-Mutiny, and has since that time distinguished itself upon every possible
-occasion. It was commanded up to Monday night by James Barclay,
-a gallant veteran, who started as a full private, was raised to
-commissioned rank for his bravery at the time of the Mutiny, and so
-lived to command the regiment in which he had once carried a musket.
-
-"Colonel Barclay had married at the time when he was a sergeant, and
-his wife, whose maiden name was Miss Nancy Devoy, was the daughter of a
-former color-sergeant in the same corps. There was, therefore, as can
-be imagined, some little social friction when the young couple (for
-they were still young) found themselves in their new surroundings. They
-appear, however, to have quickly adapted themselves, and Mrs. Barclay
-has always, I understand, been as popular with the ladies of the
-regiment as her husband was with his brother officers. I may add that
-she was a woman of great beauty, and that even now, when she has been
-married for upwards of thirty years, she is still of a striking and
-queenly appearance.
-
-"Colonel Barclay's family life appears to have been a uniformly happy
-one. Major Murphy, to whom I owe most of my facts, assures me that he
-has never heard of any misunderstanding between the pair. On the whole,
-he thinks that Barclay's devotion to his wife was greater than his
-wife's to Barclay. He was acutely uneasy if he were absent from her for
-a day. She, on the other hand, though devoted and faithful, was less
-obtrusively affectionate. But they were regarded in the regiment as
-the very model of a middle-aged couple. There was absolutely nothing in
-their mutual relations to prepare people for the tragedy which was to
-follow.
-
-"Colonel Barclay himself seems to have had some singular traits in his
-character. He was a dashing, jovial old soldier in his usual mood,
-but there were occasions on which he seemed to show himself capable
-of considerable violence and vindictiveness. This side of his nature,
-however, appears never to have been turned towards his wife. Another
-fact, which had struck Major Murphy and three out of five of the other
-officers with whom I conversed, was the singular sort of depression
-which came upon him at times. As the major expressed it, the smile had
-often been struck from his mouth, as if by some invisible hand, when he
-has been joining the gayeties and chaff of the mess-table. For days on
-end, when the mood was on him, he has been sunk in the deepest gloom.
-This and a certain tinge of superstition were the only unusual traits
-in his character which his brother officers had observed. The latter
-peculiarity took the form of a dislike to being left alone, especially
-after dark. This puerile feature in a nature which was conspicuously
-manly had often given rise to comment and conjecture.
-
-"The first battalion of the Royal Munsters (which is the old 117th) has
-been stationed at Aldershot for some years. The married officers live
-out of barracks, and the Colonel has during all this time occupied a
-villa called Lachine, about half a mile from the north camp. The house
-stands in its own grounds, but the west side of it is not more than
-thirty yards from the high-road. A coachman and two maids form the
-staff of servants. These with their master and mistress were the sole
-occupants of Lachine, for the Barclays had no children, nor was it usual
-for them to have resident visitors.
-
-"Now for the events at Lachine between nine and ten on the evening of
-last Monday."
-
-"Mrs. Barclay was, it appears, a member of the Roman Catholic Church,
-and had interested herself very much in the establishment of the Guild
-of St. George, which was formed in connection with the Watt Street
-Chapel for the purpose of supplying the poor with cast-off clothing.
-A meeting of the Guild had been held that evening at eight, and Mrs.
-Barclay had hurried over her dinner in order to be present at it. When
-leaving the house she was heard by the coachman to make some commonplace
-remark to her husband, and to assure him that she would be back before
-very long. She then called for Miss Morrison, a young lady who lives
-in the next villa, and the two went off together to their meeting. It
-lasted forty minutes, and at a quarter-past nine Mrs. Barclay returned
-home, having left Miss Morrison at her door as she passed.
-
-"There is a room which is used as a morning-room at Lachine. This faces
-the road and opens by a large glass folding-door on to the lawn. The
-lawn is thirty yards across, and is only divided from the highway by
-a low wall with an iron rail above it. It was into this room that Mrs.
-Barclay went upon her return. The blinds were not down, for the room was
-seldom used in the evening, but Mrs. Barclay herself lit the lamp and
-then rang the bell, asking Jane Stewart, the house-maid, to bring her
-a cup of tea, which was quite contrary to her usual habits. The Colonel
-had been sitting in the dining-room, but hearing that his wife had
-returned he joined her in the morning-room. The coachman saw him cross
-the hall and enter it. He was never seen again alive.
-
-"The tea which had been ordered was brought up at the end of ten
-minutes; but the maid, as she approached the door, was surprised to
-hear the voices of her master and mistress in furious altercation. She
-knocked without receiving any answer, and even turned the handle, but
-only to find that the door was locked upon the inside. Naturally enough
-she ran down to tell the cook, and the two women with the coachman came
-up into the hall and listened to the dispute which was still raging.
-They all agreed that only two voices were to be heard, those of Barclay
-and of his wife. Barclay's remarks were subdued and abrupt, so that none
-of them were audible to the listeners. The lady's, on the other hand,
-were most bitter, and when she raised her voice could be plainly heard.
-'You coward!' she repeated over and over again. 'What can be done now?
-What can be done now? Give me back my life. I will never so much as
-breathe the same air with you again! You coward! You coward!' Those were
-scraps of her conversation, ending in a sudden dreadful cry in the man's
-voice, with a crash, and a piercing scream from the woman. Convinced
-that some tragedy had occurred, the coachman rushed to the door and
-strove to force it, while scream after scream issued from within. He was
-unable, however, to make his way in, and the maids were too distracted
-with fear to be of any assistance to him. A sudden thought struck him,
-however, and he ran through the hall door and round to the lawn upon
-which the long French windows open. One side of the window was open,
-which I understand was quite usual in the summer-time, and he passed
-without difficulty into the room. His mistress had ceased to scream and
-was stretched insensible upon a couch, while with his feet tilted over
-the side of an arm-chair, and his head upon the ground near the corner
-of the fender, was lying the unfortunate soldier stone dead in a pool of
-his own blood.
-
-"Naturally, the coachman's first thought, on finding that he could do
-nothing for his master, was to open the door. But here an unexpected and
-singular difficulty presented itself. The key was not in the inner side
-of the door, nor could he find it anywhere in the room. He went out
-again, therefore, through the window, and having obtained the help of
-a policeman and of a medical man, he returned. The lady, against whom
-naturally the strongest suspicion rested, was removed to her room, still
-in a state of insensibility. The Colonel's body was then placed upon the
-sofa, and a careful examination made of the scene of the tragedy.
-
-"The injury from which the unfortunate veteran was suffering was found
-to be a jagged cut some two inches long at the back part of his head,
-which had evidently been caused by a violent blow from a blunt weapon.
-Nor was it difficult to guess what that weapon may have been. Upon the
-floor, close to the body, was lying a singular club of hard carved wood
-with a bone handle. The Colonel possessed a varied collection of weapons
-brought from the different countries in which he had fought, and it
-is conjectured by the police that his club was among his trophies. The
-servants deny having seen it before, but among the numerous curiosities
-in the house it is possible that it may have been overlooked. Nothing
-else of importance was discovered in the room by the police, save the
-inexplicable fact that neither upon Mrs. Barclay's person nor upon that
-of the victim nor in any part of the room was the missing key to
-be found. The door had eventually to be opened by a locksmith from
-Aldershot.
-
-"That was the state of things, Watson, when upon the Tuesday morning I,
-at the request of Major Murphy, went down to Aldershot to supplement
-the efforts of the police. I think that you will acknowledge that the
-problem was already one of interest, but my observations soon made me
-realize that it was in truth much more extraordinary than would at first
-sight appear.
-
-"Before examining the room I cross-questioned the servants, but only
-succeeded in eliciting the facts which I have already stated. One other
-detail of interest was remembered by Jane Stewart, the housemaid. You
-will remember that on hearing the sound of the quarrel she descended and
-returned with the other servants. On that first occasion, when she was
-alone, she says that the voices of her master and mistress were sunk
-so low that she could hear hardly anything, and judged by their tones
-rather than their words that they had fallen out. On my pressing her,
-however, she remembered that she heard the word David uttered twice by
-the lady. The point is of the utmost importance as guiding us towards
-the reason of the sudden quarrel. The Colonel's name, you remember, was
-James.
-
-"There was one thing in the case which had made the deepest impression
-both upon the servants and the police. This was the contortion of the
-Colonel's face. It had set, according to their account, into the most
-dreadful expression of fear and horror which a human countenance is
-capable of assuming. More than one person fainted at the mere sight
-of him, so terrible was the effect. It was quite certain that he had
-foreseen his fate, and that it had caused him the utmost horror. This,
-of course, fitted in well enough with the police theory, if the Colonel
-could have seen his wife making a murderous attack upon him. Nor was
-the fact of the wound being on the back of his head a fatal objection to
-this, as he might have turned to avoid the blow. No information could
-be got from the lady herself, who was temporarily insane from an acute
-attack of brain-fever.
-
-"From the police I learned that Miss Morrison, who you remember went out
-that evening with Mrs. Barclay, denied having any knowledge of what it
-was which had caused the ill-humor in which her companion had returned.
-
-"Having gathered these facts, Watson, I smoked several pipes over them,
-trying to separate those which were crucial from others which were
-merely incidental. There could be no question that the most distinctive
-and suggestive point in the case was the singular disappearance of the
-door-key. A most careful search had failed to discover it in the room.
-Therefore it must have been taken from it. But neither the Colonel
-nor the Colonel's wife could have taken it. That was perfectly clear.
-Therefore a third person must have entered the room. And that third
-person could only have come in through the window. It seemed to me that
-a careful examination of the room and the lawn might possibly reveal
-some traces of this mysterious individual. You know my methods, Watson.
-There was not one of them which I did not apply to the inquiry. And it
-ended by my discovering traces, but very different ones from those which
-I had expected. There had been a man in the room, and he had crossed
-the lawn coming from the road. I was able to obtain five very clear
-impressions of his foot-marks: one in the roadway itself, at the point
-where he had climbed the low wall, two on the lawn, and two very faint
-ones upon the stained boards near the window where he had entered.
-He had apparently rushed across the lawn, for his toe-marks were much
-deeper than his heels. But it was not the man who surprised me. It was
-his companion."
-
-"His companion!"
-
-Holmes pulled a large sheet of tissue-paper out of his pocket and
-carefully unfolded it upon his knee.
-
-"What do you make of that?" he asked.
-
-The paper was covered with he tracings of the foot-marks of some small
-animal. It had five well-marked foot-pads, an indication of long nails,
-and the whole print might be nearly as large as a dessert-spoon.
-
-"It's a dog," said I.
-
-"Did you ever hear of a dog running up a curtain? I found distinct
-traces that this creature had done so."
-
-"A monkey, then?"
-
-"But it is not the print of a monkey."
-
-"What can it be, then?"
-
-"Neither dog nor cat nor monkey nor any creature that we are familiar
-with. I have tried to reconstruct it from the measurements. Here are
-four prints where the beast has been standing motionless. You see that
-it is no less than fifteen inches from fore-foot to hind. Add to that
-the length of neck and head, and you get a creature not much less than
-two feet long--probably more if there is any tail. But now observe this
-other measurement. The animal has been moving, and we have the length
-of its stride. In each case it is only about three inches. You have an
-indication, you see, of a long body with very short legs attached to it.
-It has not been considerate enough to leave any of its hair behind it.
-But its general shape must be what I have indicated, and it can run up a
-curtain, and it is carnivorous."
-
-"How do you deduce that?"
-
-"Because it ran up the curtain. A canary's cage was hanging in the
-window, and its aim seems to have been to get at the bird."
-
-"Then what was the beast?"
-
-"Ah, if I could give it a name it might go a long way towards solving
-the case. On the whole, it was probably some creature of the weasel and
-stoat tribe--and yet it is larger than any of these that I have seen."
-
-"But what had it to do with the crime?"
-
-"That, also, is still obscure. But we have learned a good deal, you
-perceive. We know that a man stood in the road looking at the quarrel
-between the Barclays--the blinds were up and the room lighted. We know,
-also, that he ran across the lawn, entered the room, accompanied by a
-strange animal, and that he either struck the Colonel or, as is equally
-possible, that the Colonel fell down from sheer fright at the sight of
-him, and cut his head on the corner of the fender. Finally, we have the
-curious fact that the intruder carried away the key with him when he
-left."
-
-"Your discoveries seem to have left the business more obscure that it
-was before," said I.
-
-"Quite so. They undoubtedly showed that the affair was much deeper than
-was at first conjectured. I thought the matter over, and I came to
-the conclusion that I must approach the case from another aspect. But
-really, Watson, I am keeping you up, and I might just as well tell you
-all this on our way to Aldershot to-morrow."
-
-"Thank you, you have gone rather too far to stop."
-
-"It is quite certain that when Mrs. Barclay left the house at half-past
-seven she was on good terms with her husband. She was never, as I think
-I have said, ostentatiously affectionate, but she was heard by the
-coachman chatting with the Colonel in a friendly fashion. Now, it was
-equally certain that, immediately on her return, she had gone to the
-room in which she was least likely to see her husband, had flown to tea
-as an agitated woman will, and finally, on his coming in to her, had
-broken into violent recriminations. Therefore something had occurred
-between seven-thirty and nine o'clock which had completely altered her
-feelings towards him. But Miss Morrison had been with her during the
-whole of that hour and a half. It was absolutely certain, therefore, in
-spite of her denial, that she must know something of the matter.
-
-"My first conjecture was, that possibly there had been some passages
-between this young lady and the old soldier, which the former had now
-confessed to the wife. That would account for the angry return, and
-also for the girl's denial that anything had occurred. Nor would it be
-entirely incompatible with most of the words overhead. But there was the
-reference to David, and there was the known affection of the Colonel for
-his wife, to weigh against it, to say nothing of the tragic intrusion
-of this other man, which might, of course, be entirely disconnected with
-what had gone before. It was not easy to pick one's steps, but, on the
-whole, I was inclined to dismiss the idea that there had been anything
-between the Colonel and Miss Morrison, but more than ever convinced that
-the young lady held the clue as to what it was which had turned Mrs.
-Barclay to hatred of her husband. I took the obvious course, therefore,
-of calling upon Miss M., of explaining to her that I was perfectly
-certain that she held the facts in her possession, and of assuring her
-that her friend, Mrs. Barclay, might find herself in the dock upon a
-capital charge unless the matter were cleared up.
-
-"Miss Morrison is a little ethereal slip of a girl, with timid eyes
-and blond hair, but I found her by no means wanting in shrewdness and
-common-sense. She sat thinking for some time after I had spoken, and
-then, turning to me with a brisk air of resolution, she broke into a
-remarkable statement which I will condense for your benefit.
-
-"'I promised my friend that I would say nothing of the matter, and a
-promise is a promise,' said she; 'but if I can really help her when
-so serious a charge is laid against her, and when her own mouth, poor
-darling, is closed by illness, then I think I am absolved from my
-promise. I will tell you exactly what happened upon Monday evening.
-
-"'We were returning from the Watt Street Mission about a quarter to nine
-o'clock. On our way we had to pass through Hudson Street, which is
-a very quiet thoroughfare. There is only one lamp in it, upon the
-left-hand side, and as we approached this lamp I saw a man coming
-towards us with his back very bent, and something like a box slung over
-one of his shoulders. He appeared to be deformed, for he carried his
-head low and walked with his knees bent. We were passing him when he
-raised his face to look at us in the circle of light thrown by the lamp,
-and as he did so he stopped and screamed out in a dreadful voice, "My
-God, it's Nancy!" Mrs. Barclay turned as white as death, and would have
-fallen down had the dreadful-looking creature not caught hold of her. I
-was going to call for the police, but she, to my surprise, spoke quite
-civilly to the fellow.
-
-"'"I thought you had been dead this thirty years, Henry," said she, in a
-shaking voice.
-
-"'"So I have," said he, and it was awful to hear the tones that he said
-it in. He had a very dark, fearsome face, and a gleam in his eyes that
-comes back to me in my dreams. His hair and whiskers were shot with
-gray, and his face was all crinkled and puckered like a withered apple.
-
-"'"Just walk on a little way, dear," said Mrs. Barclay; "I want to have
-a word with this man. There is nothing to be afraid of." She tried to
-speak boldly, but she was still deadly pale and could hardly get her
-words out for the trembling of her lips.
-
-"'I did as she asked me, and they talked together for a few minutes.
-Then she came down the street with her eyes blazing, and I saw the
-crippled wretch standing by the lamp-post and shaking his clenched fists
-in the air as if he were mad with rage. She never said a word until we
-were at the door here, when she took me by the hand and begged me to
-tell no one what had happened.
-
-"'"It's an old acquaintance of mine who has come down in the world,"
-said she. When I promised her I would say nothing she kissed me, and I
-have never seen her since. I have told you now the whole truth, and if
-I withheld it from the police it is because I did not realize then the
-danger in which my dear friend stood. I know that it can only be to her
-advantage that everything should be known.'
-
-"There was her statement, Watson, and to me, as you can imagine, it was
-like a light on a dark night. Everything which had been disconnected
-before began at once to assume its true place, and I had a shadowy
-presentiment of the whole sequence of events. My next step obviously was
-to find the man who had produced such a remarkable impression upon Mrs.
-Barclay. If he were still in Aldershot it should not be a very difficult
-matter. There are not such a very great number of civilians, and a
-deformed man was sure to have attracted attention. I spent a day in the
-search, and by evening--this very evening, Watson--I had run him down.
-The man's name is Henry Wood, and he lives in lodgings in this same
-street in which the ladies met him. He has only been five days in the
-place. In the character of a registration-agent I had a most interesting
-gossip with his landlady. The man is by trade a conjurer and performer,
-going round the canteens after nightfall, and giving a little
-entertainment at each. He carries some creature about with him in that
-box; about which the landlady seemed to be in considerable trepidation,
-for she had never seen an animal like it. He uses it in some of his
-tricks according to her account. So much the woman was able to tell me,
-and also that it was a wonder the man lived, seeing how twisted he was,
-and that he spoke in a strange tongue sometimes, and that for the last
-two nights she had heard him groaning and weeping in his bedroom. He
-was all right, as far as money went, but in his deposit he had given her
-what looked like a bad florin. She showed it to me, Watson, and it was
-an Indian rupee.
-
-"So now, my dear fellow, you see exactly how we stand and why it is I
-want you. It is perfectly plain that after the ladies parted from this
-man he followed them at a distance, that he saw the quarrel between
-husband and wife through the window, that he rushed in, and that
-the creature which he carried in his box got loose. That is all very
-certain. But he is the only person in this world who can tell us exactly
-what happened in that room."
-
-"And you intend to ask him?"
-
-"Most certainly--but in the presence of a witness."
-
-"And I am the witness?"
-
-"If you will be so good. If he can clear the matter up, well and good.
-If he refuses, we have no alternative but to apply for a warrant."
-
-"But how do you know he'll be there when we return?"
-
-"You may be sure that I took some precautions. I have one of my Baker
-Street boys mounting guard over him who would stick to him like a burr,
-go where he might. We shall find him in Hudson Street to-morrow, Watson,
-and meanwhile I should be the criminal myself if I kept you out of bed
-any longer."
-
-It was midday when we found ourselves at the scene of the tragedy, and,
-under my companion's guidance, we made our way at once to Hudson Street.
-In spite of his capacity for concealing his emotions, I could easily see
-that Holmes was in a state of suppressed excitement, while I was myself
-tingling with that half-sporting, half-intellectual pleasure which
-I invariably experienced when I associated myself with him in his
-investigations.
-
-"This is the street," said he, as we turned into a short thoroughfare
-lined with plain two-storied brick houses. "Ah, here is Simpson to
-report."
-
-"He's in all right, Mr. Holmes," cried a small street Arab, running up
-to us.
-
-"Good, Simpson!" said Holmes, patting him on the head. "Come along,
-Watson. This is the house." He sent in his card with a message that he
-had come on important business, and a moment later we were face to face
-with the man whom we had come to see. In spite of the warm weather he
-was crouching over a fire, and the little room was like an oven. The
-man sat all twisted and huddled in his chair in a way which gave an
-indescribably impression of deformity; but the face which he turned
-towards us, though worn and swarthy, must at some time have been
-remarkable for its beauty. He looked suspiciously at us now out of
-yellow-shot, bilious eyes, and, without speaking or rising, he waved
-towards two chairs.
-
-"Mr. Henry Wood, late of India, I believe," said Holmes, affably. "I've
-come over this little matter of Colonel Barclay's death."
-
-"What should I know about that?"
-
-"That's what I want to ascertain. You know, I suppose, that unless the
-matter is cleared up, Mrs. Barclay, who is an old friend of yours, will
-in all probability be tried for murder."
-
-The man gave a violent start.
-
-"I don't know who you are," he cried, "nor how you come to know what you
-do know, but will you swear that this is true that you tell me?"
-
-"Why, they are only waiting for her to come to her senses to arrest
-her."
-
-"My God! Are you in the police yourself?"
-
-"No."
-
-"What business is it of yours, then?"
-
-"It's every man's business to see justice done."
-
-"You can take my word that she is innocent."
-
-"Then you are guilty."
-
-"No, I am not."
-
-"Who killed Colonel James Barclay, then?"
-
-"It was a just providence that killed him. But, mind you this, that if
-I had knocked his brains out, as it was in my heart to do, he would have
-had no more than his due from my hands. If his own guilty conscience had
-not struck him down it is likely enough that I might have had his blood
-upon my soul. You want me to tell the story. Well, I don't know why I
-shouldn't, for there's no cause for me to be ashamed of it.
-
-"It was in this way, sir. You see me now with my back like a camel and
-my ribs all awry, but there was a time when Corporal Henry Wood was the
-smartest man in the 117th foot. We were in India then, in cantonments,
-at a place we'll call Bhurtee. Barclay, who died the other day, was
-sergeant in the same company as myself, and the belle of the regiment,
-ay, and the finest girl that ever had the breath of life between her
-lips, was Nancy Devoy, the daughter of the color-sergeant. There were
-two men that loved her, and one that she loved, and you'll smile when
-you look at this poor thing huddled before the fire, and hear me say
-that it was for my good looks that she loved me.
-
-"Well, though I had her heart, her father was set upon her marrying
-Barclay. I was a harum-scarum, reckless lad, and he had had an
-education, and was already marked for the sword-belt. But the girl held
-true to me, and it seemed that I would have had her when the Mutiny
-broke out, and all hell was loose in the country.
-
-"We were shut up in Bhurtee, the regiment of us with half a battery of
-artillery, a company of Sikhs, and a lot of civilians and women-folk.
-There were ten thousand rebels round us, and they were as keen as a set
-of terriers round a rat-cage. About the second week of it our water gave
-out, and it was a question whether we could communicate with General
-Neill's column, which was moving up country. It was our only chance, for
-we could not hope to fight our way out with all the women and children,
-so I volunteered to go out and to warn General Neill of our danger. My
-offer was accepted, and I talked it over with Sergeant Barclay, who was
-supposed to know the ground better than any other man, and who drew up
-a route by which I might get through the rebel lines. At ten o'clock the
-same night I started off upon my journey. There were a thousand lives to
-save, but it was of only one that I was thinking when I dropped over the
-wall that night.
-
-"My way ran down a dried-up watercourse, which we hoped would screen
-me from the enemy's sentries; but as I crept round the corner of it
-I walked right into six of them, who were crouching down in the dark
-waiting for me. In an instant I was stunned with a blow and bound hand
-and foot. But the real blow was to my heart and not to my head, for as
-I came to and listened to as much as I could understand of their talk,
-I heard enough to tell me that my comrade, the very man who had arranged
-the way that I was to take, had betrayed me by means of a native servant
-into the hands of the enemy.
-
-"Well, there's no need for me to dwell on that part of it. You know now
-what James Barclay was capable of. Bhurtee was relieved by Neill next
-day, but the rebels took me away with them in their retreat, and it was
-many a long year before ever I saw a white face again. I was tortured
-and tried to get away, and was captured and tortured again. You can see
-for yourselves the state in which I was left. Some of them that fled
-into Nepaul took me with them, and then afterwards I was up past
-Darjeeling. The hill-folk up there murdered the rebels who had me, and
-I became their slave for a time until I escaped; but instead of going
-south I had to go north, until I found myself among the Afghans. There
-I wandered about for many a year, and at last came back to the Punjab,
-where I lived mostly among the natives and picked up a living by the
-conjuring tricks that I had learned. What use was it for me, a wretched
-cripple, to go back to England or to make myself known to my old
-comrades? Even my wish for revenge would not make me do that. I had
-rather that Nancy and my old pals should think of Harry Wood as having
-died with a straight back, than see him living and crawling with a stick
-like a chimpanzee. They never doubted that I was dead, and I meant that
-they never should. I heard that Barclay had married Nancy, and that he
-was rising rapidly in the regiment, but even that did not make me speak.
-
-"But when one gets old one has a longing for home. For years I've been
-dreaming of the bright green fields and the hedges of England. At last I
-determined to see them before I died. I saved enough to bring me across,
-and then I came here where the soldiers are, for I know their ways and
-how to amuse them and so earn enough to keep me."
-
-"Your narrative is most interesting," said Sherlock Holmes. "I have
-already heard of your meeting with Mrs. Barclay, and your mutual
-recognition. You then, as I understand, followed her home and saw
-through the window an altercation between her husband and her, in which
-she doubtless cast his conduct to you in his teeth. Your own feelings
-overcame you, and you ran across the lawn and broke in upon them."
-
-"I did, sir, and at the sight of me he looked as I have never seen a man
-look before, and over he went with his head on the fender. But he was
-dead before he fell. I read death on his face as plain as I can read
-that text over the fire. The bare sight of me was like a bullet through
-his guilty heart."
-
-"And then?"
-
-"Then Nancy fainted, and I caught up the key of the door from her hand,
-intending to unlock it and get help. But as I was doing it it seemed to
-me better to leave it alone and get away, for the thing might look black
-against me, and any way my secret would be out if I were taken. In my
-haste I thrust the key into my pocket, and dropped my stick while I was
-chasing Teddy, who had run up the curtain. When I got him into his box,
-from which he had slipped, I was off as fast as I could run."
-
-"Who's Teddy?" asked Holmes.
-
-The man leaned over and pulled up the front of a kind of hutch in
-the corner. In an instant out there slipped a beautiful reddish-brown
-creature, thin and lithe, with the legs of a stoat, a long, thin nose,
-and a pair of the finest red eyes that ever I saw in an animal's head.
-
-"It's a mongoose," I cried.
-
-"Well, some call them that, and some call them ichneumon," said the
-man. "Snake-catcher is what I call them, and Teddy is amazing quick on
-cobras. I have one here without the fangs, and Teddy catches it every
-night to please the folk in the canteen.
-
-"Any other point, sir?"
-
-"Well, we may have to apply to you again if Mrs. Barclay should prove to
-be in serious trouble."
-
-"In that case, of course, I'd come forward."
-
-"But if not, there is no object in raking up this scandal against a
-dead man, foully as he has acted. You have at least the satisfaction
-of knowing that for thirty years of his life his conscience bitterly
-reproached him for this wicked deed. Ah, there goes Major Murphy on the
-other side of the street. Good-by, Wood. I want to learn if anything has
-happened since yesterday."
-
-We were in time to overtake the major before he reached the corner.
-
-"Ah, Holmes," he said: "I suppose you have heard that all this fuss has
-come to nothing?"
-
-"What then?"
-
-"The inquest is just over. The medical evidence showed conclusively
-that death was due to apoplexy. You see it was quite a simple case after
-all."
-
-"Oh, remarkably superficial," said Holmes, smiling. "Come, Watson, I
-don't think we shall be wanted in Aldershot any more."
-
-"There's one thing," said I, as we walked down to the station. "If the
-husband's name was James, and the other was Henry, what was this talk
-about David?"
-
-"That one word, my dear Watson, should have told me the whole story had
-I been the ideal reasoner which you are so fond of depicting. It was
-evidently a term of reproach."
-
-"Of reproach?"
-
-"Yes; David strayed a little occasionally, you know, and on one occasion
-in the same direction as Sergeant James Barclay. You remember the small
-affair of Uriah and Bathsheba? My biblical knowledge is a trifle rusty,
-I fear, but you will find the story in the first or second of Samuel."
-
-
-
-
-Adventure VIII. The Resident Patient
-
-
-Glancing over the somewhat incoherent series of Memoirs with which I
-have endeavored to illustrate a few of the mental peculiarities of my
-friend Mr. Sherlock Holmes, I have been struck by the difficulty which I
-have experienced in picking out examples which shall in every way answer
-my purpose. For in those cases in which Holmes has performed some tour
-de force of analytical reasoning, and has demonstrated the value of his
-peculiar methods of investigation, the facts themselves have often been
-so slight or so commonplace that I could not feel justified in laying
-them before the public. On the other hand, it has frequently happened
-that he has been concerned in some research where the facts have been of
-the most remarkable and dramatic character, but where the share which he
-has himself taken in determining their causes has been less pronounced
-than I, as his biographer, could wish. The small matter which I have
-chronicled under the heading of "A Study in Scarlet," and that other
-later one connected with the loss of the Gloria Scott, may serve as
-examples of this Scylla and Charybdis which are forever threatening the
-historian. It may be that in the business of which I am now about to
-write the part which my friend played is not sufficiently accentuated;
-and yet the whole train of circumstances is so remarkable that I cannot
-bring myself to omit it entirely from this series.
-
-It had been a close, rainy day in October. Our blinds were half-drawn,
-and Holmes lay curled upon the sofa, reading and re-reading a letter
-which he had received by the morning post. For myself, my term of
-service in India had trained me to stand heat better than cold, and
-a thermometer of 90 was no hardship. But the paper was uninteresting.
-Parliament had risen. Everybody was out of town, and I yearned for the
-glades of the New Forest or the shingle of Southsea. A depleted bank
-account had caused me to postpone my holiday, and as to my companion,
-neither the country nor the sea presented the slightest attraction to
-him. He loved to lie in the very centre of five millions of people, with
-his filaments stretching out and running through them, responsive to
-every little rumor or suspicion of unsolved crime. Appreciation of
-Nature found no place among his many gifts, and his only change was
-when he turned his mind from the evil-doer of the town to track down his
-brother of the country.
-
-Finding that Holmes was too absorbed for conversation, I had tossed
-aside the barren paper, and leaning back in my chair, I fell into a
-brown study. Suddenly my companion's voice broke in upon my thoughts.
-
-"You are right, Watson," said he. "It does seem a very preposterous way
-of settling a dispute."
-
-"Most preposterous!" I exclaimed, and then, suddenly realizing how
-he had echoed the inmost thought of my soul, I sat up in my chair and
-stared at him in blank amazement.
-
-"What is this, Holmes?" I cried. "This is beyond anything which I could
-have imagined."
-
-He laughed heartily at my perplexity.
-
-"You remember," said he, "that some little time ago, when I read you the
-passage in one of Poe's sketches, in which a close reasoner follows the
-unspoken thought of his companion, you were inclined to treat the
-matter as a mere tour de force of the author. On my remarking that I
-was constantly in the habit of doing the same thing you expressed
-incredulity."
-
-"Oh, no!"
-
-"Perhaps not with your tongue, my dear Watson, but certainly with your
-eyebrows. So when I saw you throw down your paper and enter upon a train
-of thought, I was very happy to have the opportunity of reading it
-off, and eventually of breaking into it, as a proof that I had been in
-rapport with you."
-
-But I was still far from satisfied. "In the example which you read to
-me," said I, "the reasoner drew his conclusions from the actions of the
-man whom he observed. If I remember right, he stumbled over a heap
-of stones, looked up at the stars, and so on. But I have been seated
-quietly in my chair, and what clues can I have given you?"
-
-"You do yourself an injustice. The features are given to man as the
-means by which he shall express his emotions, and yours are faithful
-servants."
-
-"Do you mean to say that you read my train of thoughts from my
-features?"
-
-"Your features, and especially your eyes. Perhaps you cannot yourself
-recall how your reverie commenced?"
-
-"No, I cannot."
-
-"Then I will tell you. After throwing down your paper, which was the
-action which drew my attention to you, you sat for half a minute with
-a vacant expression. Then your eyes fixed themselves upon your
-newly-framed picture of General Gordon, and I saw by the alteration in
-your face that a train of thought had been started. But it did not lead
-very far. Your eyes turned across to the unframed portrait of Henry Ward
-Beecher which stands upon the top of your books. You then glanced up at
-the wall, and of course your meaning was obvious. You were thinking
-that if the portrait were framed it would just cover that bare space and
-correspond with Gordon's picture over there."
-
-"You have followed me wonderfully!" I exclaimed.
-
-"So far I could hardly have gone astray. But now your thoughts went
-back to Beecher, and you looked hard across as if you were studying
-the character in his features. Then your eyes ceased to pucker, but
-you continued to look across, and your face was thoughtful. You were
-recalling the incidents of Beecher's career. I was well aware that you
-could not do this without thinking of the mission which he undertook
-on behalf of the North at the time of the Civil War, for I remember
-you expressing your passionate indignation at the way in which he was
-received by the more turbulent of our people. You felt so strongly about
-it that I knew you could not think of Beecher without thinking of that
-also. When a moment later I saw your eyes wander away from the picture,
-I suspected that your mind had now turned to the Civil War, and when
-I observed that your lips set, your eyes sparkled, and your hands
-clinched, I was positive that you were indeed thinking of the gallantry
-which was shown by both sides in that desperate struggle. But then,
-again, your face grew sadder; you shook your head. You were dwelling
-upon the sadness and horror and useless waste of life. Your hand stole
-towards your own old wound, and a smile quivered on your lips,
-which showed me that the ridiculous side of this method of settling
-international questions had forced itself upon your mind. At this point
-I agreed with you that it was preposterous, and was glad to find that
-all my deductions had been correct."
-
-"Absolutely!" said I. "And now that you have explained it, I confess
-that I am as amazed as before."
-
-"It was very superficial, my dear Watson, I assure you. I should not
-have intruded it upon your attention had you not shown some incredulity
-the other day. But the evening has brought a breeze with it. What do you
-say to a ramble through London?"
-
-I was weary of our little sitting-room and gladly acquiesced. For
-three hours we strolled about together, watching the ever-changing
-kaleidoscope of life as it ebbs and flows through Fleet Street and the
-Strand. His characteristic talk, with its keen observance of detail
-and subtle power of inference held me amused and enthralled. It was ten
-o'clock before we reached Baker Street again. A brougham was waiting at
-our door.
-
-"Hum! A doctor's--general practitioner, I perceive," said Holmes. "Not
-been long in practice, but has had a good deal to do. Come to consult
-us, I fancy! Lucky we came back!"
-
-I was sufficiently conversant with Holmes's methods to be able to follow
-his reasoning, and to see that the nature and state of the various
-medical instruments in the wicker basket which hung in the lamplight
-inside the brougham had given him the data for his swift deduction.
-The light in our window above showed that this late visit was indeed
-intended for us. With some curiosity as to what could have sent a
-brother medico to us at such an hour, I followed Holmes into our
-sanctum.
-
-A pale, taper-faced man with sandy whiskers rose up from a chair by the
-fire as we entered. His age may not have been more than three or four
-and thirty, but his haggard expression and unhealthy hue told of a life
-which has sapped his strength and robbed him of his youth. His manner
-was nervous and shy, like that of a sensitive gentleman, and the thin
-white hand which he laid on the mantelpiece as he rose was that of an
-artist rather than of a surgeon. His dress was quiet and sombre--a black
-frock-coat, dark trousers, and a touch of color about his necktie.
-
-"Good-evening, doctor," said Holmes, cheerily. "I am glad to see that
-you have only been waiting a very few minutes."
-
-"You spoke to my coachman, then?"
-
-"No, it was the candle on the side-table that told me. Pray resume your
-seat and let me know how I can serve you."
-
-"My name is Doctor Percy Trevelyan," said our visitor, "and I live at
-403 Brook Street."
-
-"Are you not the author of a monograph upon obscure nervous lesions?" I
-asked.
-
-His pale cheeks flushed with pleasure at hearing that his work was known
-to me.
-
-"I so seldom hear of the work that I thought it was quite dead," said
-he. "My publishers gave me a most discouraging account of its sale. You
-are yourself, I presume, a medical man?"
-
-"A retired army surgeon."
-
-"My own hobby has always been nervous disease. I should wish to make it
-an absolute specialty, but, of course, a man must take what he can get
-at first. This, however, is beside the question, Mr. Sherlock Holmes,
-and I quite appreciate how valuable your time is. The fact is that a
-very singular train of events has occurred recently at my house in Brook
-Street, and to-night they came to such a head that I felt it was quite
-impossible for me to wait another hour before asking for your advice and
-assistance."
-
-Sherlock Holmes sat down and lit his pipe. "You are very welcome
-to both," said he. "Pray let me have a detailed account of what the
-circumstances are which have disturbed you."
-
-"One or two of them are so trivial," said Dr. Trevelyan, "that really
-I am almost ashamed to mention them. But the matter is so inexplicable,
-and the recent turn which it has taken is so elaborate, that I shall
-lay it all before you, and you shall judge what is essential and what is
-not.
-
-"I am compelled, to begin with, to say something of my own college
-career. I am a London University man, you know, and I am sure that your
-will not think that I am unduly singing my own praises if I say that my
-student career was considered by my professors to be a very promising
-one. After I had graduated I continued to devote myself to research,
-occupying a minor position in King's College Hospital, and I was
-fortunate enough to excite considerable interest by my research into the
-pathology of catalepsy, and finally to win the Bruce Pinkerton prize and
-medal by the monograph on nervous lesions to which your friend has
-just alluded. I should not go too far if I were to say that there was a
-general impression at that time that a distinguished career lay before
-me.
-
-"But the one great stumbling-block lay in my want of capital. As you
-will readily understand, a specialist who aims high is compelled to
-start in one of a dozen streets in the Cavendish Square quarter, all
-of which entail enormous rents and furnishing expenses. Besides this
-preliminary outlay, he must be prepared to keep himself for some years,
-and to hire a presentable carriage and horse. To do this was quite
-beyond my power, and I could only hope that by economy I might in ten
-years' time save enough to enable me to put up my plate. Suddenly,
-however, an unexpected incident opened up quite a new prospect to me.
-
-"This was a visit from a gentleman of the name of Blessington, who was a
-complete stranger to me. He came up to my room one morning, and plunged
-into business in an instant.
-
-"'You are the same Percy Trevelyan who has had so distinguished a career
-and won a great prize lately?' said he.
-
-"I bowed.
-
-"'Answer me frankly,' he continued, 'for you will find it to your
-interest to do so. You have all the cleverness which makes a successful
-man. Have you the tact?'
-
-"I could not help smiling at the abruptness of the question.
-
-"'I trust that I have my share,' I said.
-
-"'Any bad habits? Not drawn towards drink, eh?'
-
-"'Really, sir!' I cried.
-
-"'Quite right! That's all right! But I was bound to ask. With all these
-qualities, why are you not in practice?'
-
-"I shrugged my shoulders.
-
-"'Come, come!' said he, in his bustling way. 'It's the old story. More
-in your brains than in your pocket, eh? What would you say if I were to
-start you in Brook Street?'
-
-"I stared at him in astonishment.
-
-"'Oh, it's for my sake, not for yours,' he cried. 'I'll be perfectly
-frank with you, and if it suits you it will suit me very well. I have a
-few thousands to invest, d'ye see, and I think I'll sink them in you.'
-
-"'But why?' I gasped.
-
-"'Well, it's just like any other speculation, and safer than most.'
-
-"'What am I to do, then?'
-
-"'I'll tell you. I'll take the house, furnish it, pay the maids, and run
-the whole place. All you have to do is just to wear out your chair in
-the consulting-room. I'll let you have pocket-money and everything. Then
-you hand over to me three quarters of what you earn, and you keep the
-other quarter for yourself.'
-
-"This was the strange proposal, Mr. Holmes, with which the man
-Blessington approached me. I won't weary you with the account of how
-we bargained and negotiated. It ended in my moving into the house next
-Lady-day, and starting in practice on very much the same conditions as
-he had suggested. He came himself to live with me in the character of a
-resident patient. His heart was weak, it appears, and he needed constant
-medical supervision. He turned the two best rooms of the first floor
-into a sitting-room and bedroom for himself. He was a man of singular
-habits, shunning company and very seldom going out. His life was
-irregular, but in one respect he was regularity itself. Every evening,
-at the same hour, he walked into the consulting-room, examined the
-books, put down five and three-pence for every guinea that I had earned,
-and carried the rest off to the strong-box in his own room.
-
-"I may say with confidence that he never had occasion to regret his
-speculation. From the first it was a success. A few good cases and the
-reputation which I had won in the hospital brought me rapidly to the
-front, and during the last few years I have made him a rich man.
-
-"So much, Mr. Holmes, for my past history and my relations with Mr.
-Blessington. It only remains for me now to tell you what has occurred to
-bring me here to-night.
-
-"Some weeks ago Mr. Blessington came down to me in, as it seemed to me,
-a state of considerable agitation. He spoke of some burglary which, he
-said, had been committed in the West End, and he appeared, I remember,
-to be quite unnecessarily excited about it, declaring that a day should
-not pass before we should add stronger bolts to our windows and doors.
-For a week he continued to be in a peculiar state of restlessness,
-peering continually out of the windows, and ceasing to take the short
-walk which had usually been the prelude to his dinner. From his manner
-it struck me that he was in mortal dread of something or somebody, but
-when I questioned him upon the point he became so offensive that I was
-compelled to drop the subject. Gradually, as time passed, his fears
-appeared to die away, and he had renewed his former habits, when a fresh
-event reduced him to the pitiable state of prostration in which he now
-lies.
-
-"What happened was this. Two days ago I received the letter which I now
-read to you. Neither address nor date is attached to it.
-
-"'A Russian nobleman who is now resident in England,' it runs, 'would
-be glad to avail himself of the professional assistance of Dr. Percy
-Trevelyan. He has been for some years a victim to cataleptic attacks, on
-which, as is well known, Dr. Trevelyan is an authority. He proposes to
-call at about quarter past six to-morrow evening, if Dr. Trevelyan will
-make it convenient to be at home.'
-
-"This letter interested me deeply, because the chief difficulty in the
-study of catalepsy is the rareness of the disease. You may believe,
-then, that I was in my consulting-room when, at the appointed hour, the
-page showed in the patient.
-
-"He was an elderly man, thin, demure, and commonplace--by no means the
-conception one forms of a Russian nobleman. I was much more struck by
-the appearance of his companion. This was a tall young man, surprisingly
-handsome, with a dark, fierce face, and the limbs and chest of a
-Hercules. He had his hand under the other's arm as they entered, and
-helped him to a chair with a tenderness which one would hardly have
-expected from his appearance.
-
-"'You will excuse my coming in, doctor,' said he to me, speaking English
-with a slight lisp. 'This is my father, and his health is a matter of
-the most overwhelming importance to me.'
-
-"I was touched by this filial anxiety. 'You would, perhaps, care to
-remain during the consultation?' said I.
-
-"'Not for the world,' he cried with a gesture of horror. 'It is more
-painful to me than I can express. If I were to see my father in one of
-these dreadful seizures I am convinced that I should never survive
-it. My own nervous system is an exceptionally sensitive one. With your
-permission, I will remain in the waiting-room while you go into my
-father's case.'
-
-"To this, of course, I assented, and the young man withdrew. The patient
-and I then plunged into a discussion of his case, of which I took
-exhaustive notes. He was not remarkable for intelligence, and his
-answers were frequently obscure, which I attributed to his limited
-acquaintance with our language. Suddenly, however, as I sat writing,
-he ceased to give any answer at all to my inquiries, and on my turning
-towards him I was shocked to see that he was sitting bolt upright in his
-chair, staring at me with a perfectly blank and rigid face. He was again
-in the grip of his mysterious malady.
-
-"My first feeling, as I have just said, was one of pity and horror.
-My second, I fear, was rather one of professional satisfaction. I made
-notes of my patient's pulse and temperature, tested the rigidity of his
-muscles, and examined his reflexes. There was nothing markedly abnormal
-in any of these conditions, which harmonized with my former experiences.
-I had obtained good results in such cases by the inhalation of nitrite
-of amyl, and the present seemed an admirable opportunity of testing
-its virtues. The bottle was downstairs in my laboratory, so leaving my
-patient seated in his chair, I ran down to get it. There was some little
-delay in finding it--five minutes, let us say--and then I returned.
-Imagine my amazement to find the room empty and the patient gone.
-
-"Of course, my first act was to run into the waiting-room. The son had
-gone also. The hall door had been closed, but not shut. My page who
-admits patients is a new boy and by no means quick. He waits downstairs,
-and runs up to show patients out when I ring the consulting-room bell.
-He had heard nothing, and the affair remained a complete mystery. Mr.
-Blessington came in from his walk shortly afterwards, but I did not say
-anything to him upon the subject, for, to tell the truth, I have got in
-the way of late of holding as little communication with him as possible.
-
-"Well, I never thought that I should see anything more of the Russian
-and his son, so you can imagine my amazement when, at the very same hour
-this evening, they both came marching into my consulting-room, just as
-they had done before.
-
-"'I feel that I owe you a great many apologies for my abrupt departure
-yesterday, doctor,' said my patient.
-
-"'I confess that I was very much surprised at it,' said I.
-
-"'Well, the fact is,' he remarked, 'that when I recover from these
-attacks my mind is always very clouded as to all that has gone before. I
-woke up in a strange room, as it seemed to me, and made my way out into
-the street in a sort of dazed way when you were absent.'
-
-"'And I,' said the son, 'seeing my father pass the door of the
-waiting-room, naturally thought that the consultation had come to an
-end. It was not until we had reached home that I began to realize the
-true state of affairs.'
-
-"'Well,' said I, laughing, 'there is no harm done except that you
-puzzled me terribly; so if you, sir, would kindly step into the
-waiting-room I shall be happy to continue our consultation which was
-brought to so abrupt an ending.'
-
-"'For half an hour or so I discussed that old gentleman's symptoms with
-him, and then, having prescribed for him, I saw him go off upon the arm
-of his son.
-
-"I have told you that Mr. Blessington generally chose this hour of the
-day for his exercise. He came in shortly afterwards and passed upstairs.
-An instant later I heard him running down, and he burst into my
-consulting-room like a man who is mad with panic.
-
-"'Who has been in my room?' he cried.
-
-"'No one,' said I.
-
-"'It's a lie! He yelled. 'Come up and look!'
-
-"I passed over the grossness of his language, as he seemed half out of
-his mind with fear. When I went upstairs with him he pointed to several
-footprints upon the light carpet.
-
-"'D'you mean to say those are mine?' he cried.
-
-"They were certainly very much larger than any which he could have made,
-and were evidently quite fresh. It rained hard this afternoon, as you
-know, and my patients were the only people who called. It must have been
-the case, then, that the man in the waiting-room had, for some unknown
-reason, while I was busy with the other, ascended to the room of my
-resident patient. Nothing had been touched or taken, but there were the
-footprints to prove that the intrusion was an undoubted fact.
-
-"Mr. Blessington seemed more excited over the matter than I should have
-thought possible, though of course it was enough to disturb anybody's
-peace of mind. He actually sat crying in an arm-chair, and I could
-hardly get him to speak coherently. It was his suggestion that I should
-come round to you, and of course I at once saw the propriety of it,
-for certainly the incident is a very singular one, though he appears to
-completely overrate its importance. If you would only come back with me
-in my brougham, you would at least be able to soothe him, though I
-can hardly hope that you will be able to explain this remarkable
-occurrence."
-
-Sherlock Holmes had listened to this long narrative with an intentness
-which showed me that his interest was keenly aroused. His face was as
-impassive as ever, but his lids had drooped more heavily over his eyes,
-and his smoke had curled up more thickly from his pipe to emphasize each
-curious episode in the doctor's tale. As our visitor concluded, Holmes
-sprang up without a word, handed me my hat, picked his own from the
-table, and followed Dr. Trevelyan to the door. Within a quarter of an
-hour we had been dropped at the door of the physician's residence
-in Brook Street, one of those sombre, flat-faced houses which one
-associates with a West-End practice. A small page admitted us, and we
-began at once to ascend the broad, well-carpeted stair.
-
-But a singular interruption brought us to a standstill. The light at
-the top was suddenly whisked out, and from the darkness came a reedy,
-quivering voice.
-
-"I have a pistol," it cried. "I give you my word that I'll fire if you
-come any nearer."
-
-"This really grows outrageous, Mr. Blessington," cried Dr. Trevelyan.
-
-"Oh, then it is you, doctor," said the voice, with a great heave of
-relief. "But those other gentlemen, are they what they pretend to be?"
-
-We were conscious of a long scrutiny out of the darkness.
-
-"Yes, yes, it's all right," said the voice at last. "You can come up,
-and I am sorry if my precautions have annoyed you."
-
-He relit the stair gas as he spoke, and we saw before us a
-singular-looking man, whose appearance, as well as his voice, testified
-to his jangled nerves. He was very fat, but had apparently at some time
-been much fatter, so that the skin hung about his face in loose pouches,
-like the cheeks of a blood-hound. He was of a sickly color, and his
-thin, sandy hair seemed to bristle up with the intensity of his emotion.
-In his hand he held a pistol, but he thrust it into his pocket as we
-advanced.
-
-"Good-evening, Mr. Holmes," said he. "I am sure I am very much obliged
-to you for coming round. No one ever needed your advice more than I do.
-I suppose that Dr. Trevelyan has told you of this most unwarrantable
-intrusion into my rooms."
-
-"Quite so," said Holmes. "Who are these two men Mr. Blessington, and why
-do they wish to molest you?"
-
-"Well, well," said the resident patient, in a nervous fashion, "of
-course it is hard to say that. You can hardly expect me to answer that,
-Mr. Holmes."
-
-"Do you mean that you don't know?"
-
-"Come in here, if you please. Just have the kindness to step in here."
-
-He led the way into his bedroom, which was large and comfortably
-furnished.
-
-"You see that," said he, pointing to a big black box at the end of his
-bed. "I have never been a very rich man, Mr. Holmes--never made but
-one investment in my life, as Dr. Trevelyan would tell you. But I don't
-believe in bankers. I would never trust a banker, Mr. Holmes. Between
-ourselves, what little I have is in that box, so you can understand what
-it means to me when unknown people force themselves into my rooms."
-
-Holmes looked at Blessington in his questioning way and shook his head.
-
-"I cannot possibly advise you if you try to deceive me," said he.
-
-"But I have told you everything."
-
-Holmes turned on his heel with a gesture of disgust. "Good-night, Dr.
-Trevelyan," said he.
-
-"And no advice for me?" cried Blessington, in a breaking voice.
-
-"My advice to you, sir, is to speak the truth."
-
-A minute later we were in the street and walking for home. We had
-crossed Oxford Street and were half way down Harley Street before I
-could get a word from my companion.
-
-"Sorry to bring you out on such a fool's errand, Watson," he said at
-last. "It is an interesting case, too, at the bottom of it."
-
-"I can make little of it," I confessed.
-
-"Well, it is quite evident that there are two men--more, perhaps, but
-at least two--who are determined for some reason to get at this fellow
-Blessington. I have no doubt in my mind that both on the first and on
-the second occasion that young man penetrated to Blessington's room,
-while his confederate, by an ingenious device, kept the doctor from
-interfering."
-
-"And the catalepsy?"
-
-"A fraudulent imitation, Watson, though I should hardly dare to hint as
-much to our specialist. It is a very easy complaint to imitate. I have
-done it myself."
-
-"And then?"
-
-"By the purest chance Blessington was out on each occasion. Their reason
-for choosing so unusual an hour for a consultation was obviously to
-insure that there should be no other patient in the waiting-room. It
-just happened, however, that this hour coincided with Blessington's
-constitutional, which seems to show that they were not very well
-acquainted with his daily routine. Of course, if they had been merely
-after plunder they would at least have made some attempt to search for
-it. Besides, I can read in a man's eye when it is his own skin that he
-is frightened for. It is inconceivable that this fellow could have made
-two such vindictive enemies as these appear to be without knowing of it.
-I hold it, therefore, to be certain that he does know who these men are,
-and that for reasons of his own he suppresses it. It is just possible
-that to-morrow may find him in a more communicative mood."
-
-"Is there not one alternative," I suggested, "grotesquely improbably,
-no doubt, but still just conceivable? Might the whole story of the
-cataleptic Russian and his son be a concoction of Dr. Trevelyan's, who
-has, for his own purposes, been in Blessington's rooms?"
-
-I saw in the gaslight that Holmes wore an amused smile at this brilliant
-departure of mine.
-
-"My dear fellow," said he, "it was one of the first solutions which
-occurred to me, but I was soon able to corroborate the doctor's tale.
-This young man has left prints upon the stair-carpet which made it quite
-superfluous for me to ask to see those which he had made in the room.
-When I tell you that his shoes were square-toed instead of being pointed
-like Blessington's, and were quite an inch and a third longer than the
-doctor's, you will acknowledge that there can be no doubt as to his
-individuality. But we may sleep on it now, for I shall be surprised if
-we do not hear something further from Brook Street in the morning."
-
-
-Sherlock Holmes's prophecy was soon fulfilled, and in a dramatic
-fashion. At half-past seven next morning, in the first glimmer of
-daylight, I found him standing by my bedside in his dressing-gown.
-
-"There's a brougham waiting for us, Watson," said he.
-
-"What's the matter, then?"
-
-"The Brook Street business."
-
-"Any fresh news?"
-
-"Tragic, but ambiguous," said he, pulling up the blind. "Look at this--a
-sheet from a note-book, with 'For God's sake come at once--P. T.,'
-scrawled upon it in pencil. Our friend, the doctor, was hard put to
-it when he wrote this. Come along, my dear fellow, for it's an urgent
-call."
-
-In a quarter of an hour or so we were back at the physician's house. He
-came running out to meet us with a face of horror.
-
-"Oh, such a business!" he cried, with his hands to his temples.
-
-"What then?"
-
-"Blessington has committed suicide!"
-
-Holmes whistled.
-
-"Yes, he hanged himself during the night."
-
-We had entered, and the doctor had preceded us into what was evidently
-his waiting-room.
-
-"I really hardly know what I am doing," he cried. "The police are
-already upstairs. It has shaken me most dreadfully."
-
-"When did you find it out?"
-
-"He has a cup of tea taken in to him early every morning. When the maid
-entered, about seven, there the unfortunate fellow was hanging in the
-middle of the room. He had tied his cord to the hook on which the heavy
-lamp used to hang, and he had jumped off from the top of the very box
-that he showed us yesterday."
-
-Holmes stood for a moment in deep thought.
-
-"With your permission," said he at last, "I should like to go upstairs
-and look into the matter."
-
-We both ascended, followed by the doctor.
-
-It was a dreadful sight which met us as we entered the bedroom door. I
-have spoken of the impression of flabbiness which this man Blessington
-conveyed. As he dangled from the hook it was exaggerated and intensified
-until he was scarce human in his appearance. The neck was drawn out
-like a plucked chicken's, making the rest of him seem the more obese and
-unnatural by the contrast. He was clad only in his long night-dress, and
-his swollen ankles and ungainly feet protruded starkly from beneath it.
-Beside him stood a smart-looking police-inspector, who was taking notes
-in a pocket-book.
-
-"Ah, Mr. Holmes," said he, heartily, as my friend entered, "I am
-delighted to see you."
-
-"Good-morning, Lanner," answered Holmes; "you won't think me an
-intruder, I am sure. Have you heard of the events which led up to this
-affair?"
-
-"Yes, I heard something of them."
-
-"Have you formed any opinion?"
-
-"As far as I can see, the man has been driven out of his senses by
-fright. The bed has been well slept in, you see. There's his impression
-deep enough. It's about five in the morning, you know, that suicides are
-most common. That would be about his time for hanging himself. It seems
-to have been a very deliberate affair."
-
-"I should say that he has been dead about three hours, judging by the
-rigidity of the muscles," said I.
-
-"Noticed anything peculiar about the room?" asked Holmes.
-
-"Found a screw-driver and some screws on the wash-hand stand. Seems to
-have smoked heavily during the night, too. Here are four cigar-ends that
-I picked out of the fireplace."
-
-"Hum!" said Holmes, "have you got his cigar-holder?"
-
-"No, I have seen none."
-
-"His cigar-case, then?"
-
-"Yes, it was in his coat-pocket."
-
-Holmes opened it and smelled the single cigar which it contained.
-
-"Oh, this is an Havana, and these others are cigars of the peculiar sort
-which are imported by the Dutch from their East Indian colonies. They
-are usually wrapped in straw, you know, and are thinner for their length
-than any other brand." He picked up the four ends and examined them with
-his pocket-lens.
-
-"Two of these have been smoked from a holder and two without," said he.
-"Two have been cut by a not very sharp knife, and two have had the ends
-bitten off by a set of excellent teeth. This is no suicide, Mr. Lanner.
-It is a very deeply planned and cold-blooded murder."
-
-"Impossible!" cried the inspector.
-
-"And why?"
-
-"Why should any one murder a man in so clumsy a fashion as by hanging
-him?"
-
-"That is what we have to find out."
-
-"How could they get in?"
-
-"Through the front door."
-
-"It was barred in the morning."
-
-"Then it was barred after them."
-
-"How do you know?"
-
-"I saw their traces. Excuse me a moment, and I may be able to give you
-some further information about it."
-
-He went over to the door, and turning the lock he examined it in his
-methodical way. Then he took out the key, which was on the inside, and
-inspected that also. The bed, the carpet, the chairs the mantelpiece,
-the dead body, and the rope were each in turn examined, until at last he
-professed himself satisfied, and with my aid and that of the inspector
-cut down the wretched object and laid it reverently under a sheet.
-
-"How about this rope?" he asked.
-
-"It is cut off this," said Dr. Trevelyan, drawing a large coil from
-under the bed. "He was morbidly nervous of fire, and always kept this
-beside him, so that he might escape by the window in case the stairs
-were burning."
-
-"That must have saved them trouble," said Holmes, thoughtfully. "Yes,
-the actual facts are very plain, and I shall be surprised if by the
-afternoon I cannot give you the reasons for them as well. I will take
-this photograph of Blessington, which I see upon the mantelpiece, as it
-may help me in my inquiries."
-
-"But you have told us nothing!" cried the doctor.
-
-"Oh, there can be no doubt as to the sequence of events," said Holmes.
-"There were three of them in it: the young man, the old man, and a
-third, to whose identity I have no clue. The first two, I need hardly
-remark, are the same who masqueraded as the Russian count and his son,
-so we can give a very full description of them. They were admitted by
-a confederate inside the house. If I might offer you a word of advice,
-Inspector, it would be to arrest the page, who, as I understand, has
-only recently come into your service, Doctor."
-
-"The young imp cannot be found," said Dr. Trevelyan; "the maid and the
-cook have just been searching for him."
-
-Holmes shrugged his shoulders.
-
-"He has played a not unimportant part in this drama," said he. "The
-three men having ascended the stairs, which they did on tiptoe, the
-elder man first, the younger man second, and the unknown man in the
-rear--"
-
-"My dear Holmes!" I ejaculated.
-
-"Oh, there could be no question as to the superimposing of the
-footmarks. I had the advantage of learning which was which last night.
-They ascended, then, to Mr. Blessington's room, the door of which they
-found to be locked. With the help of a wire, however, they forced round
-the key. Even without the lens you will perceive, by the scratches on
-this ward, where the pressure was applied.
-
-"On entering the room their first proceeding must have been to gag Mr.
-Blessington. He may have been asleep, or he may have been so paralyzed
-with terror as to have been unable to cry out. These walls are thick,
-and it is conceivable that his shriek, if he had time to utter one, was
-unheard.
-
-"Having secured him, it is evident to me that a consultation of some
-sort was held. Probably it was something in the nature of a judicial
-proceeding. It must have lasted for some time, for it was then that
-these cigars were smoked. The older man sat in that wicker chair; it
-was he who used the cigar-holder. The younger man sat over yonder; he
-knocked his ash off against the chest of drawers. The third fellow paced
-up and down. Blessington, I think, sat upright in the bed, but of that I
-cannot be absolutely certain.
-
-"Well, it ended by their taking Blessington and hanging him. The matter
-was so prearranged that it is my belief that they brought with them
-some sort of block or pulley which might serve as a gallows. That
-screw-driver and those screws were, as I conceive, for fixing it up.
-Seeing the hook, however they naturally saved themselves the trouble.
-Having finished their work they made off, and the door was barred behind
-them by their confederate."
-
-We had all listened with the deepest interest to this sketch of the
-night's doings, which Holmes had deduced from signs so subtle and minute
-that, even when he had pointed them out to us, we could scarcely follow
-him in his reasoning. The inspector hurried away on the instant to make
-inquiries about the page, while Holmes and I returned to Baker Street
-for breakfast.
-
-"I'll be back by three," said he, when we had finished our meal. "Both
-the inspector and the doctor will meet me here at that hour, and I hope
-by that time to have cleared up any little obscurity which the case may
-still present."
-
-
-Our visitors arrived at the appointed time, but it was a quarter to
-four before my friend put in an appearance. From his expression as he
-entered, however, I could see that all had gone well with him.
-
-"Any news, Inspector?"
-
-"We have got the boy, sir."
-
-"Excellent, and I have got the men."
-
-"You have got them!" we cried, all three.
-
-"Well, at least I have got their identity. This so-called Blessington
-is, as I expected, well known at headquarters, and so are his
-assailants. Their names are Biddle, Hayward, and Moffat."
-
-"The Worthingdon bank gang," cried the inspector.
-
-"Precisely," said Holmes.
-
-"Then Blessington must have been Sutton."
-
-"Exactly," said Holmes.
-
-"Why, that makes it as clear as crystal," said the inspector.
-
-But Trevelyan and I looked at each other in bewilderment.
-
-"You must surely remember the great Worthingdon bank business," said
-Holmes. "Five men were in it--these four and a fifth called Cartwright.
-Tobin, the care-taker, was murdered, and the thieves got away with seven
-thousand pounds. This was in 1875. They were all five arrested, but the
-evidence against them was by no means conclusive. This Blessington or
-Sutton, who was the worst of the gang, turned informer. On his evidence
-Cartwright was hanged and the other three got fifteen years apiece. When
-they got out the other day, which was some years before their full term,
-they set themselves, as you perceive, to hunt down the traitor and to
-avenge the death of their comrade upon him. Twice they tried to get at
-him and failed; a third time, you see, it came off. Is there anything
-further which I can explain, Dr. Trevelyan?"
-
-"I think you have made it all remarkable clear," said the doctor. "No
-doubt the day on which he was perturbed was the day when he had seen of
-their release in the newspapers."
-
-"Quite so. His talk about a burglary was the merest blind."
-
-"But why could he not tell you this?"
-
-"Well, my dear sir, knowing the vindictive character of his old
-associates, he was trying to hide his own identity from everybody as
-long as he could. His secret was a shameful one, and he could not bring
-himself to divulge it. However, wretch as he was, he was still living
-under the shield of British law, and I have no doubt, Inspector, that
-you will see that, though that shield may fail to guard, the sword of
-justice is still there to avenge."
-
-
-Such were the singular circumstances in connection with the Resident
-Patient and the Brook Street Doctor. From that night nothing has
-been seen of the three murderers by the police, and it is surmised
-at Scotland Yard that they were among the passengers of the ill-fated
-steamer Norah Creina, which was lost some years ago with all hands
-upon the Portuguese coast, some leagues to the north of Oporto. The
-proceedings against the page broke down for want of evidence, and the
-Brook Street Mystery, as it was called, has never until now been fully
-dealt with in any public print.
-
-
-
-
-Adventure IX. The Greek Interpreter
-
-
-During my long and intimate acquaintance with Mr. Sherlock Holmes I had
-never heard him refer to his relations, and hardly ever to his own early
-life. This reticence upon his part had increased the somewhat inhuman
-effect which he produced upon me, until sometimes I found myself
-regarding him as an isolated phenomenon, a brain without a heart, as
-deficient in human sympathy as he was pre-eminent in intelligence. His
-aversion to women and his disinclination to form new friendships were
-both typical of his unemotional character, but not more so than his
-complete suppression of every reference to his own people. I had come to
-believe that he was an orphan with no relatives living, but one day, to
-my very great surprise, he began to talk to me about his brother.
-
-It was after tea on a summer evening, and the conversation, which had
-roamed in a desultory, spasmodic fashion from golf clubs to the causes
-of the change in the obliquity of the ecliptic, came round at last
-to the question of atavism and hereditary aptitudes. The point under
-discussion was, how far any singular gift in an individual was due to
-his ancestry and how far to his own early training.
-
-"In your own case," said I, "from all that you have told me, it seems
-obvious that your faculty of observation and your peculiar facility for
-deduction are due to your own systematic training."
-
-"To some extent," he answered, thoughtfully. "My ancestors were country
-squires, who appear to have led much the same life as is natural to
-their class. But, none the less, my turn that way is in my veins, and
-may have come with my grandmother, who was the sister of Vernet, the
-French artist. Art in the blood is liable to take the strangest forms."
-
-"But how do you know that it is hereditary?"
-
-"Because my brother Mycroft possesses it in a larger degree than I do."
-
-This was news to me indeed. If there were another man with such singular
-powers in England, how was it that neither police nor public had heard
-of him? I put the question, with a hint that it was my companion's
-modesty which made him acknowledge his brother as his superior. Holmes
-laughed at my suggestion.
-
-"My dear Watson," said he, "I cannot agree with those who rank modesty
-among the virtues. To the logician all things should be seen exactly as
-they are, and to underestimate one's self is as much a departure from
-truth as to exaggerate one's own powers. When I say, therefore, that
-Mycroft has better powers of observation than I, you may take it that I
-am speaking the exact and literal truth."
-
-"Is he your junior?"
-
-"Seven years my senior."
-
-"How comes it that he is unknown?"
-
-"Oh, he is very well known in his own circle."
-
-"Where, then?"
-
-"Well, in the Diogenes Club, for example."
-
-I had never heard of the institution, and my face must have proclaimed
-as much, for Sherlock Holmes pulled out his watch.
-
-"The Diogenes Club is the queerest club in London, and Mycroft one of
-the queerest men. He's always there from quarter to five to twenty to
-eight. It's six now, so if you care for a stroll this beautiful evening
-I shall be very happy to introduce you to two curiosities."
-
-Five minutes later we were in the street, walking towards Regent's
-Circus.
-
-"You wonder," said my companion, "why it is that Mycroft does not use
-his powers for detective work. He is incapable of it."
-
-"But I thought you said--"
-
-"I said that he was my superior in observation and deduction. If the
-art of the detective began and ended in reasoning from an arm-chair, my
-brother would be the greatest criminal agent that ever lived. But he has
-no ambition and no energy. He will not even go out of his way to verify
-his own solutions, and would rather be considered wrong than take the
-trouble to prove himself right. Again and again I have taken a problem
-to him, and have received an explanation which has afterwards proved to
-be the correct one. And yet he was absolutely incapable of working out
-the practical points which must be gone into before a case could be laid
-before a judge or jury."
-
-"It is not his profession, then?"
-
-"By no means. What is to me a means of livelihood is to him the merest
-hobby of a dilettante. He has an extraordinary faculty for figures, and
-audits the books in some of the government departments. Mycroft lodges
-in Pall Mall, and he walks round the corner into Whitehall every morning
-and back every evening. From year's end to year's end he takes no other
-exercise, and is seen nowhere else, except only in the Diogenes Club,
-which is just opposite his rooms."
-
-"I cannot recall the name."
-
-"Very likely not. There are many men in London, you know, who, some from
-shyness, some from misanthropy, have no wish for the company of their
-fellows. Yet they are not averse to comfortable chairs and the latest
-periodicals. It is for the convenience of these that the Diogenes Club
-was started, and it now contains the most unsociable and unclubable men
-in town. No member is permitted to take the least notice of any
-other one. Save in the Stranger's Room, no talking is, under any
-circumstances, allowed, and three offences, if brought to the notice of
-the committee, render the talker liable to expulsion. My brother was one
-of the founders, and I have myself found it a very soothing atmosphere."
-
-We had reached Pall Mall as we talked, and were walking down it from the
-St. James's end. Sherlock Holmes stopped at a door some little distance
-from the Carlton, and, cautioning me not to speak, he led the way into
-the hall. Through the glass paneling I caught a glimpse of a large and
-luxurious room, in which a considerable number of men were sitting about
-and reading papers, each in his own little nook. Holmes showed me into a
-small chamber which looked out into Pall Mall, and then, leaving me for
-a minute, he came back with a companion whom I knew could only be his
-brother.
-
-Mycroft Holmes was a much larger and stouter man than Sherlock. His body
-was absolutely corpulent, but his face, though massive, had preserved
-something of the sharpness of expression which was so remarkable in that
-of his brother. His eyes, which were of a peculiarly light, watery gray,
-seemed to always retain that far-away, introspective look which I had
-only observed in Sherlock's when he was exerting his full powers.
-
-"I am glad to meet you, sir," said he, putting out a broad, fat hand
-like the flipper of a seal. "I hear of Sherlock everywhere since you
-became his chronicler. By the way, Sherlock, I expected to see you round
-last week, to consult me over that Manor House case. I thought you might
-be a little out of your depth."
-
-"No, I solved it," said my friend, smiling.
-
-"It was Adams, of course."
-
-"Yes, it was Adams."
-
-"I was sure of it from the first." The two sat down together in the
-bow-window of the club. "To any one who wishes to study mankind this is
-the spot," said Mycroft. "Look at the magnificent types! Look at these
-two men who are coming towards us, for example."
-
-"The billiard-marker and the other?"
-
-"Precisely. What do you make of the other?"
-
-The two men had stopped opposite the window. Some chalk marks over the
-waistcoat pocket were the only signs of billiards which I could see
-in one of them. The other was a very small, dark fellow, with his hat
-pushed back and several packages under his arm.
-
-"An old soldier, I perceive," said Sherlock.
-
-"And very recently discharged," remarked the brother.
-
-"Served in India, I see."
-
-"And a non-commissioned officer."
-
-"Royal Artillery, I fancy," said Sherlock.
-
-"And a widower."
-
-"But with a child."
-
-"Children, my dear boy, children."
-
-"Come," said I, laughing, "this is a little too much."
-
-"Surely," answered Holmes, "it is not hard to say that a man with that
-bearing, expression of authority, and sunbaked skin, is a soldier, is
-more than a private, and is not long from India."
-
-"That he has not left the service long is shown by his still wearing his
-ammunition boots, as they are called," observed Mycroft.
-
-"He had not the cavalry stride, yet he wore his hat on one side, as
-is shown by the lighter skin of that side of his brow. His weight is
-against his being a sapper. He is in the artillery."
-
-"Then, of course, his complete mourning shows that he has lost some one
-very dear. The fact that he is doing his own shopping looks as though
-it were his wife. He has been buying things for children, you perceive.
-There is a rattle, which shows that one of them is very young. The wife
-probably died in childbed. The fact that he has a picture-book under his
-arm shows that there is another child to be thought of."
-
-I began to understand what my friend meant when he said that his brother
-possessed even keener faculties that he did himself. He glanced across
-at me and smiled. Mycroft took snuff from a tortoise-shell box, and
-brushed away the wandering grains from his coat front with a large, red
-silk handkerchief.
-
-"By the way, Sherlock," said he, "I have had something quite after your
-own heart--a most singular problem--submitted to my judgment. I really
-had not the energy to follow it up save in a very incomplete fashion,
-but it gave me a basis for some pleasing speculation. If you would care
-to hear the facts--"
-
-"My dear Mycroft, I should be delighted."
-
-The brother scribbled a note upon a leaf of his pocket-book, and,
-ringing the bell, he handed it to the waiter.
-
-"I have asked Mr. Melas to step across," said he. "He lodges on the
-floor above me, and I have some slight acquaintance with him, which led
-him to come to me in his perplexity. Mr. Melas is a Greek by extraction,
-as I understand, and he is a remarkable linguist. He earns his living
-partly as interpreter in the law courts and partly by acting as guide to
-any wealthy Orientals who may visit the Northumberland Avenue hotels. I
-think I will leave him to tell his very remarkable experience in his own
-fashion."
-
-A few minutes later we were joined by a short, stout man whose olive
-face and coal-black hair proclaimed his Southern origin, though his
-speech was that of an educated Englishman. He shook hands eagerly
-with Sherlock Holmes, and his dark eyes sparkled with pleasure when he
-understood that the specialist was anxious to hear his story.
-
-"I do not believe that the police credit me--on my word, I do not," said
-he in a wailing voice. "Just because they have never heard of it before,
-they think that such a thing cannot be. But I know that I shall never
-be easy in my mind until I know what has become of my poor man with the
-sticking-plaster upon his face."
-
-"I am all attention," said Sherlock Holmes.
-
-"This is Wednesday evening," said Mr. Melas. "Well then, it was Monday
-night--only two days ago, you understand--that all this happened. I am
-an interpreter, as perhaps my neighbor there has told you. I interpret
-all languages--or nearly all--but as I am a Greek by birth and with a
-Grecian name, it is with that particular tongue that I am principally
-associated. For many years I have been the chief Greek interpreter in
-London, and my name is very well known in the hotels.
-
-"It happens not unfrequently that I am sent for at strange hours by
-foreigners who get into difficulties, or by travelers who arrive late
-and wish my services. I was not surprised, therefore, on Monday night
-when a Mr. Latimer, a very fashionably dressed young man, came up to my
-rooms and asked me to accompany him in a cab which was waiting at the
-door. A Greek friend had come to see him upon business, he said, and
-as he could speak nothing but his own tongue, the services of an
-interpreter were indispensable. He gave me to understand that his house
-was some little distance off, in Kensington, and he seemed to be in a
-great hurry, bustling me rapidly into the cab when we had descended to
-the street.
-
-"I say into the cab, but I soon became doubtful as to whether it was not
-a carriage in which I found myself. It was certainly more roomy than
-the ordinary four-wheeled disgrace to London, and the fittings, though
-frayed, were of rich quality. Mr. Latimer seated himself opposite to me
-and we started off through Charing Cross and up the Shaftesbury Avenue.
-We had come out upon Oxford Street and I had ventured some remark as to
-this being a roundabout way to Kensington, when my words were arrested
-by the extraordinary conduct of my companion.
-
-"He began by drawing a most formidable-looking bludgeon loaded with lead
-from his pocket, and switching it backward and forward several times,
-as if to test its weight and strength. Then he placed it without a word
-upon the seat beside him. Having done this, he drew up the windows on
-each side, and I found to my astonishment that they were covered with
-paper so as to prevent my seeing through them.
-
-"'I am sorry to cut off your view, Mr. Melas,' said he. 'The fact is
-that I have no intention that you should see what the place is to which
-we are driving. It might possibly be inconvenient to me if you could
-find your way there again.'
-
-"As you can imagine, I was utterly taken aback by such an address. My
-companion was a powerful, broad-shouldered young fellow, and, apart from
-the weapon, I should not have had the slightest chance in a struggle
-with him.
-
-"'This is very extraordinary conduct, Mr. Latimer,' I stammered. 'You
-must be aware that what you are doing is quite illegal.'
-
-"'It is somewhat of a liberty, no doubt,' said he, 'but we'll make it
-up to you. I must warn you, however, Mr. Melas, that if at any time
-to-night you attempt to raise an alarm or do anything which is against
-my interests, you will find it a very serious thing. I beg you to
-remember that no one knows where you are, and that, whether you are in
-this carriage or in my house, you are equally in my power.'
-
-"His words were quiet, but he had a rasping way of saying them which
-was very menacing. I sat in silence wondering what on earth could be
-his reason for kidnapping me in this extraordinary fashion. Whatever it
-might be, it was perfectly clear that there was no possible use in my
-resisting, and that I could only wait to see what might befall.
-
-"For nearly two hours we drove without my having the least clue as to
-where we were going. Sometimes the rattle of the stones told of a paved
-causeway, and at others our smooth, silent course suggested asphalt;
-but, save by this variation in sound, there was nothing at all which
-could in the remotest way help me to form a guess as to where we were.
-The paper over each window was impenetrable to light, and a blue curtain
-was drawn across the glass work in front. It was a quarter-past seven
-when we left Pall Mall, and my watch showed me that it was ten minutes
-to nine when we at last came to a standstill. My companion let down
-the window, and I caught a glimpse of a low, arched doorway with a lamp
-burning above it. As I was hurried from the carriage it swung open, and
-I found myself inside the house, with a vague impression of a lawn
-and trees on each side of me as I entered. Whether these were private
-grounds, however, or bona-fide country was more than I could possibly
-venture to say.
-
-"There was a colored gas-lamp inside which was turned so low that I
-could see little save that the hall was of some size and hung with
-pictures. In the dim light I could make out that the person who had
-opened the door was a small, mean-looking, middle-aged man with rounded
-shoulders. As he turned towards us the glint of the light showed me that
-he was wearing glasses.
-
-"'Is this Mr. Melas, Harold?' said he.
-
-"'Yes.'
-
-"'Well done, well done! No ill-will, Mr. Melas, I hope, but we could not
-get on without you. If you deal fair with us you'll not regret it,
-but if you try any tricks, God help you!' He spoke in a nervous, jerky
-fashion, and with little giggling laughs in between, but somehow he
-impressed me with fear more than the other.
-
-"'What do you want with me?' I asked.
-
-"'Only to ask a few questions of a Greek gentleman who is visiting us,
-and to let us have the answers. But say no more than you are told to
-say, or--' here came the nervous giggle again--'you had better never
-have been born.'
-
-"As he spoke he opened a door and showed the way into a room which
-appeared to be very richly furnished, but again the only light was
-afforded by a single lamp half-turned down. The chamber was certainly
-large, and the way in which my feet sank into the carpet as I stepped
-across it told me of its richness. I caught glimpses of velvet chairs, a
-high white marble mantel-piece, and what seemed to be a suit of Japanese
-armor at one side of it. There was a chair just under the lamp, and the
-elderly man motioned that I should sit in it. The younger had left
-us, but he suddenly returned through another door, leading with him
-a gentleman clad in some sort of loose dressing-gown who moved slowly
-towards us. As he came into the circle of dim light which enables me to
-see him more clearly I was thrilled with horror at his appearance. He
-was deadly pale and terribly emaciated, with the protruding, brilliant
-eyes of a man whose spirit was greater than his strength. But what
-shocked me more than any signs of physical weakness was that his face
-was grotesquely criss-crossed with sticking-plaster, and that one large
-pad of it was fastened over his mouth.
-
-"'Have you the slate, Harold?' cried the older man, as this strange
-being fell rather than sat down into a chair. 'Are his hands loose? Now,
-then, give him the pencil. You are to ask the questions, Mr. Melas, and
-he will write the answers. Ask him first of all whether he is prepared
-to sign the papers?'
-
-"The man's eyes flashed fire.
-
-"'Never!' he wrote in Greek upon the slate.
-
-"'On no condition?' I asked, at the bidding of our tyrant.
-
-"'Only if I see her married in my presence by a Greek priest whom I
-know.'
-
-"The man giggled in his venomous way.
-
-"'You know what awaits you, then?'
-
-"'I care nothing for myself.'
-
-"These are samples of the questions and answers which made up our
-strange half-spoken, half-written conversation. Again and again I had to
-ask him whether he would give in and sign the documents. Again and again
-I had the same indignant reply. But soon a happy thought came to me. I
-took to adding on little sentences of my own to each question, innocent
-ones at first, to test whether either of our companions knew anything
-of the matter, and then, as I found that they showed no signs I played a
-more dangerous game. Our conversation ran something like this:
-
-"'You can do no good by this obstinacy. Who are you?'
-
-"'I care not. I am a stranger in London.'
-
-"'Your fate will be upon your own head. How long have you been here?'
-
-"'Let it be so. Three weeks.'
-
-"'The property can never be yours. What ails you?'
-
-"'It shall not go to villains. They are starving me.'
-
-"'You shall go free if you sign. What house is this?'
-
-"'I will never sign. I do not know.'
-
-"'You are not doing her any service. What is your name?'
-
-"'Let me hear her say so. Kratides.'
-
-"'You shall see her if you sign. Where are you from?'
-
-"'Then I shall never see her. Athens.'
-
-"Another five minutes, Mr. Holmes, and I should have wormed out the
-whole story under their very noses. My very next question might have
-cleared the matter up, but at that instant the door opened and a woman
-stepped into the room. I could not see her clearly enough to know more
-than that she was tall and graceful, with black hair, and clad in some
-sort of loose white gown.
-
-"'Harold,' said she, speaking English with a broken accent. 'I could not
-stay away longer. It is so lonely up there with only--Oh, my God, it is
-Paul!'
-
-"These last words were in Greek, and at the same instant the man with
-a convulsive effort tore the plaster from his lips, and screaming out
-'Sophy! Sophy!' rushed into the woman's arms. Their embrace was but for
-an instant, however, for the younger man seized the woman and pushed
-her out of the room, while the elder easily overpowered his emaciated
-victim, and dragged him away through the other door. For a moment I was
-left alone in the room, and I sprang to my feet with some vague idea
-that I might in some way get a clue to what this house was in which I
-found myself. Fortunately, however, I took no steps, for looking up I
-saw that the older man was standing in the door-way with his eyes fixed
-upon me.
-
-"'That will do, Mr. Melas,' said he. 'You perceive that we have taken
-you into our confidence over some very private business. We should not
-have troubled you, only that our friend who speaks Greek and who began
-these negotiations has been forced to return to the East. It was
-quite necessary for us to find some one to take his place, and we were
-fortunate in hearing of your powers.'
-
-"I bowed.
-
-"'There are five sovereigns here,' said he, walking up to me, 'which
-will, I hope, be a sufficient fee. But remember,' he added, tapping me
-lightly on the chest and giggling, 'if you speak to a human soul about
-this--one human soul, mind--well, may God have mercy upon your soul!"
-
-"I cannot tell you the loathing and horror with which this
-insignificant-looking man inspired me. I could see him better now as the
-lamp-light shone upon him. His features were peaky and sallow, and his
-little pointed beard was thready and ill-nourished. He pushed his face
-forward as he spoke and his lips and eyelids were continually twitching
-like a man with St. Vitus's dance. I could not help thinking that his
-strange, catchy little laugh was also a symptom of some nervous malady.
-The terror of his face lay in his eyes, however, steel gray, and
-glistening coldly with a malignant, inexorable cruelty in their depths.
-
-"'We shall know if you speak of this,' said he. 'We have our own means
-of information. Now you will find the carriage waiting, and my friend
-will see you on your way.'
-
-"I was hurried through the hall and into the vehicle, again obtaining
-that momentary glimpse of trees and a garden. Mr. Latimer followed
-closely at my heels, and took his place opposite to me without a word.
-In silence we again drove for an interminable distance with the windows
-raised, until at last, just after midnight, the carriage pulled up.
-
-"'You will get down here, Mr. Melas,' said my companion. 'I am sorry
-to leave you so far from your house, but there is no alternative. Any
-attempt upon your part to follow the carriage can only end in injury to
-yourself.'
-
-"He opened the door as he spoke, and I had hardly time to spring out
-when the coachman lashed the horse and the carriage rattled away. I
-looked around me in astonishment. I was on some sort of a heathy common
-mottled over with dark clumps of furze-bushes. Far away stretched a
-line of houses, with a light here and there in the upper windows. On the
-other side I saw the red signal-lamps of a railway.
-
-"The carriage which had brought me was already out of sight. I stood
-gazing round and wondering where on earth I might be, when I saw some
-one coming towards me in the darkness. As he came up to me I made out
-that he was a railway porter.
-
-"'Can you tell me what place this is?' I asked.
-
-"'Wandsworth Common,' said he.
-
-"'Can I get a train into town?'
-
-"'If you walk on a mile or so to Clapham Junction,' said he, 'you'll
-just be in time for the last to Victoria.'
-
-"So that was the end of my adventure, Mr. Holmes. I do not know where I
-was, nor whom I spoke with, nor anything save what I have told you. But
-I know that there is foul play going on, and I want to help that unhappy
-man if I can. I told the whole story to Mr. Mycroft Holmes next morning,
-and subsequently to the police."
-
-We all sat in silence for some little time after listening to this
-extraordinary narrative. Then Sherlock looked across at his brother.
-
-"Any steps?" he asked.
-
-Mycroft picked up the Daily News, which was lying on the side-table.
-
-"'Anybody supplying any information to the whereabouts of a Greek
-gentleman named Paul Kratides, from Athens, who is unable to speak
-English, will be rewarded. A similar reward paid to any one giving
-information about a Greek lady whose first name is Sophy. X 2473.' That
-was in all the dailies. No answer."
-
-"How about the Greek Legation?"
-
-"I have inquired. They know nothing."
-
-"A wire to the head of the Athens police, then?"
-
-"Sherlock has all the energy of the family," said Mycroft, turning to
-me. "Well, you take the case up by all means, and let me know if you do
-any good."
-
-"Certainly," answered my friend, rising from his chair. "I'll let you
-know, and Mr. Melas also. In the meantime, Mr. Melas, I should certainly
-be on my guard, if I were you, for of course they must know through
-these advertisements that you have betrayed them."
-
-As we walked home together, Holmes stopped at a telegraph office and
-sent off several wires.
-
-"You see, Watson," he remarked, "our evening has been by no means
-wasted. Some of my most interesting cases have come to me in this way
-through Mycroft. The problem which we have just listened to, although
-it can admit of but one explanation, has still some distinguishing
-features."
-
-"You have hopes of solving it?"
-
-"Well, knowing as much as we do, it will be singular indeed if we fail
-to discover the rest. You must yourself have formed some theory which
-will explain the facts to which we have listened."
-
-"In a vague way, yes."
-
-"What was your idea, then?"
-
-"It seemed to me to be obvious that this Greek girl had been carried off
-by the young Englishman named Harold Latimer."
-
-"Carried off from where?"
-
-"Athens, perhaps."
-
-Sherlock Holmes shook his head. "This young man could not talk a word of
-Greek. The lady could talk English fairly well. Inference--that she had
-been in England some little time, but he had not been in Greece."
-
-"Well, then, we will presume that she had come on a visit to England,
-and that this Harold had persuaded her to fly with him."
-
-"That is more probable."
-
-"Then the brother--for that, I fancy, must be the relationship--comes
-over from Greece to interfere. He imprudently puts himself into the
-power of the young man and his older associate. They seize him and use
-violence towards him in order to make him sign some papers to make over
-the girl's fortune--of which he may be trustee--to them. This he refuses
-to do. In order to negotiate with him they have to get an interpreter,
-and they pitch upon this Mr. Melas, having used some other one before.
-The girl is not told of the arrival of her brother, and finds it out by
-the merest accident."
-
-"Excellent, Watson!" cried Holmes. "I really fancy that you are not far
-from the truth. You see that we hold all the cards, and we have only to
-fear some sudden act of violence on their part. If they give us time we
-must have them."
-
-"But how can we find where this house lies?"
-
-"Well, if our conjecture is correct and the girl's name is or was Sophy
-Kratides, we should have no difficulty in tracing her. That must be our
-main hope, for the brother is, of course, a complete stranger. It is
-clear that some time has elapsed since this Harold established these
-relations with the girl--some weeks, at any rate--since the brother in
-Greece has had time to hear of it and come across. If they have been
-living in the same place during this time, it is probable that we shall
-have some answer to Mycroft's advertisement."
-
-We had reached our house in Baker Street while we had been talking.
-Holmes ascended the stair first, and as he opened the door of our room
-he gave a start of surprise. Looking over his shoulder, I was equally
-astonished. His brother Mycroft was sitting smoking in the arm-chair.
-
-"Come in, Sherlock! Come in, sir," said he blandly, smiling at our
-surprised faces. "You don't expect such energy from me, do you,
-Sherlock? But somehow this case attracts me."
-
-"How did you get here?"
-
-"I passed you in a hansom."
-
-"There has been some new development?"
-
-"I had an answer to my advertisement."
-
-"Ah!"
-
-"Yes, it came within a few minutes of your leaving."
-
-"And to what effect?"
-
-Mycroft Holmes took out a sheet of paper.
-
-"Here it is," said he, "written with a J pen on royal cream paper by a
-middle-aged man with a weak constitution. 'Sir,' he says, 'in answer to
-your advertisement of to-day's date, I beg to inform you that I know the
-young lady in question very well. If you should care to call upon me I
-could give you some particulars as to her painful history. She is living
-at present at The Myrtles, Beckenham. Yours faithfully, J. Davenport.'
-
-"He writes from Lower Brixton," said Mycroft Holmes. "Do you not think
-that we might drive to him now, Sherlock, and learn these particulars?"
-
-"My dear Mycroft, the brother's life is more valuable than the sister's
-story. I think we should call at Scotland Yard for Inspector Gregson,
-and go straight out to Beckenham. We know that a man is being done to
-death, and every hour may be vital."
-
-"Better pick up Mr. Melas on our way," I suggested. "We may need an
-interpreter."
-
-"Excellent," said Sherlock Holmes. "Send the boy for a four-wheeler, and
-we shall be off at once." He opened the table-drawer as he spoke, and I
-noticed that he slipped his revolver into his pocket. "Yes," said he, in
-answer to my glance; "I should say from what we have heard, that we are
-dealing with a particularly dangerous gang."
-
-It was almost dark before we found ourselves in Pall Mall, at the rooms
-of Mr. Melas. A gentleman had just called for him, and he was gone.
-
-"Can you tell me where?" asked Mycroft Holmes.
-
-"I don't know, sir," answered the woman who had opened the door; "I only
-know that he drove away with the gentleman in a carriage."
-
-"Did the gentleman give a name?"
-
-"No, sir."
-
-"He wasn't a tall, handsome, dark young man?"
-
-"Oh, no, sir. He was a little gentleman, with glasses, thin in the face,
-but very pleasant in his ways, for he was laughing all the time that he
-was talking."
-
-"Come along!" cried Sherlock Holmes, abruptly. "This grows serious,"
-he observed, as we drove to Scotland Yard. "These men have got hold of
-Melas again. He is a man of no physical courage, as they are well
-aware from their experience the other night. This villain was able to
-terrorize him the instant that he got into his presence. No doubt
-they want his professional services, but, having used him, they may be
-inclined to punish him for what they will regard as his treachery."
-
-Our hope was that, by taking train, we might get to Beckenham as soon
-or sooner than the carriage. On reaching Scotland Yard, however, it was
-more than an hour before we could get Inspector Gregson and comply with
-the legal formalities which would enable us to enter the house. It was a
-quarter to ten before we reached London Bridge, and half past before the
-four of us alighted on the Beckenham platform. A drive of half a mile
-brought us to The Myrtles--a large, dark house standing back from the
-road in its own grounds. Here we dismissed our cab, and made our way up
-the drive together.
-
-"The windows are all dark," remarked the inspector. "The house seems
-deserted."
-
-"Our birds are flown and the nest empty," said Holmes.
-
-"Why do you say so?"
-
-"A carriage heavily loaded with luggage has passed out during the last
-hour."
-
-The inspector laughed. "I saw the wheel-tracks in the light of the
-gate-lamp, but where does the luggage come in?"
-
-"You may have observed the same wheel-tracks going the other way. But
-the outward-bound ones were very much deeper--so much so that we can
-say for a certainty that there was a very considerable weight on the
-carriage."
-
-"You get a trifle beyond me there," said the inspector, shrugging his
-shoulder. "It will not be an easy door to force, but we will try if we
-cannot make some one hear us."
-
-He hammered loudly at the knocker and pulled at the bell, but without
-any success. Holmes had slipped away, but he came back in a few minutes.
-
-"I have a window open," said he.
-
-"It is a mercy that you are on the side of the force, and not against
-it, Mr. Holmes," remarked the inspector, as he noted the clever way in
-which my friend had forced back the catch. "Well, I think that under the
-circumstances we may enter without an invitation."
-
-One after the other we made our way into a large apartment, which was
-evidently that in which Mr. Melas had found himself. The inspector
-had lit his lantern, and by its light we could see the two doors, the
-curtain, the lamp, and the suit of Japanese mail as he had described
-them. On the table lay two glasses, and empty brandy-bottle, and the
-remains of a meal.
-
-"What is that?" asked Holmes, suddenly.
-
-We all stood still and listened. A low moaning sound was coming from
-somewhere over our heads. Holmes rushed to the door and out into the
-hall. The dismal noise came from upstairs. He dashed up, the inspector
-and I at his heels, while his brother Mycroft followed as quickly as his
-great bulk would permit.
-
-Three doors faced up upon the second floor, and it was from the central
-of these that the sinister sounds were issuing, sinking sometimes into a
-dull mumble and rising again into a shrill whine. It was locked, but the
-key had been left on the outside. Holmes flung open the door and rushed
-in, but he was out again in an instant, with his hand to his throat.
-
-"It's charcoal," he cried. "Give it time. It will clear."
-
-Peering in, we could see that the only light in the room came from a
-dull blue flame which flickered from a small brass tripod in the centre.
-It threw a livid, unnatural circle upon the floor, while in the shadows
-beyond we saw the vague loom of two figures which crouched against the
-wall. From the open door there reeked a horrible poisonous exhalation
-which set us gasping and coughing. Holmes rushed to the top of the
-stairs to draw in the fresh air, and then, dashing into the room, he
-threw up the window and hurled the brazen tripod out into the garden.
-
-"We can enter in a minute," he gasped, darting out again. "Where is a
-candle? I doubt if we could strike a match in that atmosphere. Hold the
-light at the door and we shall get them out, Mycroft, now!"
-
-With a rush we got to the poisoned men and dragged them out into the
-well-lit hall. Both of them were blue-lipped and insensible, with
-swollen, congested faces and protruding eyes. Indeed, so distorted were
-their features that, save for his black beard and stout figure, we might
-have failed to recognize in one of them the Greek interpreter who had
-parted from us only a few hours before at the Diogenes Club. His hands
-and feet were securely strapped together, and he bore over one eye
-the marks of a violent blow. The other, who was secured in a similar
-fashion, was a tall man in the last stage of emaciation, with several
-strips of sticking-plaster arranged in a grotesque pattern over his
-face. He had ceased to moan as we laid him down, and a glance showed
-me that for him at least our aid had come too late. Mr. Melas, however,
-still lived, and in less than an hour, with the aid of ammonia and
-brandy I had the satisfaction of seeing him open his eyes, and of
-knowing that my hand had drawn him back from that dark valley in which
-all paths meet.
-
-It was a simple story which he had to tell, and one which did but
-confirm our own deductions. His visitor, on entering his rooms, had
-drawn a life-preserver from his sleeve, and had so impressed him with
-the fear of instant and inevitable death that he had kidnapped him for
-the second time. Indeed, it was almost mesmeric, the effect which this
-giggling ruffian had produced upon the unfortunate linguist, for he
-could not speak of him save with trembling hands and a blanched cheek.
-He had been taken swiftly to Beckenham, and had acted as interpreter in
-a second interview, even more dramatic than the first, in which the two
-Englishmen had menaced their prisoner with instant death if he did not
-comply with their demands. Finally, finding him proof against every
-threat, they had hurled him back into his prison, and after
-reproaching Melas with his treachery, which appeared from the newspaper
-advertisement, they had stunned him with a blow from a stick, and he
-remembered nothing more until he found us bending over him.
-
-And this was the singular case of the Grecian Interpreter, the
-explanation of which is still involved in some mystery. We were able
-to find out, by communicating with the gentleman who had answered the
-advertisement, that the unfortunate young lady came of a wealthy Grecian
-family, and that she had been on a visit to some friends in England.
-While there she had met a young man named Harold Latimer, who had
-acquired an ascendancy over he and had eventually persuaded her to fly
-with him. Her friends, shocked at the event, had contented themselves
-with informing her brother at Athens, and had then washed their hands
-of the matter. The brother, on his arrival in England, had imprudently
-placed himself in the power of Latimer and of his associate, whose name
-was Wilson Kemp--a man of the foulest antecedents. These two, finding
-that through his ignorance of the language he was helpless in their
-hands, had kept him a prisoner, and had endeavored by cruelty and
-starvation to make him sign away his own and his sister's property. They
-had kept him in the house without the girl's knowledge, and the plaster
-over the face had been for the purpose of making recognition difficult
-in case she should ever catch a glimpse of him. Her feminine perception,
-however, had instantly seen through the disguise when, on the occasion
-of the interpreter's visit, she had seen him for the first time. The
-poor girl, however, was herself a prisoner, for there was no one about
-the house except the man who acted as coachman, and his wife, both of
-whom were tools of the conspirators. Finding that their secret was out,
-and that their prisoner was not to be coerced, the two villains with the
-girl had fled away at a few hours' notice from the furnished house which
-they had hired, having first, as they thought, taken vengeance both upon
-the man who had defied and the one who had betrayed them.
-
-Months afterwards a curious newspaper cutting reached us from
-Buda-Pesth. It told how two Englishmen who had been traveling with a
-woman had met with a tragic end. They had each been stabbed, it seems,
-and the Hungarian police were of opinion that they had quarreled and had
-inflicted mortal injuries upon each other. Holmes, however, is, I fancy,
-of a different way of thinking, and holds to this day that, if one could
-find the Grecian girl, one might learn how the wrongs of herself and her
-brother came to be avenged.
-
-
-
-
-Adventure X. The Naval Treaty
-
-
-The July which immediately succeeded my marriage was made memorable
-by three cases of interest, in which I had the privilege of being
-associated with Sherlock Holmes and of studying his methods. I find them
-recorded in my notes under the headings of "The Adventure of the Second
-Stain," "The Adventure of the Naval Treaty," and "The Adventure of the
-Tired Captain." The first of these, however, deals with interest of such
-importance and implicates so many of the first families in the kingdom
-that for many years it will be impossible to make it public. No case,
-however, in which Holmes was engaged has ever illustrated the value
-of his analytical methods so clearly or has impressed those who were
-associated with him so deeply. I still retain an almost verbatim report
-of the interview in which he demonstrated the true facts of the case
-to Monsieur Dubugue of the Paris police, and Fritz von Waldbaum, the
-well-known specialist of Dantzig, both of whom had wasted their energies
-upon what proved to be side-issues. The new century will have come,
-however, before the story can be safely told. Meanwhile I pass on to
-the second on my list, which promised also at one time to be of national
-importance, and was marked by several incidents which give it a quite
-unique character.
-
-During my school-days I had been intimately associated with a lad named
-Percy Phelps, who was of much the same age as myself, though he was two
-classes ahead of me. He was a very brilliant boy, and carried away every
-prize which the school had to offer, finished his exploits by winning
-a scholarship which sent him on to continue his triumphant career at
-Cambridge. He was, I remember, extremely well connected, and even when
-we were all little boys together we knew that his mother's brother
-was Lord Holdhurst, the great conservative politician. This gaudy
-relationship did him little good at school. On the contrary, it seemed
-rather a piquant thing to us to chevy him about the playground and hit
-him over the shins with a wicket. But it was another thing when he
-came out into the world. I heard vaguely that his abilities and the
-influences which he commanded had won him a good position at the Foreign
-Office, and then he passed completely out of my mind until the following
-letter recalled his existence:
-
-
-Briarbrae, Woking. My dear Watson,--I have no doubt that you can
-remember "Tadpole" Phelps, who was in the fifth form when you were in
-the third. It is possible even that you may have heard that through my
-uncle's influence I obtained a good appointment at the Foreign Office,
-and that I was in a situation of trust and honor until a horrible
-misfortune came suddenly to blast my career.
-
-There is no use writing of the details of that dreadful event. In the
-event of your acceding to my request it is probably that I shall have
-to narrate them to you. I have only just recovered from nine weeks of
-brain-fever, and am still exceedingly weak. Do you think that you could
-bring your friend Mr. Holmes down to see me? I should like to have his
-opinion of the case, though the authorities assure me that nothing more
-can be done. Do try to bring him down, and as soon as possible. Every
-minute seems an hour while I live in this state of horrible suspense.
-Assure him that if I have not asked his advice sooner it was not because
-I did not appreciate his talents, but because I have been off my head
-ever since the blow fell. Now I am clear again, though I dare not think
-of it too much for fear of a relapse. I am still so weak that I have to
-write, as you see, by dictating. Do try to bring him.
-
-Your old school-fellow,
-
-Percy Phelps.
-
-
-There was something that touched me as I read this letter, something
-pitiable in the reiterated appeals to bring Holmes. So moved was I
-that even had it been a difficult matter I should have tried it, but
-of course I knew well that Holmes loved his art, so that he was ever
-as ready to bring his aid as his client could be to receive it. My wife
-agreed with me that not a moment should be lost in laying the matter
-before him, and so within an hour of breakfast-time I found myself back
-once more in the old rooms in Baker Street.
-
-Holmes was seated at his side-table clad in his dressing-gown, and
-working hard over a chemical investigation. A large curved retort
-was boiling furiously in the bluish flame of a Bunsen burner, and the
-distilled drops were condensing into a two-litre measure. My friend
-hardly glanced up as I entered, and I, seeing that his investigation
-must be of importance, seated myself in an arm-chair and waited. He
-dipped into this bottle or that, drawing out a few drops of each with
-his glass pipette, and finally brought a test-tube containing a solution
-over to the table. In his right hand he held a slip of litmus-paper.
-
-"You come at a crisis, Watson," said he. "If this paper remains blue,
-all is well. If it turns red, it means a man's life." He dipped it into
-the test-tube and it flushed at once into a dull, dirty crimson. "Hum!
-I thought as much!" he cried. "I will be at your service in an instant,
-Watson. You will find tobacco in the Persian slipper." He turned to his
-desk and scribbled off several telegrams, which were handed over to the
-page-boy. Then he threw himself down into the chair opposite, and drew
-up his knees until his fingers clasped round his long, thin shins.
-
-"A very commonplace little murder," said he. "You've got something
-better, I fancy. You are the stormy petrel of crime, Watson. What is
-it?"
-
-I handed him the letter, which he read with the most concentrated
-attention.
-
-"It does not tell us very much, does it?" he remarked, as he handed it
-back to me.
-
-"Hardly anything."
-
-"And yet the writing is of interest."
-
-"But the writing is not his own."
-
-"Precisely. It is a woman's."
-
-"A man's surely," I cried.
-
-"No, a woman's, and a woman of rare character. You see, at the
-commencement of an investigation it is something to know that your
-client is in close contact with some one who, for good or evil, has an
-exceptional nature. My interest is already awakened in the case. If you
-are ready we will start at once for Woking, and see this diplomatist who
-is in such evil case, and the lady to whom he dictates his letters."
-
-We were fortunate enough to catch an early train at Waterloo, and in
-a little under an hour we found ourselves among the fir-woods and
-the heather of Woking. Briarbrae proved to be a large detached house
-standing in extensive grounds within a few minutes' walk of the station.
-On sending in our cards we were shown into an elegantly appointed
-drawing-room, where we were joined in a few minutes by a rather stout
-man who received us with much hospitality. His age may have been nearer
-forty than thirty, but his cheeks were so ruddy and his eyes so merry
-that he still conveyed the impression of a plump and mischievous boy.
-
-"I am so glad that you have come," said he, shaking our hands with
-effusion. "Percy has been inquiring for you all morning. Ah, poor old
-chap, he clings to any straw! His father and his mother asked me to see
-you, for the mere mention of the subject is very painful to them."
-
-"We have had no details yet," observed Holmes. "I perceive that you are
-not yourself a member of the family."
-
-Our acquaintance looked surprised, and then, glancing down, he began to
-laugh.
-
-"Of course you saw the J H monogram on my locket," said he. "For a
-moment I thought you had done something clever. Joseph Harrison is my
-name, and as Percy is to marry my sister Annie I shall at least be a
-relation by marriage. You will find my sister in his room, for she has
-nursed him hand-and-foot this two months back. Perhaps we'd better go in
-at once, for I know how impatient he is."
-
-The chamber in which we were shown was on the same floor as the
-drawing-room. It was furnished partly as a sitting and partly as a
-bedroom, with flowers arranged daintily in every nook and corner. A
-young man, very pale and worn, was lying upon a sofa near the open
-window, through which came the rich scent of the garden and the balmy
-summer air. A woman was sitting beside him, who rose as we entered.
-
-"Shall I leave, Percy?" she asked.
-
-He clutched her hand to detain her. "How are you, Watson?" said he,
-cordially. "I should never have known you under that moustache, and I
-dare say you would not be prepared to swear to me. This I presume is
-your celebrated friend, Mr. Sherlock Holmes?"
-
-I introduced him in a few words, and we both sat down. The stout young
-man had left us, but his sister still remained with her hand in that of
-the invalid. She was a striking-looking woman, a little short and
-thick for symmetry, but with a beautiful olive complexion, large, dark,
-Italian eyes, and a wealth of deep black hair. Her rich tints made the
-white face of her companion the more worn and haggard by the contrast.
-
-"I won't waste your time," said he, raising himself upon the sofa.
-"I'll plunge into the matter without further preamble. I was a happy
-and successful man, Mr. Holmes, and on the eve of being married, when a
-sudden and dreadful misfortune wrecked all my prospects in life.
-
-"I was, as Watson may have told you, in the Foreign Office, and
-through the influences of my uncle, Lord Holdhurst, I rose rapidly to
-a responsible position. When my uncle became foreign minister in this
-administration he gave me several missions of trust, and as I always
-brought them to a successful conclusion, he came at last to have the
-utmost confidence in my ability and tact.
-
-"Nearly ten weeks ago--to be more accurate, on the 23d of May--he called
-me into his private room, and, after complimenting me on the good work
-which I had done, he informed me that he had a new commission of trust
-for me to execute.
-
-"'This,' said he, taking a gray roll of paper from his bureau, 'is the
-original of that secret treaty between England and Italy of which, I
-regret to say, some rumors have already got into the public press. It is
-of enormous importance that nothing further should leak out. The French
-or the Russian embassy would pay an immense sum to learn the contents
-of these papers. They should not leave my bureau were it not that it
-is absolutely necessary to have them copied. You have a desk in your
-office?"
-
-"'Yes, sir.'
-
-"'Then take the treaty and lock it up there. I shall give directions
-that you may remain behind when the others go, so that you may copy
-it at your leisure without fear of being overlooked. When you have
-finished, relock both the original and the draft in the desk, and hand
-them over to me personally to-morrow morning.'
-
-"I took the papers and--"
-
-"Excuse me an instant," said Holmes. "Were you alone during this
-conversation?"
-
-"Absolutely."
-
-"In a large room?"
-
-"Thirty feet each way."
-
-"In the centre?"
-
-"Yes, about it."
-
-"And speaking low?"
-
-"My uncle's voice is always remarkably low. I hardly spoke at all."
-
-"Thank you," said Holmes, shutting his eyes; "pray go on."
-
-"I did exactly what he indicated, and waited until the other clerks had
-departed. One of them in my room, Charles Gorot, had some arrears
-of work to make up, so I left him there and went out to dine. When I
-returned he was gone. I was anxious to hurry my work, for I knew that
-Joseph--the Mr. Harrison whom you saw just now--was in town, and that he
-would travel down to Woking by the eleven-o'clock train, and I wanted if
-possible to catch it.
-
-"When I came to examine the treaty I saw at once that it was of such
-importance that my uncle had been guilty of no exaggeration in what
-he had said. Without going into details, I may say that it defined the
-position of Great Britain towards the Triple Alliance, and fore-shadowed
-the policy which this country would pursue in the event of the
-French fleet gaining a complete ascendancy over that of Italy in the
-Mediterranean. The questions treated in it were purely naval. At the end
-were the signatures of the high dignitaries who had signed it. I glanced
-my eyes over it, and then settled down to my task of copying.
-
-"It was a long document, written in the French language, and containing
-twenty-six separate articles. I copied as quickly as I could, but at
-nine o'clock I had only done nine articles, and it seemed hopeless for
-me to attempt to catch my train. I was feeling drowsy and stupid, partly
-from my dinner and also from the effects of a long day's work. A cup of
-coffee would clear my brain. A commissionnaire remains all night in a
-little lodge at the foot of the stairs, and is in the habit of making
-coffee at his spirit-lamp for any of the officials who may be working
-over time. I rang the bell, therefore, to summon him.
-
-"To my surprise, it was a woman who answered the summons, a large,
-coarse-faced, elderly woman, in an apron. She explained that she was the
-commissionnaire's wife, who did the charing, and I gave her the order
-for the coffee.
-
-"I wrote two more articles and then, feeling more drowsy than ever, I
-rose and walked up and down the room to stretch my legs. My coffee had
-not yet come, and I wondered what was the cause of the delay could be.
-Opening the door, I started down the corridor to find out. There was a
-straight passage, dimly lighted, which led from the room in which I
-had been working, and was the only exit from it. It ended in a curving
-staircase, with the commissionnaire's lodge in the passage at the
-bottom. Half way down this staircase is a small landing, with another
-passage running into it at right angles. This second one leads by means
-of a second small stair to a side door, used by servants, and also as
-a short cut by clerks when coming from Charles Street. Here is a rough
-chart of the place."
-
-"Thank you. I think that I quite follow you," said Sherlock Holmes.
-
-"It is of the utmost importance that you should notice this point.
-I went down the stairs and into the hall, where I found the
-commissionnaire fast asleep in his box, with the kettle boiling
-furiously upon the spirit-lamp. I took off the kettle and blew out the
-lamp, for the water was spurting over the floor. Then I put out my hand
-and was about to shake the man, who was still sleeping soundly, when a
-bell over his head rang loudly, and he woke with a start.
-
-"'Mr. Phelps, sir!' said he, looking at me in bewilderment.
-
-"'I came down to see if my coffee was ready.'
-
-"'I was boiling the kettle when I fell asleep, sir.' He looked at me and
-then up at the still quivering bell with an ever-growing astonishment
-upon his face.
-
-"'If you was here, sir, then who rang the bell?' he asked.
-
-"'The bell!' I cried. 'What bell is it?'
-
-"'It's the bell of the room you were working in.'
-
-"A cold hand seemed to close round my heart. Some one, then, was in that
-room where my precious treaty lay upon the table. I ran frantically up
-the stair and along the passage. There was no one in the corridors, Mr.
-Holmes. There was no one in the room. All was exactly as I left it, save
-only that the papers which had been committed to my care had been taken
-from the desk on which they lay. The copy was there, and the original
-was gone."
-
-Holmes sat up in his chair and rubbed his hands. I could see that the
-problem was entirely to his heart. "Pray, what did you do then?" he
-murmured.
-
-"I recognized in an instant that the thief must have come up the stairs
-from the side door. Of course I must have met him if he had come the
-other way."
-
-"You were satisfied that he could not have been concealed in the room
-all the time, or in the corridor which you have just described as dimly
-lighted?"
-
-"It is absolutely impossible. A rat could not conceal himself either in
-the room or the corridor. There is no cover at all."
-
-"Thank you. Pray proceed."
-
-"The commissionnaire, seeing by my pale face that something was to be
-feared, had followed me upstairs. Now we both rushed along the corridor
-and down the steep steps which led to Charles Street. The door at the
-bottom was closed, but unlocked. We flung it open and rushed out. I can
-distinctly remember that as we did so there came three chimes from a
-neighboring clock. It was quarter to ten."
-
-"That is of enormous importance," said Holmes, making a note upon his
-shirt-cuff.
-
-"The night was very dark, and a thin, warm rain was falling. There was
-no one in Charles Street, but a great traffic was going on, as usual, in
-Whitehall, at the extremity. We rushed along the pavement, bare-headed
-as we were, and at the far corner we found a policeman standing.
-
-"'A robbery has been committed,' I gasped. 'A document of immense value
-has been stolen from the Foreign Office. Has any one passed this way?'
-
-"'I have been standing here for a quarter of an hour, sir,' said he;
-'only one person has passed during that time--a woman, tall and elderly,
-with a Paisley shawl.'
-
-"'Ah, that is only my wife,' cried the commissionnaire; 'has no one else
-passed?'
-
-"'No one.'
-
-"'Then it must be the other way that the thief took,' cried the fellow,
-tugging at my sleeve.
-
-"'But I was not satisfied, and the attempts which he made to draw me
-away increased my suspicions.
-
-"'Which way did the woman go?' I cried.
-
-"'I don't know, sir. I noticed her pass, but I had no special reason for
-watching her. She seemed to be in a hurry.'
-
-"'How long ago was it?'
-
-"'Oh, not very many minutes.'
-
-"'Within the last five?'
-
-"'Well, it could not be more than five.'
-
-"'You're only wasting your time, sir, and every minute now is of
-importance,' cried the commissionnaire; 'take my word for it that my old
-woman has nothing to do with it, and come down to the other end of the
-street. Well, if you won't, I will.' And with that he rushed off in the
-other direction.
-
-"But I was after him in an instant and caught him by the sleeve.
-
-"'Where do you live?' said I.
-
-"'16 Ivy Lane, Brixton,' he answered. 'But don't let yourself be drawn
-away upon a false scent, Mr. Phelps. Come to the other end of the street
-and let us see if we can hear of anything.'
-
-"Nothing was to be lost by following his advice. With the policeman we
-both hurried down, but only to find the street full of traffic, many
-people coming and going, but all only too eager to get to a place of
-safety upon so wet a night. There was no lounger who could tell us who
-had passed.
-
-"Then we returned to the office, and searched the stairs and the passage
-without result. The corridor which led to the room was laid down with
-a kind of creamy linoleum which shows an impression very easily. We
-examined it very carefully, but found no outline of any footmark."
-
-"Had it been raining all evening?"
-
-"Since about seven."
-
-"How is it, then, that the woman who came into the room about nine left
-no traces with her muddy boots?"
-
-"I am glad you raised the point. It occurred to me at the time.
-The charwomen are in the habit of taking off their boots at the
-commissionnaire's office, and putting on list slippers."
-
-"That is very clear. There were no marks, then, though the night was a
-wet one? The chain of events is certainly one of extraordinary interest.
-What did you do next?
-
-"We examined the room also. There is no possibility of a secret door,
-and the windows are quite thirty feet from the ground. Both of them
-were fastened on the inside. The carpet prevents any possibility of a
-trap-door, and the ceiling is of the ordinary whitewashed kind. I will
-pledge my life that whoever stole my papers could only have come through
-the door."
-
-"How about the fireplace?"
-
-"They use none. There is a stove. The bell-rope hangs from the wire just
-to the right of my desk. Whoever rang it must have come right up to the
-desk to do it. But why should any criminal wish to ring the bell? It is
-a most insoluble mystery."
-
-"Certainly the incident was unusual. What were your next steps? You
-examined the room, I presume, to see if the intruder had left any
-traces--any cigar-end or dropped glove or hairpin or other trifle?"
-
-"There was nothing of the sort."
-
-"No smell?"
-
-"Well, we never thought of that."
-
-"Ah, a scent of tobacco would have been worth a great deal to us in such
-an investigation."
-
-"I never smoke myself, so I think I should have observed it if there had
-been any smell of tobacco. There was absolutely no clue of any kind. The
-only tangible fact was that the commissionnaire's wife--Mrs. Tangey was
-the name--had hurried out of the place. He could give no explanation
-save that it was about the time when the woman always went home. The
-policeman and I agreed that our best plan would be to seize the woman
-before she could get rid of the papers, presuming that she had them.
-
-"The alarm had reached Scotland Yard by this time, and Mr. Forbes, the
-detective, came round at once and took up the case with a great deal of
-energy. We hired a hansom, and in half an hour we were at the address
-which had been given to us. A young woman opened the door, who proved to
-be Mrs. Tangey's eldest daughter. Her mother had not come back yet, and
-we were shown into the front room to wait.
-
-"About ten minutes later a knock came at the door, and here we made the
-one serious mistake for which I blame myself. Instead of opening the
-door ourselves, we allowed the girl to do so. We heard her say, 'Mother,
-there are two men in the house waiting to see you,' and an instant
-afterwards we heard the patter of feet rushing down the passage. Forbes
-flung open the door, and we both ran into the back room or kitchen, but
-the woman had got there before us. She stared at us with defiant
-eyes, and then, suddenly recognizing me, an expression of absolute
-astonishment came over her face.
-
-"'Why, if it isn't Mr. Phelps, of the office!' she cried.
-
-"'Come, come, who did you think we were when you ran away from us?'
-asked my companion.
-
-"'I thought you were the brokers,' said she, 'we have had some trouble
-with a tradesman.'
-
-"'That's not quite good enough,' answered Forbes. 'We have reason to
-believe that you have taken a paper of importance from the Foreign
-Office, and that you ran in here to dispose of it. You must come back
-with us to Scotland Yard to be searched.'
-
-"It was in vain that she protested and resisted. A four-wheeler was
-brought, and we all three drove back in it. We had first made an
-examination of the kitchen, and especially of the kitchen fire, to see
-whether she might have made away with the papers during the instant that
-she was alone. There were no signs, however, of any ashes or scraps.
-When we reached Scotland Yard she was handed over at once to the female
-searcher. I waited in an agony of suspense until she came back with her
-report. There were no signs of the papers.
-
-"Then for the first time the horror of my situation came in its full
-force. Hitherto I had been acting, and action had numbed thought. I had
-been so confident of regaining the treaty at once that I had not dared
-to think of what would be the consequence if I failed to do so. But
-now there was nothing more to be done, and I had leisure to realize
-my position. It was horrible. Watson there would tell you that I was a
-nervous, sensitive boy at school. It is my nature. I thought of my uncle
-and of his colleagues in the Cabinet, of the shame which I had brought
-upon him, upon myself, upon every one connected with me. What though I
-was the victim of an extraordinary accident? No allowance is made
-for accidents where diplomatic interests are at stake. I was ruined,
-shamefully, hopelessly ruined. I don't know what I did. I fancy I must
-have made a scene. I have a dim recollection of a group of officials who
-crowded round me, endeavoring to soothe me. One of them drove down with
-me to Waterloo, and saw me into the Woking train. I believe that he
-would have come all the way had it not been that Dr. Ferrier, who lives
-near me, was going down by that very train. The doctor most kindly took
-charge of me, and it was well he did so, for I had a fit in the station,
-and before we reached home I was practically a raving maniac.
-
-"You can imagine the state of things here when they were roused from
-their beds by the doctor's ringing and found me in this condition. Poor
-Annie here and my mother were broken-hearted. Dr. Ferrier had just heard
-enough from the detective at the station to be able to give an idea of
-what had happened, and his story did not mend matters. It was evident to
-all that I was in for a long illness, so Joseph was bundled out of this
-cheery bedroom, and it was turned into a sick-room for me. Here I have
-lain, Mr. Holmes, for over nine weeks, unconscious, and raving with
-brain-fever. If it had not been for Miss Harrison here and for the
-doctor's care I should not be speaking to you now. She has nursed me by
-day and a hired nurse has looked after me by night, for in my mad fits
-I was capable of anything. Slowly my reason has cleared, but it is only
-during the last three days that my memory has quite returned. Sometimes
-I wish that it never had. The first thing that I did was to wire to
-Mr. Forbes, who had the case in hand. He came out, and assures me that,
-though everything has been done, no trace of a clue has been discovered.
-The commissionnaire and his wife have been examined in every way without
-any light being thrown upon the matter. The suspicions of the police
-then rested upon young Gorot, who, as you may remember, stayed over time
-in the office that night. His remaining behind and his French name were
-really the only two points which could suggest suspicion; but, as a
-matter of fact, I did not begin work until he had gone, and his people
-are of Huguenot extraction, but as English in sympathy and tradition as
-you and I are. Nothing was found to implicate him in any way, and there
-the matter dropped. I turn to you, Mr. Holmes, as absolutely my last
-hope. If you fail me, then my honor as well as my position are forever
-forfeited."
-
-The invalid sank back upon his cushions, tired out by this long recital,
-while his nurse poured him out a glass of some stimulating medicine.
-Holmes sat silently, with his head thrown back and his eyes closed, in
-an attitude which might seem listless to a stranger, but which I knew
-betokened the most intense self-absorption.
-
-"You statement has been so explicit," said he at last, "that you have
-really left me very few questions to ask. There is one of the very
-utmost importance, however. Did you tell any one that you had this
-special task to perform?"
-
-"No one."
-
-"Not Miss Harrison here, for example?"
-
-"No. I had not been back to Woking between getting the order and
-executing the commission."
-
-"And none of your people had by chance been to see you?"
-
-"None."
-
-"Did any of them know their way about in the office?"
-
-"Oh, yes, all of them had been shown over it."
-
-"Still, of course, if you said nothing to any one about the treaty these
-inquiries are irrelevant."
-
-"I said nothing."
-
-"Do you know anything of the commissionnaire?"
-
-"Nothing except that he is an old soldier."
-
-"What regiment?"
-
-"Oh, I have heard--Coldstream Guards."
-
-"Thank you. I have no doubt I can get details from Forbes. The
-authorities are excellent at amassing facts, though they do not always
-use them to advantage. What a lovely thing a rose is!"
-
-He walked past the couch to the open window, and held up the drooping
-stalk of a moss-rose, looking down at the dainty blend of crimson and
-green. It was a new phase of his character to me, for I had never before
-seen him show any keen interest in natural objects.
-
-"There is nothing in which deduction is so necessary as in religion,"
-said he, leaning with his back against the shutters. "It can be built
-up as an exact science by the reasoner. Our highest assurance of the
-goodness of Providence seems to me to rest in the flowers. All other
-things, our powers our desires, our food, are all really necessary for
-our existence in the first instance. But this rose is an extra. Its
-smell and its color are an embellishment of life, not a condition of it.
-It is only goodness which gives extras, and so I say again that we have
-much to hope from the flowers."
-
-Percy Phelps and his nurse looked at Holmes during this demonstration
-with surprise and a good deal of disappointment written upon their
-faces. He had fallen into a reverie, with the moss-rose between his
-fingers. It had lasted some minutes before the young lady broke in upon
-it.
-
-"Do you see any prospect of solving this mystery, Mr. Holmes?" she
-asked, with a touch of asperity in her voice.
-
-"Oh, the mystery!" he answered, coming back with a start to the
-realities of life. "Well, it would be absurd to deny that the case is
-a very abstruse and complicated one, but I can promise you that I will
-look into the matter and let you know any points which may strike me."
-
-"Do you see any clue?"
-
-"You have furnished me with seven, but, of course, I must test them
-before I can pronounce upon their value."
-
-"You suspect some one?"
-
-"I suspect myself."
-
-"What!"
-
-"Of coming to conclusions too rapidly."
-
-"Then go to London and test your conclusions."
-
-"Your advice is very excellent, Miss Harrison," said Holmes, rising. "I
-think, Watson, we cannot do better. Do not allow yourself to indulge in
-false hopes, Mr. Phelps. The affair is a very tangled one."
-
-"I shall be in a fever until I see you again," cried the diplomatist.
-
-"Well, I'll come out by the same train to-morrow, though it's more than
-likely that my report will be a negative one."
-
-"God bless you for promising to come," cried our client. "It gives me
-fresh life to know that something is being done. By the way, I have had
-a letter from Lord Holdhurst."
-
-"Ha! What did he say?"
-
-"He was cold, but not harsh. I dare say my severe illness prevented
-him from being that. He repeated that the matter was of the utmost
-importance, and added that no steps would be taken about my future--by
-which he means, of course, my dismissal--until my health was restored
-and I had an opportunity of repairing my misfortune."
-
-"Well, that was reasonable and considerate," said Holmes. "Come, Watson,
-for we have a good day's work before us in town."
-
-Mr. Joseph Harrison drove us down to the station, and we were soon
-whirling up in a Portsmouth train. Holmes was sunk in profound thought,
-and hardly opened his mouth until we had passed Clapham Junction.
-
-"It's a very cheery thing to come into London by any of these lines
-which run high, and allow you to look down upon the houses like this."
-
-I thought he was joking, for the view was sordid enough, but he soon
-explained himself.
-
-"Look at those big, isolated clumps of building rising up above the
-slates, like brick islands in a lead-colored sea."
-
-"The board-schools."
-
-"Light-houses, my boy! Beacons of the future! Capsules with hundreds of
-bright little seeds in each, out of which will spring the wise, better
-England of the future. I suppose that man Phelps does not drink?"
-
-"I should not think so."
-
-"Nor should I, but we are bound to take every possibility into account.
-The poor devil has certainly got himself into very deep water, and it's
-a question whether we shall ever be able to get him ashore. What did you
-think of Miss Harrison?"
-
-"A girl of strong character."
-
-"Yes, but she is a good sort, or I am mistaken. She and her brother are
-the only children of an iron-master somewhere up Northumberland way. He
-got engaged to her when traveling last winter, and she came down to
-be introduced to his people, with her brother as escort. Then came
-the smash, and she stayed on to nurse her lover, while brother Joseph,
-finding himself pretty snug, stayed on too. I've been making a few
-independent inquiries, you see. But to-day must be a day of inquiries."
-
-"My practice--" I began.
-
-"Oh, if you find your own cases more interesting than mine--" said
-Holmes, with some asperity.
-
-"I was going to say that my practice could get along very well for a day
-or two, since it is the slackest time in the year."
-
-"Excellent," said he, recovering his good-humor. "Then we'll look into
-this matter together. I think that we should begin by seeing Forbes.
-He can probably tell us all the details we want until we know from what
-side the case is to be approached."
-
-"You said you had a clue?"
-
-"Well, we have several, but we can only test their value by further
-inquiry. The most difficult crime to track is the one which is
-purposeless. Now this is not purposeless. Who is it who profits by it?
-There is the French ambassador, there is the Russian, there is whoever
-might sell it to either of these, and there is Lord Holdhurst."
-
-"Lord Holdhurst!"
-
-"Well, it is just conceivable that a statesman might find himself in
-a position where he was not sorry to have such a document accidentally
-destroyed."
-
-"Not a statesman with the honorable record of Lord Holdhurst?"
-
-"It is a possibility and we cannot afford to disregard it. We shall see
-the noble lord to-day and find out if he can tell us anything. Meanwhile
-I have already set inquiries on foot."
-
-"Already?"
-
-"Yes, I sent wires from Woking station to every evening paper in London.
-This advertisement will appear in each of them."
-
-He handed over a sheet torn from a note-book. On it was scribbled in
-pencil: "L10 reward. The number of the cab which dropped a fare at or
-about the door of the Foreign Office in Charles Street at quarter to ten
-in the evening of May 23d. Apply 221 B, Baker Street."
-
-"You are confident that the thief came in a cab?"
-
-"If not, there is no harm done. But if Mr. Phelps is correct in stating
-that there is no hiding-place either in the room or the corridors, then
-the person must have come from outside. If he came from outside on so
-wet a night, and yet left no trace of damp upon the linoleum, which
-was examined within a few minutes of his passing, then it is exceeding
-probable that he came in a cab. Yes, I think that we may safely deduce a
-cab."
-
-"It sounds plausible."
-
-"That is one of the clues of which I spoke. It may lead us to something.
-And then, of course, there is the bell--which is the most distinctive
-feature of the case. Why should the bell ring? Was it the thief who did
-it out of bravado? Or was it some one who was with the thief who did it
-in order to prevent the crime? Or was it an accident? Or was it--?" He
-sank back into the state of intense and silent thought from which he
-had emerged; but it seemed to me, accustomed as I was to his every mood,
-that some new possibility had dawned suddenly upon him.
-
-It was twenty past three when we reached our terminus, and after a hasty
-luncheon at the buffet we pushed on at once to Scotland Yard. Holmes
-had already wired to Forbes, and we found him waiting to receive us--a
-small, foxy man with a sharp but by no means amiable expression. He
-was decidedly frigid in his manner to us, especially when he heard the
-errand upon which we had come.
-
-"I've heard of your methods before now, Mr. Holmes," said he, tartly.
-"You are ready enough to use all the information that the police can lay
-at your disposal, and then you try to finish the case yourself and bring
-discredit on them."
-
-"On the contrary," said Holmes, "out of my last fifty-three cases my
-name has only appeared in four, and the police have had all the credit
-in forty-nine. I don't blame you for not knowing this, for you are young
-and inexperienced, but if you wish to get on in your new duties you will
-work with me and not against me."
-
-"I'd be very glad of a hint or two," said the detective, changing his
-manner. "I've certainly had no credit from the case so far."
-
-"What steps have you taken?"
-
-"Tangey, the commissionnaire, has been shadowed. He left the Guards with
-a good character and we can find nothing against him. His wife is a bad
-lot, though. I fancy she knows more about this than appears."
-
-"Have you shadowed her?"
-
-"We have set one of our women on to her. Mrs. Tangey drinks, and our
-woman has been with her twice when she was well on, but she could get
-nothing out of her."
-
-"I understand that they have had brokers in the house?"
-
-"Yes, but they were paid off."
-
-"Where did the money come from?"
-
-"That was all right. His pension was due. They have not shown any sign
-of being in funds."
-
-"What explanation did she give of having answered the bell when Mr.
-Phelps rang for the coffee?"
-
-"She said that he husband was very tired and she wished to relieve him."
-
-"Well, certainly that would agree with his being found a little later
-asleep in his chair. There is nothing against them then but the woman's
-character. Did you ask her why she hurried away that night? Her haste
-attracted the attention of the police constable."
-
-"She was later than usual and wanted to get home."
-
-"Did you point out to her that you and Mr. Phelps, who started at least
-twenty minutes after her, got home before her?"
-
-"She explains that by the difference between a 'bus and a hansom."
-
-"Did she make it clear why, on reaching her house, she ran into the back
-kitchen?"
-
-"Because she had the money there with which to pay off the brokers."
-
-"She has at least an answer for everything. Did you ask her whether in
-leaving she met any one or saw any one loitering about Charles Street?"
-
-"She saw no one but the constable."
-
-"Well, you seem to have cross-examined her pretty thoroughly. What else
-have you done?"
-
-"The clerk Gorot has been shadowed all these nine weeks, but without
-result. We can show nothing against him."
-
-"Anything else?"
-
-"Well, we have nothing else to go upon--no evidence of any kind."
-
-"Have you formed a theory about how that bell rang?"
-
-"Well, I must confess that it beats me. It was a cool hand, whoever it
-was, to go and give the alarm like that."
-
-"Yes, it was queer thing to do. Many thanks to you for what you have
-told me. If I can put the man into your hands you shall hear from me.
-Come along, Watson."
-
-"Where are we going to now?" I asked, as we left the office.
-
-"We are now going to interview Lord Holdhurst, the cabinet minister and
-future premier of England."
-
-We were fortunate in finding that Lord Holdhurst was still in his
-chambers in Downing Street, and on Holmes sending in his card we were
-instantly shown up. The statesman received us with that old-fashioned
-courtesy for which he is remarkable, and seated us on the two luxuriant
-lounges on either side of the fireplace. Standing on the rug between us,
-with his slight, tall figure, his sharp features, thoughtful face, and
-curling hair prematurely tinged with gray, he seemed to represent that
-not too common type, a nobleman who is in truth noble.
-
-"Your name is very familiar to me, Mr. Holmes," said he, smiling. "And,
-of course, I cannot pretend to be ignorant of the object of your visit.
-There has only been one occurrence in these offices which could call for
-your attention. In whose interest are you acting, may I ask?"
-
-"In that of Mr. Percy Phelps," answered Holmes.
-
-"Ah, my unfortunate nephew! You can understand that our kinship makes
-it the more impossible for me to screen him in any way. I fear that the
-incident must have a very prejudicial effect upon his career."
-
-"But if the document is found?"
-
-"Ah, that, of course, would be different."
-
-"I had one or two questions which I wished to ask you, Lord Holdhurst."
-
-"I shall be happy to give you any information in my power."
-
-"Was it in this room that you gave your instructions as to the copying
-of the document?"
-
-"It was."
-
-"Then you could hardly have been overheard?"
-
-"It is out of the question."
-
-"Did you ever mention to any one that it was your intention to give any
-one the treaty to be copied?"
-
-"Never."
-
-"You are certain of that?"
-
-"Absolutely."
-
-"Well, since you never said so, and Mr. Phelps never said so, and nobody
-else knew anything of the matter, then the thief's presence in the room
-was purely accidental. He saw his chance and he took it."
-
-The statesman smiled. "You take me out of my province there," said he.
-
-Holmes considered for a moment. "There is another very important
-point which I wish to discuss with you," said he. "You feared, as I
-understand, that very grave results might follow from the details of
-this treaty becoming known."
-
-A shadow passed over the expressive face of the statesman. "Very grave
-results indeed."
-
-"Any have they occurred?"
-
-"Not yet."
-
-"If the treaty had reached, let us say, the French or Russian Foreign
-Office, you would expect to hear of it?"
-
-"I should," said Lord Holdhurst, with a wry face.
-
-"Since nearly ten weeks have elapsed, then, and nothing has been heard,
-it is not unfair to suppose that for some reason the treaty has not
-reached them."
-
-Lord Holdhurst shrugged his shoulders.
-
-"We can hardly suppose, Mr. Holmes, that the thief took the treaty in
-order to frame it and hang it up."
-
-"Perhaps he is waiting for a better price."
-
-"If he waits a little longer he will get no price at all. The treaty
-will cease to be secret in a few months."
-
-"That is most important," said Holmes. "Of course, it is a possible
-supposition that the thief has had a sudden illness--"
-
-"An attack of brain-fever, for example?" asked the statesman, flashing a
-swift glance at him.
-
-"I did not say so," said Holmes, imperturbably. "And now, Lord
-Holdhurst, we have already taken up too much of your valuable time, and
-we shall wish you good-day."
-
-"Every success to your investigation, be the criminal who it may,"
-answered the nobleman, as he bowed us out the door.
-
-"He's a fine fellow," said Holmes, as we came out into Whitehall. "But
-he has a struggle to keep up his position. He is far from rich and has
-many calls. You noticed, of course, that his boots had been resoled.
-Now, Watson, I won't detain you from your legitimate work any longer.
-I shall do nothing more to-day, unless I have an answer to my cab
-advertisement. But I should be extremely obliged to you if you would
-come down with me to Woking to-morrow, by the same train which we took
-yesterday."
-
-
-I met him accordingly next morning and we traveled down to Woking
-together. He had had no answer to his advertisement, he said, and no
-fresh light had been thrown upon the case. He had, when he so willed
-it, the utter immobility of countenance of a red Indian, and I could
-not gather from his appearance whether he was satisfied or not with
-the position of the case. His conversation, I remember, was about the
-Bertillon system of measurements, and he expressed his enthusiastic
-admiration of the French savant.
-
-We found our client still under the charge of his devoted nurse, but
-looking considerably better than before. He rose from the sofa and
-greeted us without difficulty when we entered.
-
-"Any news?" he asked, eagerly.
-
-"My report, as I expected, is a negative one," said Holmes. "I have seen
-Forbes, and I have seen your uncle, and I have set one or two trains of
-inquiry upon foot which may lead to something."
-
-"You have not lost heart, then?"
-
-"By no means."
-
-"God bless you for saying that!" cried Miss Harrison. "If we keep our
-courage and our patience the truth must come out."
-
-"We have more to tell you than you have for us," said Phelps, reseating
-himself upon the couch.
-
-"I hoped you might have something."
-
-"Yes, we have had an adventure during the night, and one which might
-have proved to be a serious one." His expression grew very grave as he
-spoke, and a look of something akin to fear sprang up in his eyes. "Do
-you know," said he, "that I begin to believe that I am the unconscious
-centre of some monstrous conspiracy, and that my life is aimed at as
-well as my honor?"
-
-"Ah!" cried Holmes.
-
-"It sounds incredible, for I have not, as far as I know, an enemy in
-the world. Yet from last night's experience I can come to no other
-conclusion."
-
-"Pray let me hear it."
-
-"You must know that last night was the very first night that I have ever
-slept without a nurse in the room. I was so much better that I thought
-I could dispense with one. I had a night-light burning, however. Well,
-about two in the morning I had sunk into a light sleep when I was
-suddenly aroused by a slight noise. It was like the sound which a mouse
-makes when it is gnawing a plank, and I lay listening to it for some
-time under the impression that it must come from that cause. Then it
-grew louder, and suddenly there came from the window a sharp metallic
-snick. I sat up in amazement. There could be no doubt what the sounds
-were now. The first ones had been caused by some one forcing an
-instrument through the slit between the sashes, and the second by the
-catch being pressed back.
-
-"There was a pause then for about ten minutes, as if the person were
-waiting to see whether the noise had awakened me. Then I heard a gentle
-creaking as the window was very slowly opened. I could stand it no
-longer, for my nerves are not what they used to be. I sprang out of bed
-and flung open the shutters. A man was crouching at the window. I could
-see little of him, for he was gone like a flash. He was wrapped in some
-sort of cloak which came across the lower part of his face. One thing
-only I am sure of, and that is that he had some weapon in his hand. It
-looked to me like a long knife. I distinctly saw the gleam of it as he
-turned to run."
-
-"This is most interesting," said Holmes. "Pray what did you do then?"
-
-"I should have followed him through the open window if I had been
-stronger. As it was, I rang the bell and roused the house. It took me
-some little time, for the bell rings in the kitchen and the servants all
-sleep upstairs. I shouted, however, and that brought Joseph down, and he
-roused the others. Joseph and the groom found marks on the bed outside
-the window, but the weather has been so dry lately that they found it
-hopeless to follow the trail across the grass. There's a place, however,
-on the wooden fence which skirts the road which shows signs, they tell
-me, as if some one had got over, and had snapped the top of the rail in
-doing so. I have said nothing to the local police yet, for I thought I
-had best have your opinion first."
-
-This tale of our client's appeared to have an extraordinary effect upon
-Sherlock Holmes. He rose from his chair and paced about the room in
-uncontrollable excitement.
-
-"Misfortunes never come single," said Phelps, smiling, though it was
-evident that his adventure had somewhat shaken him.
-
-"You have certainly had your share," said Holmes. "Do you think you
-could walk round the house with me?"
-
-"Oh, yes, I should like a little sunshine. Joseph will come, too."
-
-"And I also," said Miss Harrison.
-
-"I am afraid not," said Holmes, shaking his head. "I think I must ask
-you to remain sitting exactly where you are."
-
-The young lady resumed her seat with an air of displeasure. Her brother,
-however, had joined us and we set off all four together. We passed round
-the lawn to the outside of the young diplomatist's window. There were,
-as he had said, marks upon the bed, but they were hopelessly blurred and
-vague. Holmes stopped over them for an instant, and then rose shrugging
-his shoulders.
-
-"I don't think any one could make much of this," said he. "Let us go
-round the house and see why this particular room was chosen by the
-burglar. I should have thought those larger windows of the drawing-room
-and dining-room would have had more attractions for him."
-
-"They are more visible from the road," suggested Mr. Joseph Harrison.
-
-"Ah, yes, of course. There is a door here which he might have attempted.
-What is it for?"
-
-"It is the side entrance for trades-people. Of course it is locked at
-night."
-
-"Have you ever had an alarm like this before?"
-
-"Never," said our client.
-
-"Do you keep plate in the house, or anything to attract burglars?"
-
-"Nothing of value."
-
-Holmes strolled round the house with his hands in his pockets and a
-negligent air which was unusual with him.
-
-"By the way," said he to Joseph Harrison, "you found some place, I
-understand, where the fellow scaled the fence. Let us have a look at
-that!"
-
-The plump young man led us to a spot where the top of one of the wooden
-rails had been cracked. A small fragment of the wood was hanging down.
-Holmes pulled it off and examined it critically.
-
-"Do you think that was done last night? It looks rather old, does it
-not?"
-
-"Well, possibly so."
-
-"There are no marks of any one jumping down upon the other side. No, I
-fancy we shall get no help here. Let us go back to the bedroom and talk
-the matter over."
-
-Percy Phelps was walking very slowly, leaning upon the arm of his future
-brother-in-law. Holmes walked swiftly across the lawn, and we were at
-the open window of the bedroom long before the others came up.
-
-"Miss Harrison," said Holmes, speaking with the utmost intensity of
-manner, "you must stay where you are all day. Let nothing prevent you
-from staying where you are all day. It is of the utmost importance."
-
-"Certainly, if you wish it, Mr. Holmes," said the girl in astonishment.
-
-"When you go to bed lock the door of this room on the outside and keep
-the key. Promise to do this."
-
-"But Percy?"
-
-"He will come to London with us."
-
-"And am I to remain here?"
-
-"It is for his sake. You can serve him. Quick! Promise!"
-
-She gave a quick nod of assent just as the other two came up.
-
-"Why do you sit moping there, Annie?" cried her brother. "Come out into
-the sunshine!"
-
-"No, thank you, Joseph. I have a slight headache and this room is
-deliciously cool and soothing."
-
-"What do you propose now, Mr. Holmes?" asked our client.
-
-"Well, in investigating this minor affair we must not lose sight of our
-main inquiry. It would be a very great help to me if you would come up
-to London with us."
-
-"At once?"
-
-"Well, as soon as you conveniently can. Say in an hour."
-
-"I feel quite strong enough, if I can really be of any help."
-
-"The greatest possible."
-
-"Perhaps you would like me to stay there to-night?"
-
-"I was just going to propose it."
-
-"Then, if my friend of the night comes to revisit me, he will find the
-bird flown. We are all in your hands, Mr. Holmes, and you must tell us
-exactly what you would like done. Perhaps you would prefer that Joseph
-came with us so as to look after me?"
-
-"Oh, no; my friend Watson is a medical man, you know, and he'll look
-after you. We'll have our lunch here, if you will permit us, and then we
-shall all three set off for town together."
-
-It was arranged as he suggested, though Miss Harrison excused herself
-from leaving the bedroom, in accordance with Holmes's suggestion. What
-the object of my friend's manoeuvres was I could not conceive, unless it
-were to keep the lady away from Phelps, who, rejoiced by his
-returning health and by the prospect of action, lunched with us in the
-dining-room. Holmes had a still more startling surprise for us, however,
-for, after accompanying us down to the station and seeing us into
-our carriage, he calmly announced that he had no intention of leaving
-Woking.
-
-"There are one or two small points which I should desire to clear up
-before I go," said he. "Your absence, Mr. Phelps, will in some ways
-rather assist me. Watson, when you reach London you would oblige me by
-driving at once to Baker Street with our friend here, and remaining
-with him until I see you again. It is fortunate that you are old
-school-fellows, as you must have much to talk over. Mr. Phelps can
-have the spare bedroom to-night, and I will be with you in time for
-breakfast, for there is a train which will take me into Waterloo at
-eight."
-
-"But how about our investigation in London?" asked Phelps, ruefully.
-
-"We can do that to-morrow. I think that just at present I can be of more
-immediate use here."
-
-"You might tell them at Briarbrae that I hope to be back to-morrow
-night," cried Phelps, as we began to move from the platform.
-
-"I hardly expect to go back to Briarbrae," answered Holmes, and waved
-his hand to us cheerily as we shot out from the station.
-
-Phelps and I talked it over on our journey, but neither of us could
-devise a satisfactory reason for this new development.
-
-"I suppose he wants to find out some clue as to the burglary last night,
-if a burglar it was. For myself, I don't believe it was an ordinary
-thief."
-
-"What is your own idea, then?"
-
-"Upon my word, you may put it down to my weak nerves or not, but I
-believe there is some deep political intrigue going on around me, and
-that for some reason that passes my understanding my life is aimed at
-by the conspirators. It sounds high-flown and absurd, but consider the
-facts! Why should a thief try to break in at a bedroom window, where
-there could be no hope of any plunder, and why should he come with a
-long knife in his hand?"
-
-"You are sure it was not a house-breaker's jimmy?"
-
-"Oh, no, it was a knife. I saw the flash of the blade quite distinctly."
-
-"But why on earth should you be pursued with such animosity?"
-
-"Ah, that is the question."
-
-"Well, if Holmes takes the same view, that would account for his action,
-would it not? Presuming that your theory is correct, if he can lay his
-hands upon the man who threatened you last night he will have gone a
-long way towards finding who took the naval treaty. It is absurd to
-suppose that you have two enemies, one of whom robs you, while the other
-threatens your life."
-
-"But Holmes said that he was not going to Briarbrae."
-
-"I have known him for some time," said I, "but I never knew him do
-anything yet without a very good reason," and with that our conversation
-drifted off on to other topics.
-
-But it was a weary day for me. Phelps was still weak after his long
-illness, and his misfortune made him querulous and nervous. In vain
-I endeavored to interest him in Afghanistan, in India, in social
-questions, in anything which might take his mind out of the groove.
-He would always come back to his lost treaty, wondering, guessing,
-speculating, as to what Holmes was doing, what steps Lord Holdhurst was
-taking, what news we should have in the morning. As the evening wore on
-his excitement became quite painful.
-
-"You have implicit faith in Holmes?" he asked.
-
-"I have seen him do some remarkable things."
-
-"But he never brought light into anything quite so dark as this?"
-
-"Oh, yes; I have known him solve questions which presented fewer clues
-than yours."
-
-"But not where such large interests are at stake?"
-
-"I don't know that. To my certain knowledge he has acted on behalf of
-three of the reigning houses of Europe in very vital matters."
-
-"But you know him well, Watson. He is such an inscrutable fellow that I
-never quite know what to make of him. Do you think he is hopeful? Do you
-think he expects to make a success of it?"
-
-"He has said nothing."
-
-"That is a bad sign."
-
-"On the contrary, I have noticed that when he is off the trail he
-generally says so. It is when he is on a scent and is not quite
-absolutely sure yet that it is the right one that he is most taciturn.
-Now, my dear fellow, we can't help matters by making ourselves nervous
-about them, so let me implore you to go to bed and so be fresh for
-whatever may await us to-morrow."
-
-I was able at last to persuade my companion to take my advice, though I
-knew from his excited manner that there was not much hope of sleep for
-him. Indeed, his mood was infectious, for I lay tossing half the night
-myself, brooding over this strange problem, and inventing a hundred
-theories, each of which was more impossible than the last. Why had
-Holmes remained at Woking? Why had he asked Miss Harrison to remain
-in the sick-room all day? Why had he been so careful not to inform the
-people at Briarbrae that he intended to remain near them? I cudgelled
-my brains until I fell asleep in the endeavor to find some explanation
-which would cover all these facts.
-
-It was seven o'clock when I awoke, and I set off at once for Phelps's
-room, to find him haggard and spent after a sleepless night. His first
-question was whether Holmes had arrived yet.
-
-"He'll be here when he promised," said I, "and not an instant sooner or
-later."
-
-And my words were true, for shortly after eight a hansom dashed up to
-the door and our friend got out of it. Standing in the window we saw
-that his left hand was swathed in a bandage and that his face was very
-grim and pale. He entered the house, but it was some little time before
-he came upstairs.
-
-"He looks like a beaten man," cried Phelps.
-
-I was forced to confess that he was right. "After all," said I, "the
-clue of the matter lies probably here in town."
-
-Phelps gave a groan.
-
-"I don't know how it is," said he, "but I had hoped for so much from his
-return. But surely his hand was not tied up like that yesterday. What
-can be the matter?"
-
-"You are not wounded, Holmes?" I asked, as my friend entered the room.
-
-"Tut, it is only a scratch through my own clumsiness," he answered,
-nodding his good-mornings to us. "This case of yours, Mr. Phelps, is
-certainly one of the darkest which I have ever investigated."
-
-"I feared that you would find it beyond you."
-
-"It has been a most remarkable experience."
-
-"That bandage tells of adventures," said I. "Won't you tell us what has
-happened?"
-
-"After breakfast, my dear Watson. Remember that I have breathed thirty
-miles of Surrey air this morning. I suppose that there has been no
-answer from my cabman advertisement? Well, well, we cannot expect to
-score every time."
-
-The table was all laid, and just as I was about to ring Mrs. Hudson
-entered with the tea and coffee. A few minutes later she brought in
-three covers, and we all drew up to the table, Holmes ravenous, I
-curious, and Phelps in the gloomiest state of depression.
-
-"Mrs. Hudson has risen to the occasion," said Holmes, uncovering a dish
-of curried chicken. "Her cuisine is a little limited, but she has
-as good an idea of breakfast as a Scotch-woman. What have you here,
-Watson?"
-
-"Ham and eggs," I answered.
-
-"Good! What are you going to take, Mr. Phelps--curried fowl or eggs, or
-will you help yourself?"
-
-"Thank you. I can eat nothing," said Phelps.
-
-"Oh, come! Try the dish before you."
-
-"Thank you, I would really rather not."
-
-"Well, then," said Holmes, with a mischievous twinkle, "I suppose that
-you have no objection to helping me?"
-
-Phelps raised the cover, and as he did so he uttered a scream, and sat
-there staring with a face as white as the plate upon which he looked.
-Across the centre of it was lying a little cylinder of blue-gray paper.
-He caught it up, devoured it with his eyes, and then danced madly about
-the room, pressing it to his bosom and shrieking out in his delight.
-Then he fell back into an arm-chair so limp and exhausted with his own
-emotions that we had to pour brandy down his throat to keep him from
-fainting.
-
-"There! there!" said Holmes, soothing, patting him upon the shoulder.
-"It was too bad to spring it on you like this, but Watson here will tell
-you that I never can resist a touch of the dramatic."
-
-Phelps seized his hand and kissed it. "God bless you!" he cried. "You
-have saved my honor."
-
-"Well, my own was at stake, you know," said Holmes. "I assure you it is
-just as hateful to me to fail in a case as it can be to you to blunder
-over a commission."
-
-Phelps thrust away the precious document into the innermost pocket of
-his coat.
-
-"I have not the heart to interrupt your breakfast any further, and yet I
-am dying to know how you got it and where it was."
-
-Sherlock Holmes swallowed a cup of coffee, and turned his attention to
-the ham and eggs. Then he rose, lit his pipe, and settled himself down
-into his chair.
-
-"I'll tell you what I did first, and how I came to do it afterwards,"
-said he. "After leaving you at the station I went for a charming walk
-through some admirable Surrey scenery to a pretty little village called
-Ripley, where I had my tea at an inn, and took the precaution of filling
-my flask and of putting a paper of sandwiches in my pocket. There I
-remained until evening, when I set off for Woking again, and found
-myself in the high-road outside Briarbrae just after sunset.
-
-"Well, I waited until the road was clear--it is never a very frequented
-one at any time, I fancy--and then I clambered over the fence into the
-grounds."
-
-"Surely the gate was open!" ejaculated Phelps.
-
-"Yes, but I have a peculiar taste in these matters. I chose the place
-where the three fir-trees stand, and behind their screen I got over
-without the least chance of any one in the house being able to see me.
-I crouched down among the bushes on the other side, and crawled from one
-to the other--witness the disreputable state of my trouser knees--until
-I had reached the clump of rhododendrons just opposite to your bedroom
-window. There I squatted down and awaited developments.
-
-"The blind was not down in your room, and I could see Miss Harrison
-sitting there reading by the table. It was quarter-past ten when she
-closed her book, fastened the shutters, and retired.
-
-"I heard her shut the door, and felt quite sure that she had turned the
-key in the lock."
-
-"The key!" ejaculated Phelps.
-
-"Yes; I had given Miss Harrison instructions to lock the door on the
-outside and take the key with her when she went to bed. She carried out
-every one of my injunctions to the letter, and certainly without her
-cooperation you would not have that paper in you coat-pocket. She
-departed then and the lights went out, and I was left squatting in the
-rhododendron-bush.
-
-"The night was fine, but still it was a very weary vigil. Of course it
-has the sort of excitement about it that the sportsman feels when he
-lies beside the water-course and waits for the big game. It was very
-long, though--almost as long, Watson, as when you and I waited in that
-deadly room when we looked into the little problem of the Speckled Band.
-There was a church-clock down at Woking which struck the quarters, and I
-thought more than once that it had stopped. At last however about two
-in the morning, I suddenly heard the gentle sound of a bolt being pushed
-back and the creaking of a key. A moment later the servants' door was
-opened, and Mr. Joseph Harrison stepped out into the moonlight."
-
-"Joseph!" ejaculated Phelps.
-
-"He was bare-headed, but he had a black coat thrown over his shoulder so
-that he could conceal his face in an instant if there were any alarm. He
-walked on tiptoe under the shadow of the wall, and when he reached the
-window he worked a long-bladed knife through the sash and pushed back
-the catch. Then he flung open the window, and putting his knife through
-the crack in the shutters, he thrust the bar up and swung them open.
-
-"From where I lay I had a perfect view of the inside of the room and of
-every one of his movements. He lit the two candles which stood upon the
-mantelpiece, and then he proceeded to turn back the corner of the carpet
-in the neighborhood of the door. Presently he stopped and picked out a
-square piece of board, such as is usually left to enable plumbers to get
-at the joints of the gas-pipes. This one covered, as a matter of
-fact, the T joint which gives off the pipe which supplies the kitchen
-underneath. Out of this hiding-place he drew that little cylinder
-of paper, pushed down the board, rearranged the carpet, blew out the
-candles, and walked straight into my arms as I stood waiting for him
-outside the window.
-
-"Well, he has rather more viciousness than I gave him credit for, has
-Master Joseph. He flew at me with his knife, and I had to grasp him
-twice, and got a cut over the knuckles, before I had the upper hand of
-him. He looked murder out of the only eye he could see with when we had
-finished, but he listened to reason and gave up the papers. Having
-got them I let my man go, but I wired full particulars to Forbes this
-morning. If he is quick enough to catch his bird, well and good. But
-if, as I shrewdly suspect, he finds the nest empty before he gets there,
-why, all the better for the government. I fancy that Lord Holdhurst for
-one, and Mr. Percy Phelps for another, would very much rather that the
-affair never got as far as a police-court.
-
-"My God!" gasped our client. "Do you tell me that during these long ten
-weeks of agony the stolen papers were within the very room with me all
-the time?"
-
-"So it was."
-
-"And Joseph! Joseph a villain and a thief!"
-
-"Hum! I am afraid Joseph's character is a rather deeper and more
-dangerous one than one might judge from his appearance. From what I
-have heard from him this morning, I gather that he has lost heavily in
-dabbling with stocks, and that he is ready to do anything on earth to
-better his fortunes. Being an absolutely selfish man, when a chance
-presented itself he did not allow either his sister's happiness or your
-reputation to hold his hand."
-
-Percy Phelps sank back in his chair. "My head whirls," said he. "Your
-words have dazed me."
-
-"The principal difficulty in your case," remarked Holmes, in his
-didactic fashion, "lay in the fact of there being too much evidence.
-What was vital was overlaid and hidden by what was irrelevant. Of all
-the facts which were presented to us we had to pick just those which we
-deemed to be essential, and then piece them together in their order, so
-as to reconstruct this very remarkable chain of events. I had already
-begun to suspect Joseph, from the fact that you had intended to travel
-home with him that night, and that therefore it was a likely enough
-thing that he should call for you, knowing the Foreign Office well, upon
-his way. When I heard that some one had been so anxious to get into the
-bedroom, in which no one but Joseph could have concealed anything--you
-told us in your narrative how you had turned Joseph out when you arrived
-with the doctor--my suspicions all changed to certainties, especially as
-the attempt was made on the first night upon which the nurse was absent,
-showing that the intruder was well acquainted with the ways of the
-house."
-
-"How blind I have been!"
-
-"The facts of the case, as far as I have worked them out, are these:
-this Joseph Harrison entered the office through the Charles Street door,
-and knowing his way he walked straight into your room the instant after
-you left it. Finding no one there he promptly rang the bell, and at
-the instant that he did so his eyes caught the paper upon the table.
-A glance showed him that chance had put in his way a State document of
-immense value, and in an instant he had thrust it into his pocket and
-was gone. A few minutes elapsed, as you remember, before the sleepy
-commissionnaire drew your attention to the bell, and those were just
-enough to give the thief time to make his escape.
-
-"He made his way to Woking by the first train, and having examined his
-booty and assured himself that it really was of immense value, he
-had concealed it in what he thought was a very safe place, with the
-intention of taking it out again in a day or two, and carrying it to the
-French embassy, or wherever he thought that a long price was to be
-had. Then came your sudden return. He, without a moment's warning, was
-bundled out of his room, and from that time onward there were always at
-least two of you there to prevent him from regaining his treasure. The
-situation to him must have been a maddening one. But at last he thought
-he saw his chance. He tried to steal in, but was baffled by your
-wakefulness. You remember that you did not take your usual draught that
-night."
-
-"I remember."
-
-"I fancy that he had taken steps to make that draught efficacious,
-and that he quite relied upon your being unconscious. Of course, I
-understood that he would repeat the attempt whenever it could be done
-with safety. Your leaving the room gave him the chance he wanted. I kept
-Miss Harrison in it all day so that he might not anticipate us. Then,
-having given him the idea that the coast was clear, I kept guard as
-I have described. I already knew that the papers were probably in the
-room, but I had no desire to rip up all the planking and skirting in
-search of them. I let him take them, therefore, from the hiding-place,
-and so saved myself an infinity of trouble. Is there any other point
-which I can make clear?"
-
-"Why did he try the window on the first occasion," I asked, "when he
-might have entered by the door?"
-
-"In reaching the door he would have to pass seven bedrooms. On the other
-hand, he could get out on to the lawn with ease. Anything else?"
-
-"You do not think," asked Phelps, "that he had any murderous intention?
-The knife was only meant as a tool."
-
-"It may be so," answered Holmes, shrugging his shoulders. "I can only
-say for certain that Mr. Joseph Harrison is a gentleman to whose mercy I
-should be extremely unwilling to trust."
-
-
-
-
-Adventure XI. The Final Problem
-
-
-It is with a heavy heart that I take up my pen to write these the last
-words in which I shall ever record the singular gifts by which my friend
-Mr. Sherlock Holmes was distinguished. In an incoherent and, as I deeply
-feel, an entirely inadequate fashion, I have endeavored to give some
-account of my strange experiences in his company from the chance which
-first brought us together at the period of the "Study in Scarlet," up
-to the time of his interference in the matter of the "Naval Treaty"--an
-interference which had the unquestionable effect of preventing a serious
-international complication. It was my intention to have stopped there,
-and to have said nothing of that event which has created a void in my
-life which the lapse of two years has done little to fill. My hand
-has been forced, however, by the recent letters in which Colonel James
-Moriarty defends the memory of his brother, and I have no choice but to
-lay the facts before the public exactly as they occurred. I alone know
-the absolute truth of the matter, and I am satisfied that the time has
-come when no good purpose is to be served by its suppression. As far as
-I know, there have been only three accounts in the public press: that
-in the Journal de Geneve on May 6th, 1891, the Reuter's despatch in the
-English papers on May 7th, and finally the recent letter to which I have
-alluded. Of these the first and second were extremely condensed, while
-the last is, as I shall now show, an absolute perversion of the facts.
-It lies with me to tell for the first time what really took place
-between Professor Moriarty and Mr. Sherlock Holmes.
-
-It may be remembered that after my marriage, and my subsequent start in
-private practice, the very intimate relations which had existed between
-Holmes and myself became to some extent modified. He still came to me
-from time to time when he desired a companion in his investigation, but
-these occasions grew more and more seldom, until I find that in the year
-1890 there were only three cases of which I retain any record. During
-the winter of that year and the early spring of 1891, I saw in the
-papers that he had been engaged by the French government upon a matter
-of supreme importance, and I received two notes from Holmes, dated from
-Narbonne and from Nimes, from which I gathered that his stay in France
-was likely to be a long one. It was with some surprise, therefore, that
-I saw him walk into my consulting-room upon the evening of April 24th.
-It struck me that he was looking even paler and thinner than usual.
-
-"Yes, I have been using myself up rather too freely," he remarked, in
-answer to my look rather than to my words; "I have been a little pressed
-of late. Have you any objection to my closing your shutters?"
-
-The only light in the room came from the lamp upon the table at which I
-had been reading. Holmes edged his way round the wall and flinging the
-shutters together, he bolted them securely.
-
-"You are afraid of something?" I asked.
-
-"Well, I am."
-
-"Of what?"
-
-"Of air-guns."
-
-"My dear Holmes, what do you mean?"
-
-"I think that you know me well enough, Watson, to understand that I am
-by no means a nervous man. At the same time, it is stupidity rather than
-courage to refuse to recognize danger when it is close upon you. Might
-I trouble you for a match?" He drew in the smoke of his cigarette as if
-the soothing influence was grateful to him.
-
-"I must apologize for calling so late," said he, "and I must further beg
-you to be so unconventional as to allow me to leave your house presently
-by scrambling over your back garden wall."
-
-"But what does it all mean?" I asked.
-
-He held out his hand, and I saw in the light of the lamp that two of his
-knuckles were burst and bleeding.
-
-"It is not an airy nothing, you see," said he, smiling. "On the
-contrary, it is solid enough for a man to break his hand over. Is Mrs.
-Watson in?"
-
-"She is away upon a visit."
-
-"Indeed! You are alone?"
-
-"Quite."
-
-"Then it makes it the easier for me to propose that you should come away
-with me for a week to the Continent."
-
-"Where?"
-
-"Oh, anywhere. It's all the same to me."
-
-There was something very strange in all this. It was not Holmes's nature
-to take an aimless holiday, and something about his pale, worn face told
-me that his nerves were at their highest tension. He saw the question in
-my eyes, and, putting his finger-tips together and his elbows upon his
-knees, he explained the situation.
-
-"You have probably never heard of Professor Moriarty?" said he.
-
-"Never."
-
-"Aye, there's the genius and the wonder of the thing!" he cried. "The
-man pervades London, and no one has heard of him. That's what puts
-him on a pinnacle in the records of crime. I tell you, Watson, in all
-seriousness, that if I could beat that man, if I could free society
-of him, I should feel that my own career had reached its summit, and
-I should be prepared to turn to some more placid line in life. Between
-ourselves, the recent cases in which I have been of assistance to the
-royal family of Scandinavia, and to the French republic, have left me in
-such a position that I could continue to live in the quiet fashion
-which is most congenial to me, and to concentrate my attention upon my
-chemical researches. But I could not rest, Watson, I could not sit quiet
-in my chair, if I thought that such a man as Professor Moriarty were
-walking the streets of London unchallenged."
-
-"What has he done, then?"
-
-"His career has been an extraordinary one. He is a man of good birth and
-excellent education, endowed by nature with a phenomenal mathematical
-faculty. At the age of twenty-one he wrote a treatise upon the Binomial
-Theorem, which has had a European vogue. On the strength of it he won
-the Mathematical Chair at one of our smaller universities, and had, to
-all appearances, a most brilliant career before him. But the man had
-hereditary tendencies of the most diabolical kind. A criminal strain
-ran in his blood, which, instead of being modified, was increased and
-rendered infinitely more dangerous by his extraordinary mental powers.
-Dark rumors gathered round him in the university town, and eventually he
-was compelled to resign his chair and to come down to London, where he
-set up as an army coach. So much is known to the world, but what I am
-telling you now is what I have myself discovered.
-
-"As you are aware, Watson, there is no one who knows the higher criminal
-world of London so well as I do. For years past I have continually been
-conscious of some power behind the malefactor, some deep organizing
-power which forever stands in the way of the law, and throws its shield
-over the wrong-doer. Again and again in cases of the most varying
-sorts--forgery cases, robberies, murders--I have felt the presence of
-this force, and I have deduced its action in many of those undiscovered
-crimes in which I have not been personally consulted. For years I have
-endeavored to break through the veil which shrouded it, and at last
-the time came when I seized my thread and followed it, until it led
-me, after a thousand cunning windings, to ex-Professor Moriarty of
-mathematical celebrity.
-
-"He is the Napoleon of crime, Watson. He is the organizer of half that
-is evil and of nearly all that is undetected in this great city. He is a
-genius, a philosopher, an abstract thinker. He has a brain of the first
-order. He sits motionless, like a spider in the center of its web, but
-that web has a thousand radiations, and he knows well every quiver of
-each of them. He does little himself. He only plans. But his agents are
-numerous and splendidly organized. Is there a crime to be done, a
-paper to be abstracted, we will say, a house to be rifled, a man to be
-removed--the word is passed to the Professor, the matter is organized
-and carried out. The agent may be caught. In that case money is found
-for his bail or his defence. But the central power which uses the agent
-is never caught--never so much as suspected. This was the organization
-which I deduced, Watson, and which I devoted my whole energy to exposing
-and breaking up.
-
-"But the Professor was fenced round with safeguards so cunningly devised
-that, do what I would, it seemed impossible to get evidence which would
-convict in a court of law. You know my powers, my dear Watson, and yet
-at the end of three months I was forced to confess that I had at last
-met an antagonist who was my intellectual equal. My horror at his crimes
-was lost in my admiration at his skill. But at last he made a trip--only
-a little, little trip--but it was more than he could afford when I was
-so close upon him. I had my chance, and, starting from that point, I
-have woven my net round him until now it is all ready to close. In three
-days--that is to say, on Monday next--matters will be ripe, and the
-Professor, with all the principal members of his gang, will be in the
-hands of the police. Then will come the greatest criminal trial of the
-century, the clearing up of over forty mysteries, and the rope for all
-of them; but if we move at all prematurely, you understand, they may
-slip out of our hands even at the last moment.
-
-"Now, if I could have done this without the knowledge of Professor
-Moriarty, all would have been well. But he was too wily for that. He saw
-every step which I took to draw my toils round him. Again and again
-he strove to break away, but I as often headed him off. I tell you,
-my friend, that if a detailed account of that silent contest could
-be written, it would take its place as the most brilliant bit of
-thrust-and-parry work in the history of detection. Never have I risen to
-such a height, and never have I been so hard pressed by an opponent. He
-cut deep, and yet I just undercut him. This morning the last steps were
-taken, and three days only were wanted to complete the business. I was
-sitting in my room thinking the matter over, when the door opened and
-Professor Moriarty stood before me.
-
-"My nerves are fairly proof, Watson, but I must confess to a start when
-I saw the very man who had been so much in my thoughts standing there on
-my threshhold. His appearance was quite familiar to me. He is extremely
-tall and thin, his forehead domes out in a white curve, and his two
-eyes are deeply sunken in his head. He is clean-shaven, pale, and
-ascetic-looking, retaining something of the professor in his features.
-His shoulders are rounded from much study, and his face protrudes
-forward, and is forever slowly oscillating from side to side in a
-curiously reptilian fashion. He peered at me with great curiosity in his
-puckered eyes.
-
-"'You have less frontal development than I should have expected,' said
-he, at last. 'It is a dangerous habit to finger loaded firearms in the
-pocket of one's dressing-gown.'
-
-"The fact is that upon his entrance I had instantly recognized the
-extreme personal danger in which I lay. The only conceivable escape for
-him lay in silencing my tongue. In an instant I had slipped the revolver
-from the drawer into my pocket, and was covering him through the cloth.
-At his remark I drew the weapon out and laid it cocked upon the table.
-He still smiled and blinked, but there was something about his eyes
-which made me feel very glad that I had it there.
-
-"'You evidently don't know me,' said he.
-
-"'On the contrary,' I answered, 'I think it is fairly evident that I do.
-Pray take a chair. I can spare you five minutes if you have anything to
-say.'
-
-"'All that I have to say has already crossed your mind,' said he.
-
-"'Then possibly my answer has crossed yours,' I replied.
-
-"'You stand fast?'
-
-"'Absolutely.'
-
-"He clapped his hand into his pocket, and I raised the pistol from
-the table. But he merely drew out a memorandum-book in which he had
-scribbled some dates.
-
-"'You crossed my path on the 4th of January,' said he. 'On the 23d you
-incommoded me; by the middle of February I was seriously inconvenienced
-by you; at the end of March I was absolutely hampered in my plans; and
-now, at the close of April, I find myself placed in such a position
-through your continual persecution that I am in positive danger of
-losing my liberty. The situation is becoming an impossible one.'
-
-"'Have you any suggestion to make?' I asked.
-
-"'You must drop it, Mr. Holmes,' said he, swaying his face about. 'You
-really must, you know.'
-
-"'After Monday,' said I.
-
-"'Tut, tut,' said he. 'I am quite sure that a man of your intelligence
-will see that there can be but one outcome to this affair. It is
-necessary that you should withdraw. You have worked things in such a
-fashion that we have only one resource left. It has been an intellectual
-treat to me to see the way in which you have grappled with this affair,
-and I say, unaffectedly, that it would be a grief to me to be forced
-to take any extreme measure. You smile, sir, but I assure you that it
-really would.'
-
-"'Danger is part of my trade,' I remarked.
-
-"'That is not danger,' said he. 'It is inevitable destruction. You stand
-in the way not merely of an individual, but of a mighty organization,
-the full extent of which you, with all your cleverness, have been unable
-to realize. You must stand clear, Mr. Holmes, or be trodden under foot.'
-
-"'I am afraid,' said I, rising, 'that in the pleasure of this
-conversation I am neglecting business of importance which awaits me
-elsewhere.'
-
-"He rose also and looked at me in silence, shaking his head sadly.
-
-"'Well, well,' said he, at last. 'It seems a pity, but I have done
-what I could. I know every move of your game. You can do nothing before
-Monday. It has been a duel between you and me, Mr. Holmes. You hope to
-place me in the dock. I tell you that I will never stand in the dock.
-You hope to beat me. I tell you that you will never beat me. If you are
-clever enough to bring destruction upon me, rest assured that I shall do
-as much to you.'
-
-"'You have paid me several compliments, Mr. Moriarty,' said I. 'Let me
-pay you one in return when I say that if I were assured of the former
-eventuality I would, in the interests of the public, cheerfully accept
-the latter.'
-
-"'I can promise you the one, but not the other,' he snarled, and so
-turned his rounded back upon me, and went peering and blinking out of
-the room.
-
-"That was my singular interview with Professor Moriarty. I confess that
-it left an unpleasant effect upon my mind. His soft, precise fashion
-of speech leaves a conviction of sincerity which a mere bully could
-not produce. Of course, you will say: 'Why not take police precautions
-against him?' the reason is that I am well convinced that it is from his
-agents the blow will fall. I have the best proofs that it would be so."
-
-"You have already been assaulted?"
-
-"My dear Watson, Professor Moriarty is not a man who lets the grass grow
-under his feet. I went out about mid-day to transact some business in
-Oxford Street. As I passed the corner which leads from Bentinck Street
-on to the Welbeck Street crossing a two-horse van furiously driven
-whizzed round and was on me like a flash. I sprang for the foot-path
-and saved myself by the fraction of a second. The van dashed round by
-Marylebone Lane and was gone in an instant. I kept to the pavement after
-that, Watson, but as I walked down Vere Street a brick came down from
-the roof of one of the houses, and was shattered to fragments at my
-feet. I called the police and had the place examined. There were slates
-and bricks piled up on the roof preparatory to some repairs, and they
-would have me believe that the wind had toppled over one of these. Of
-course I knew better, but I could prove nothing. I took a cab after that
-and reached my brother's rooms in Pall Mall, where I spent the day. Now
-I have come round to you, and on my way I was attacked by a rough with a
-bludgeon. I knocked him down, and the police have him in custody; but
-I can tell you with the most absolute confidence that no possible
-connection will ever be traced between the gentleman upon whose front
-teeth I have barked my knuckles and the retiring mathematical coach, who
-is, I dare say, working out problems upon a black-board ten miles away.
-You will not wonder, Watson, that my first act on entering your rooms
-was to close your shutters, and that I have been compelled to ask your
-permission to leave the house by some less conspicuous exit than the
-front door."
-
-I had often admired my friend's courage, but never more than now, as he
-sat quietly checking off a series of incidents which must have combined
-to make up a day of horror.
-
-"You will spend the night here?" I said.
-
-"No, my friend, you might find me a dangerous guest. I have my plans
-laid, and all will be well. Matters have gone so far now that they can
-move without my help as far as the arrest goes, though my presence is
-necessary for a conviction. It is obvious, therefore, that I cannot do
-better than get away for the few days which remain before the police are
-at liberty to act. It would be a great pleasure to me, therefore, if you
-could come on to the Continent with me."
-
-"The practice is quiet," said I, "and I have an accommodating neighbor.
-I should be glad to come."
-
-"And to start to-morrow morning?"
-
-"If necessary."
-
-"Oh yes, it is most necessary. Then these are your instructions, and I
-beg, my dear Watson, that you will obey them to the letter, for you are
-now playing a double-handed game with me against the cleverest rogue and
-the most powerful syndicate of criminals in Europe. Now listen! You
-will dispatch whatever luggage you intend to take by a trusty messenger
-unaddressed to Victoria to-night. In the morning you will send for a
-hansom, desiring your man to take neither the first nor the second which
-may present itself. Into this hansom you will jump, and you will drive
-to the Strand end of the Lowther Arcade, handing the address to the
-cabman upon a slip of paper, with a request that he will not throw it
-away. Have your fare ready, and the instant that your cab stops,
-dash through the Arcade, timing yourself to reach the other side at a
-quarter-past nine. You will find a small brougham waiting close to the
-curb, driven by a fellow with a heavy black cloak tipped at the collar
-with red. Into this you will step, and you will reach Victoria in time
-for the Continental express."
-
-"Where shall I meet you?"
-
-"At the station. The second first-class carriage from the front will be
-reserved for us."
-
-"The carriage is our rendezvous, then?"
-
-"Yes."
-
-It was in vain that I asked Holmes to remain for the evening. It was
-evident to me that he thought he might bring trouble to the roof he was
-under, and that that was the motive which impelled him to go. With a few
-hurried words as to our plans for the morrow he rose and came out with
-me into the garden, clambering over the wall which leads into Mortimer
-Street, and immediately whistling for a hansom, in which I heard him
-drive away.
-
-In the morning I obeyed Holmes's injunctions to the letter. A hansom was
-procured with such precaution as would prevent its being one which was
-placed ready for us, and I drove immediately after breakfast to the
-Lowther Arcade, through which I hurried at the top of my speed. A
-brougham was waiting with a very massive driver wrapped in a dark cloak,
-who, the instant that I had stepped in, whipped up the horse and rattled
-off to Victoria Station. On my alighting there he turned the carriage,
-and dashed away again without so much as a look in my direction.
-
-So far all had gone admirably. My luggage was waiting for me, and I had
-no difficulty in finding the carriage which Holmes had indicated, the
-less so as it was the only one in the train which was marked "Engaged."
-My only source of anxiety now was the non-appearance of Holmes. The
-station clock marked only seven minutes from the time when we were
-due to start. In vain I searched among the groups of travellers and
-leave-takers for the lithe figure of my friend. There was no sign of
-him. I spent a few minutes in assisting a venerable Italian priest, who
-was endeavoring to make a porter understand, in his broken English,
-that his luggage was to be booked through to Paris. Then, having taken
-another look round, I returned to my carriage, where I found that the
-porter, in spite of the ticket, had given me my decrepit Italian friend
-as a traveling companion. It was useless for me to explain to him that
-his presence was an intrusion, for my Italian was even more limited than
-his English, so I shrugged my shoulders resignedly, and continued to
-look out anxiously for my friend. A chill of fear had come over me, as I
-thought that his absence might mean that some blow had fallen during the
-night. Already the doors had all been shut and the whistle blown, when--
-
-"My dear Watson," said a voice, "you have not even condescended to say
-good-morning."
-
-I turned in uncontrollable astonishment. The aged ecclesiastic had
-turned his face towards me. For an instant the wrinkles were smoothed
-away, the nose drew away from the chin, the lower lip ceased to protrude
-and the mouth to mumble, the dull eyes regained their fire, the drooping
-figure expanded. The next the whole frame collapsed again, and Holmes
-had gone as quickly as he had come.
-
-"Good heavens!" I cried; "how you startled me!"
-
-"Every precaution is still necessary," he whispered. "I have reason to
-think that they are hot upon our trail. Ah, there is Moriarty himself."
-
-The train had already begun to move as Holmes spoke. Glancing back, I
-saw a tall man pushing his way furiously through the crowd, and waving
-his hand as if he desired to have the train stopped. It was too late,
-however, for we were rapidly gathering momentum, and an instant later
-had shot clear of the station.
-
-"With all our precautions, you see that we have cut it rather fine,"
-said Holmes, laughing. He rose, and throwing off the black cassock and
-hat which had formed his disguise, he packed them away in a hand-bag.
-
-"Have you seen the morning paper, Watson?"
-
-"No."
-
-"You haven't' seen about Baker Street, then?"
-
-"Baker Street?"
-
-"They set fire to our rooms last night. No great harm was done."
-
-"Good heavens, Holmes! this is intolerable."
-
-"They must have lost my track completely after their bludgeon-man was
-arrested. Otherwise they could not have imagined that I had returned
-to my rooms. They have evidently taken the precaution of watching you,
-however, and that is what has brought Moriarty to Victoria. You could
-not have made any slip in coming?"
-
-"I did exactly what you advised."
-
-"Did you find your brougham?"
-
-"Yes, it was waiting."
-
-"Did you recognize your coachman?"
-
-"No."
-
-"It was my brother Mycroft. It is an advantage to get about in such a
-case without taking a mercenary into your confidence. But we must plan
-what we are to do about Moriarty now."
-
-"As this is an express, and as the boat runs in connection with it, I
-should think we have shaken him off very effectively."
-
-"My dear Watson, you evidently did not realize my meaning when I said
-that this man may be taken as being quite on the same intellectual plane
-as myself. You do not imagine that if I were the pursuer I should allow
-myself to be baffled by so slight an obstacle. Why, then, should you
-think so meanly of him?"
-
-"What will he do?"
-
-"What I should do?"
-
-"What would you do, then?"
-
-"Engage a special."
-
-"But it must be late."
-
-"By no means. This train stops at Canterbury; and there is always at
-least a quarter of an hour's delay at the boat. He will catch us there."
-
-"One would think that we were the criminals. Let us have him arrested on
-his arrival."
-
-"It would be to ruin the work of three months. We should get the big
-fish, but the smaller would dart right and left out of the net. On
-Monday we should have them all. No, an arrest is inadmissible."
-
-"What then?"
-
-"We shall get out at Canterbury."
-
-"And then?"
-
-"Well, then we must make a cross-country journey to Newhaven, and so
-over to Dieppe. Moriarty will again do what I should do. He will get on
-to Paris, mark down our luggage, and wait for two days at the depot.
-In the meantime we shall treat ourselves to a couple of carpet-bags,
-encourage the manufactures of the countries through which we travel, and
-make our way at our leisure into Switzerland, via Luxembourg and Basle."
-
-At Canterbury, therefore, we alighted, only to find that we should have
-to wait an hour before we could get a train to Newhaven.
-
-I was still looking rather ruefully after the rapidly disappearing
-luggage-van which contained my wardrobe, when Holmes pulled my sleeve
-and pointed up the line.
-
-"Already, you see," said he.
-
-Far away, from among the Kentish woods there rose a thin spray of smoke.
-A minute later a carriage and engine could be seen flying along the open
-curve which leads to the station. We had hardly time to take our place
-behind a pile of luggage when it passed with a rattle and a roar,
-beating a blast of hot air into our faces.
-
-"There he goes," said Holmes, as we watched the carriage swing and
-rock over the points. "There are limits, you see, to our friend's
-intelligence. It would have been a coup-de-maitre had he deduced what I
-would deduce and acted accordingly."
-
-"And what would he have done had he overtaken us?"
-
-"There cannot be the least doubt that he would have made a murderous
-attack upon me. It is, however, a game at which two may play. The
-question now is whether we should take a premature lunch here, or run
-our chance of starving before we reach the buffet at Newhaven."
-
-
-We made our way to Brussels that night and spent two days there, moving
-on upon the third day as far as Strasburg. On the Monday morning Holmes
-had telegraphed to the London police, and in the evening we found a
-reply waiting for us at our hotel. Holmes tore it open, and then with a
-bitter curse hurled it into the grate.
-
-"I might have known it!" he groaned. "He has escaped!"
-
-"Moriarty?"
-
-"They have secured the whole gang with the exception of him. He has
-given them the slip. Of course, when I had left the country there was no
-one to cope with him. But I did think that I had put the game in their
-hands. I think that you had better return to England, Watson."
-
-"Why?"
-
-"Because you will find me a dangerous companion now. This man's
-occupation is gone. He is lost if he returns to London. If I read his
-character right he will devote his whole energies to revenging himself
-upon me. He said as much in our short interview, and I fancy that he
-meant it. I should certainly recommend you to return to your practice."
-
-It was hardly an appeal to be successful with one who was an
-old campaigner as well as an old friend. We sat in the Strasburg
-salle-à-manger arguing the question for half an hour, but the same night
-we had resumed our journey and were well on our way to Geneva.
-
-For a charming week we wandered up the Valley of the Rhone, and then,
-branching off at Leuk, we made our way over the Gemmi Pass, still deep
-in snow, and so, by way of Interlaken, to Meiringen. It was a lovely
-trip, the dainty green of the spring below, the virgin white of the
-winter above; but it was clear to me that never for one instant did
-Holmes forget the shadow which lay across him. In the homely Alpine
-villages or in the lonely mountain passes, I could tell by his quick
-glancing eyes and his sharp scrutiny of every face that passed us,
-that he was well convinced that, walk where we would, we could not walk
-ourselves clear of the danger which was dogging our footsteps.
-
-Once, I remember, as we passed over the Gemmi, and walked along
-the border of the melancholy Daubensee, a large rock which had been
-dislodged from the ridge upon our right clattered down and roared into
-the lake behind us. In an instant Holmes had raced up on to the ridge,
-and, standing upon a lofty pinnacle, craned his neck in every direction.
-It was in vain that our guide assured him that a fall of stones was a
-common chance in the spring-time at that spot. He said nothing, but
-he smiled at me with the air of a man who sees the fulfillment of that
-which he had expected.
-
-And yet for all his watchfulness he was never depressed. On the
-contrary, I can never recollect having seen him in such exuberant
-spirits. Again and again he recurred to the fact that if he could
-be assured that society was freed from Professor Moriarty he would
-cheerfully bring his own career to a conclusion.
-
-"I think that I may go so far as to say, Watson, that I have not lived
-wholly in vain," he remarked. "If my record were closed to-night I could
-still survey it with equanimity. The air of London is the sweeter for my
-presence. In over a thousand cases I am not aware that I have ever used
-my powers upon the wrong side. Of late I have been tempted to look into
-the problems furnished by nature rather than those more superficial ones
-for which our artificial state of society is responsible. Your memoirs
-will draw to an end, Watson, upon the day that I crown my career by
-the capture or extinction of the most dangerous and capable criminal in
-Europe."
-
-I shall be brief, and yet exact, in the little which remains for me to
-tell. It is not a subject on which I would willingly dwell, and yet I am
-conscious that a duty devolves upon me to omit no detail.
-
-It was on the 3d of May that we reached the little village of Meiringen,
-where we put up at the Englischer Hof, then kept by Peter Steiler the
-elder. Our landlord was an intelligent man, and spoke excellent English,
-having served for three years as waiter at the Grosvenor Hotel in
-London. At his advice, on the afternoon of the 4th we set off together,
-with the intention of crossing the hills and spending the night at the
-hamlet of Rosenlaui. We had strict injunctions, however, on no account
-to pass the falls of Reichenbach, which are about half-way up the hill,
-without making a small detour to see them.
-
-It is indeed, a fearful place. The torrent, swollen by the melting snow,
-plunges into a tremendous abyss, from which the spray rolls up like the
-smoke from a burning house. The shaft into which the river hurls itself
-is an immense chasm, lined by glistening coal-black rock, and narrowing
-into a creaming, boiling pit of incalculable depth, which brims over and
-shoots the stream onward over its jagged lip. The long sweep of green
-water roaring forever down, and the thick flickering curtain of spray
-hissing forever upward, turn a man giddy with their constant whirl and
-clamor. We stood near the edge peering down at the gleam of the breaking
-water far below us against the black rocks, and listening to the
-half-human shout which came booming up with the spray out of the abyss.
-
-The path has been cut half-way round the fall to afford a complete view,
-but it ends abruptly, and the traveler has to return as he came. We had
-turned to do so, when we saw a Swiss lad come running along it with
-a letter in his hand. It bore the mark of the hotel which we had just
-left, and was addressed to me by the landlord. It appeared that within a
-very few minutes of our leaving, an English lady had arrived who was in
-the last stage of consumption. She had wintered at Davos Platz, and was
-journeying now to join her friends at Lucerne, when a sudden hemorrhage
-had overtaken her. It was thought that she could hardly live a few
-hours, but it would be a great consolation to her to see an English
-doctor, and, if I would only return, etc. The good Steiler assured me
-in a postscript that he would himself look upon my compliance as a very
-great favor, since the lady absolutely refused to see a Swiss physician,
-and he could not but feel that he was incurring a great responsibility.
-
-The appeal was one which could not be ignored. It was impossible to
-refuse the request of a fellow-countrywoman dying in a strange land. Yet
-I had my scruples about leaving Holmes. It was finally agreed, however,
-that he should retain the young Swiss messenger with him as guide and
-companion while I returned to Meiringen. My friend would stay some
-little time at the fall, he said, and would then walk slowly over the
-hill to Rosenlaui, where I was to rejoin him in the evening. As I turned
-away I saw Holmes, with his back against a rock and his arms folded,
-gazing down at the rush of the waters. It was the last that I was ever
-destined to see of him in this world.
-
-When I was near the bottom of the descent I looked back. It was
-impossible, from that position, to see the fall, but I could see the
-curving path which winds over the shoulder of the hill and leads to it.
-Along this a man was, I remember, walking very rapidly.
-
-I could see his black figure clearly outlined against the green behind
-him. I noted him, and the energy with which he walked but he passed from
-my mind again as I hurried on upon my errand.
-
-It may have been a little over an hour before I reached Meiringen. Old
-Steiler was standing at the porch of his hotel.
-
-"Well," said I, as I came hurrying up, "I trust that she is no worse?"
-
-A look of surprise passed over his face, and at the first quiver of his
-eyebrows my heart turned to lead in my breast.
-
-"You did not write this?" I said, pulling the letter from my pocket.
-"There is no sick Englishwoman in the hotel?"
-
-"Certainly not!" he cried. "But it has the hotel mark upon it! Ha, it
-must have been written by that tall Englishman who came in after you had
-gone. He said--"
-
-But I waited for none of the landlord's explanations. In a tingle of
-fear I was already running down the village street, and making for the
-path which I had so lately descended. It had taken me an hour to come
-down. For all my efforts two more had passed before I found myself at
-the fall of Reichenbach once more. There was Holmes's Alpine-stock still
-leaning against the rock by which I had left him. But there was no sign
-of him, and it was in vain that I shouted. My only answer was my own
-voice reverberating in a rolling echo from the cliffs around me.
-
-It was the sight of that Alpine-stock which turned me cold and sick.
-He had not gone to Rosenlaui, then. He had remained on that three-foot
-path, with sheer wall on one side and sheer drop on the other, until his
-enemy had overtaken him. The young Swiss had gone too. He had probably
-been in the pay of Moriarty, and had left the two men together. And then
-what had happened? Who was to tell us what had happened then?
-
-I stood for a minute or two to collect myself, for I was dazed with the
-horror of the thing. Then I began to think of Holmes's own methods and
-to try to practise them in reading this tragedy. It was, alas, only too
-easy to do. During our conversation we had not gone to the end of the
-path, and the Alpine-stock marked the place where we had stood. The
-blackish soil is kept forever soft by the incessant drift of spray,
-and a bird would leave its tread upon it. Two lines of footmarks were
-clearly marked along the farther end of the path, both leading away from
-me. There were none returning. A few yards from the end the soil was
-all ploughed up into a patch of mud, and the branches and ferns which
-fringed the chasm were torn and bedraggled. I lay upon my face and
-peered over with the spray spouting up all around me. It had darkened
-since I left, and now I could only see here and there the glistening of
-moisture upon the black walls, and far away down at the end of the shaft
-the gleam of the broken water. I shouted; but only the same half-human
-cry of the fall was borne back to my ears.
-
-But it was destined that I should after all have a last word of greeting
-from my friend and comrade. I have said that his Alpine-stock had been
-left leaning against a rock which jutted on to the path. From the top of
-this bowlder the gleam of something bright caught my eye, and, raising
-my hand, I found that it came from the silver cigarette-case which he
-used to carry. As I took it up a small square of paper upon which it
-had lain fluttered down on to the ground. Unfolding it, I found that it
-consisted of three pages torn from his note-book and addressed to me. It
-was characteristic of the man that the direction was a precise, and the
-writing as firm and clear, as though it had been written in his study.
-
-My dear Watson [it said], I write these few lines through the courtesy
-of Mr. Moriarty, who awaits my convenience for the final discussion of
-those questions which lie between us. He has been giving me a sketch
-of the methods by which he avoided the English police and kept himself
-informed of our movements. They certainly confirm the very high opinion
-which I had formed of his abilities. I am pleased to think that I shall
-be able to free society from any further effects of his presence, though
-I fear that it is at a cost which will give pain to my friends, and
-especially, my dear Watson, to you. I have already explained to you,
-however, that my career had in any case reached its crisis, and that
-no possible conclusion to it could be more congenial to me than this.
-Indeed, if I may make a full confession to you, I was quite convinced
-that the letter from Meiringen was a hoax, and I allowed you to depart
-on that errand under the persuasion that some development of this sort
-would follow. Tell Inspector Patterson that the papers which he needs
-to convict the gang are in pigeonhole M., done up in a blue envelope
-and inscribed "Moriarty." I made every disposition of my property before
-leaving England, and handed it to my brother Mycroft. Pray give my
-greetings to Mrs. Watson, and believe me to be, my dear fellow,
-
-Very sincerely yours,
-
-Sherlock Holmes
-
-
-A few words may suffice to tell the little that remains. An examination
-by experts leaves little doubt that a personal contest between the two
-men ended, as it could hardly fail to end in such a situation, in their
-reeling over, locked in each other's arms. Any attempt at recovering the
-bodies was absolutely hopeless, and there, deep down in that dreadful
-caldron of swirling water and seething foam, will lie for all time the
-most dangerous criminal and the foremost champion of the law of their
-generation. The Swiss youth was never found again, and there can be no
-doubt that he was one of the numerous agents whom Moriarty kept in this
-employ. As to the gang, it will be within the memory of the public
-how completely the evidence which Holmes had accumulated exposed their
-organization, and how heavily the hand of the dead man weighed
-upon them. Of their terrible chief few details came out during the
-proceedings, and if I have now been compelled to make a clear statement
-of his career it is due to those injudicious champions who have
-endeavored to clear his memory by attacks upon him whom I shall ever
-regard as the best and the wisest man whom I have ever known.
-
-
-
-
-
-End of the Project Gutenberg EBook of Memoirs of Sherlock Holmes, by 
-Sir Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-***** This file should be named 834-8.txt or 834-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/8/3/834/
-
-Produced by Angela M. Cable
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.org/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH F3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need, is critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including checks, online payments and credit card donations.
-To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.org
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job
deleted file mode 100644
index 1a008c2..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job
+++ /dev/null
@@ -1,12 +0,0 @@
-mapred.input.dir=data/file1.txt
-mapred.output.dir=output
-mapred.job.name=wordcount(static)
-mapred.mapper.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Map
-mapred.combiner.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Reduce
-mapred.reducer.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Reduce
-mapred.input.format.class=org.apache.hadoop.mapred.TextInputFormat
-mapred.output.format.class=org.apache.hadoop.mapred.TextOutputFormat
-mapred.mapoutput.key.class=org.apache.hadoop.io.Text
-mapred.mapoutput.value.class=org.apache.hadoop.io.IntWritable
-mapred.output.key.class=org.apache.hadoop.io.Text
-mapred.output.value.class=org.apache.hadoop.io.IntWritable
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml
deleted file mode 100644
index b1c0d41..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml
+++ /dev/null
@@ -1,192 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
-  <artifactId>hadoopcompatapp</artifactId>
-  <name>hadoopcompatapp</name>
-
-  <parent>
-    <groupId>edu.uci.ics.hyracks.examples</groupId>
-    <artifactId>hadoop-compat-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
-  </parent>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>copy-dependencies</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore />
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-	</pluginManagement>
-  
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-dependencies</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/application/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/assembly/app-assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      	<groupId>edu.uci.ics.hyracks</groupId>
-      	<artifactId>hyracks-virtualcluster-maven-plugin</artifactId>
-      	<version>0.2.3-SNAPSHOT</version>
-        <configuration>
-          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
-          <hyracksCLIHome>${basedir}/../../../hyracks-cli/target/hyracks-cli-${project.version}-binary-assembly</hyracksCLIHome>
-          <jvmOptions>${jvm.extraargs}</jvmOptions>
-        </configuration>
-        <executions>
-          <execution>
-            <id>hyracks-cc-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-cc</goal>
-            </goals>
-            <configuration>
-	      <workingDir>${project.build.directory}</workingDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>hyracks-nc1-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC1</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-	      <workingDir>${project.build.directory}</workingDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>hyracks-nc2-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC2</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-	      <workingDir>${project.build.directory}</workingDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>deploy-app</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>deploy-app</goal>
-            </goals>
-            <configuration>
-              <ccHost>localhost</ccHost>
-              <appName>compat</appName>
-              <harFile>${project.build.directory}/hadoopcompatapp-${project.version}-app-assembly.zip</harFile>
-            </configuration>
-          </execution>
-	     <execution>
-	       <id>stop-services</id>
-	       <phase>post-integration-test</phase>
-	       <goals>
-	         <goal>stop-services</goal>
-	       </goals>
-             </execution>
-          </executions>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-compiler-plugin</artifactId>
-      	<version>2.0.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-failsafe-plugin</artifactId>
-      	<version>2.8.1</version>
-      	<executions>
-      	  <execution>
-      	    <id>it</id>
-      	    <phase>integration-test</phase>
-      	    <goals>
-      	      <goal>integration-test</goal>
-      	    </goals>
-      	  </execution>
-      	</executions>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-     <dependency>
-        <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
-        <artifactId>hadoopcompathelper</artifactId>
-        <version>0.2.3-SNAPSHOT</version>
-        <scope>compile</scope>
-     </dependency>
-     <dependency>
-        <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
-  	    <artifactId>hadoopcompatclient</artifactId>
-  	    <version>0.2.3-SNAPSHOT</version>
-  	    <type>jar</type>
-  	    <scope>test</scope>
-     </dependency>
-     <dependency>
-  	    <groupId>junit</groupId>
-  	    <artifactId>junit</artifactId>
-  	    <version>4.8.2</version>
-  	    <type>jar</type>
-  	    <scope>test</scope>
-     </dependency>
-  </dependencies>
-</project>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml
deleted file mode 100644
index 43ace6c..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<assembly>
-  <id>app-assembly</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>target/application/lib</directory>
-      <outputDirectory>lib</outputDirectory>
-    </fileSet>
-  </fileSets>
-</assembly>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java
deleted file mode 100644
index a2a8994..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.examples.compat.test;
-
-import java.io.File;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.examples.compat.client.WordCountCompatibility;
-
-public class WordCountCompatibilityIT {
-    @Test
-    public void runWordCount() throws Exception {
-        WordCountCompatibility.main(new String[] { "-cluster", getClusterConf(), "-jobFiles", getWordCountJobFile(),
-                "-applicationName", "compat" });
-    }
-
-    private String getClusterConf() {
-        return new File("conf/local_cluster.conf").getAbsolutePath();
-    }
-
-    private String getWordCountJobFile() {
-        return new File("job/wordcount/wordcount.job").getAbsolutePath();
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
index 054f97d..f52536c 100644
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
+++ b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
@@ -32,8 +32,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
index d4b9abb..c397a72 100644
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
+++ b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
@@ -31,8 +31,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml b/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
index 26d6e32..5e7b5c9 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/text-example/textapp/data/file1.txt b/hyracks/hyracks-examples/text-example/textapp/data/file1.txt
deleted file mode 100644
index c4c3130..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/data/file1.txt
+++ /dev/null
@@ -1,13052 +0,0 @@
-﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-
-Title: The Adventures of Sherlock Holmes
-
-Author: Arthur Conan Doyle
-
-Posting Date: April 18, 2011 [EBook #1661]
-First Posted: November 29, 2002
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-
-
-
-
-
-
-
-
-THE ADVENTURES OF SHERLOCK HOLMES
-
-by
-
-SIR ARTHUR CONAN DOYLE
-
-
-
-   I. A Scandal in Bohemia
-  II. The Red-headed League
- III. A Case of Identity
-  IV. The Boscombe Valley Mystery
-   V. The Five Orange Pips
-  VI. The Man with the Twisted Lip
- VII. The Adventure of the Blue Carbuncle
-VIII. The Adventure of the Speckled Band
-  IX. The Adventure of the Engineer's Thumb
-   X. The Adventure of the Noble Bachelor
-  XI. The Adventure of the Beryl Coronet
- XII. The Adventure of the Copper Beeches
-
-
-
-
-ADVENTURE I. A SCANDAL IN BOHEMIA
-
-I.
-
-To Sherlock Holmes she is always THE woman. I have seldom heard
-him mention her under any other name. In his eyes she eclipses
-and predominates the whole of her sex. It was not that he felt
-any emotion akin to love for Irene Adler. All emotions, and that
-one particularly, were abhorrent to his cold, precise but
-admirably balanced mind. He was, I take it, the most perfect
-reasoning and observing machine that the world has seen, but as a
-lover he would have placed himself in a false position. He never
-spoke of the softer passions, save with a gibe and a sneer. They
-were admirable things for the observer--excellent for drawing the
-veil from men's motives and actions. But for the trained reasoner
-to admit such intrusions into his own delicate and finely
-adjusted temperament was to introduce a distracting factor which
-might throw a doubt upon all his mental results. Grit in a
-sensitive instrument, or a crack in one of his own high-power
-lenses, would not be more disturbing than a strong emotion in a
-nature such as his. And yet there was but one woman to him, and
-that woman was the late Irene Adler, of dubious and questionable
-memory.
-
-I had seen little of Holmes lately. My marriage had drifted us
-away from each other. My own complete happiness, and the
-home-centred interests which rise up around the man who first
-finds himself master of his own establishment, were sufficient to
-absorb all my attention, while Holmes, who loathed every form of
-society with his whole Bohemian soul, remained in our lodgings in
-Baker Street, buried among his old books, and alternating from
-week to week between cocaine and ambition, the drowsiness of the
-drug, and the fierce energy of his own keen nature. He was still,
-as ever, deeply attracted by the study of crime, and occupied his
-immense faculties and extraordinary powers of observation in
-following out those clues, and clearing up those mysteries which
-had been abandoned as hopeless by the official police. From time
-to time I heard some vague account of his doings: of his summons
-to Odessa in the case of the Trepoff murder, of his clearing up
-of the singular tragedy of the Atkinson brothers at Trincomalee,
-and finally of the mission which he had accomplished so
-delicately and successfully for the reigning family of Holland.
-Beyond these signs of his activity, however, which I merely
-shared with all the readers of the daily press, I knew little of
-my former friend and companion.
-
-One night--it was on the twentieth of March, 1888--I was
-returning from a journey to a patient (for I had now returned to
-civil practice), when my way led me through Baker Street. As I
-passed the well-remembered door, which must always be associated
-in my mind with my wooing, and with the dark incidents of the
-Study in Scarlet, I was seized with a keen desire to see Holmes
-again, and to know how he was employing his extraordinary powers.
-His rooms were brilliantly lit, and, even as I looked up, I saw
-his tall, spare figure pass twice in a dark silhouette against
-the blind. He was pacing the room swiftly, eagerly, with his head
-sunk upon his chest and his hands clasped behind him. To me, who
-knew his every mood and habit, his attitude and manner told their
-own story. He was at work again. He had risen out of his
-drug-created dreams and was hot upon the scent of some new
-problem. I rang the bell and was shown up to the chamber which
-had formerly been in part my own.
-
-His manner was not effusive. It seldom was; but he was glad, I
-think, to see me. With hardly a word spoken, but with a kindly
-eye, he waved me to an armchair, threw across his case of cigars,
-and indicated a spirit case and a gasogene in the corner. Then he
-stood before the fire and looked me over in his singular
-introspective fashion.
-
-"Wedlock suits you," he remarked. "I think, Watson, that you have
-put on seven and a half pounds since I saw you."
-
-"Seven!" I answered.
-
-"Indeed, I should have thought a little more. Just a trifle more,
-I fancy, Watson. And in practice again, I observe. You did not
-tell me that you intended to go into harness."
-
-"Then, how do you know?"
-
-"I see it, I deduce it. How do I know that you have been getting
-yourself very wet lately, and that you have a most clumsy and
-careless servant girl?"
-
-"My dear Holmes," said I, "this is too much. You would certainly
-have been burned, had you lived a few centuries ago. It is true
-that I had a country walk on Thursday and came home in a dreadful
-mess, but as I have changed my clothes I can't imagine how you
-deduce it. As to Mary Jane, she is incorrigible, and my wife has
-given her notice, but there, again, I fail to see how you work it
-out."
-
-He chuckled to himself and rubbed his long, nervous hands
-together.
-
-"It is simplicity itself," said he; "my eyes tell me that on the
-inside of your left shoe, just where the firelight strikes it,
-the leather is scored by six almost parallel cuts. Obviously they
-have been caused by someone who has very carelessly scraped round
-the edges of the sole in order to remove crusted mud from it.
-Hence, you see, my double deduction that you had been out in vile
-weather, and that you had a particularly malignant boot-slitting
-specimen of the London slavey. As to your practice, if a
-gentleman walks into my rooms smelling of iodoform, with a black
-mark of nitrate of silver upon his right forefinger, and a bulge
-on the right side of his top-hat to show where he has secreted
-his stethoscope, I must be dull, indeed, if I do not pronounce
-him to be an active member of the medical profession."
-
-I could not help laughing at the ease with which he explained his
-process of deduction. "When I hear you give your reasons," I
-remarked, "the thing always appears to me to be so ridiculously
-simple that I could easily do it myself, though at each
-successive instance of your reasoning I am baffled until you
-explain your process. And yet I believe that my eyes are as good
-as yours."
-
-"Quite so," he answered, lighting a cigarette, and throwing
-himself down into an armchair. "You see, but you do not observe.
-The distinction is clear. For example, you have frequently seen
-the steps which lead up from the hall to this room."
-
-"Frequently."
-
-"How often?"
-
-"Well, some hundreds of times."
-
-"Then how many are there?"
-
-"How many? I don't know."
-
-"Quite so! You have not observed. And yet you have seen. That is
-just my point. Now, I know that there are seventeen steps,
-because I have both seen and observed. By-the-way, since you are
-interested in these little problems, and since you are good
-enough to chronicle one or two of my trifling experiences, you
-may be interested in this." He threw over a sheet of thick,
-pink-tinted note-paper which had been lying open upon the table.
-"It came by the last post," said he. "Read it aloud."
-
-The note was undated, and without either signature or address.
-
-"There will call upon you to-night, at a quarter to eight
-o'clock," it said, "a gentleman who desires to consult you upon a
-matter of the very deepest moment. Your recent services to one of
-the royal houses of Europe have shown that you are one who may
-safely be trusted with matters which are of an importance which
-can hardly be exaggerated. This account of you we have from all
-quarters received. Be in your chamber then at that hour, and do
-not take it amiss if your visitor wear a mask."
-
-"This is indeed a mystery," I remarked. "What do you imagine that
-it means?"
-
-"I have no data yet. It is a capital mistake to theorize before
-one has data. Insensibly one begins to twist facts to suit
-theories, instead of theories to suit facts. But the note itself.
-What do you deduce from it?"
-
-I carefully examined the writing, and the paper upon which it was
-written.
-
-"The man who wrote it was presumably well to do," I remarked,
-endeavouring to imitate my companion's processes. "Such paper
-could not be bought under half a crown a packet. It is peculiarly
-strong and stiff."
-
-"Peculiar--that is the very word," said Holmes. "It is not an
-English paper at all. Hold it up to the light."
-
-I did so, and saw a large "E" with a small "g," a "P," and a
-large "G" with a small "t" woven into the texture of the paper.
-
-"What do you make of that?" asked Holmes.
-
-"The name of the maker, no doubt; or his monogram, rather."
-
-"Not at all. The 'G' with the small 't' stands for
-'Gesellschaft,' which is the German for 'Company.' It is a
-customary contraction like our 'Co.' 'P,' of course, stands for
-'Papier.' Now for the 'Eg.' Let us glance at our Continental
-Gazetteer." He took down a heavy brown volume from his shelves.
-"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
-country--in Bohemia, not far from Carlsbad. 'Remarkable as being
-the scene of the death of Wallenstein, and for its numerous
-glass-factories and paper-mills.' Ha, ha, my boy, what do you
-make of that?" His eyes sparkled, and he sent up a great blue
-triumphant cloud from his cigarette.
-
-"The paper was made in Bohemia," I said.
-
-"Precisely. And the man who wrote the note is a German. Do you
-note the peculiar construction of the sentence--'This account of
-you we have from all quarters received.' A Frenchman or Russian
-could not have written that. It is the German who is so
-uncourteous to his verbs. It only remains, therefore, to discover
-what is wanted by this German who writes upon Bohemian paper and
-prefers wearing a mask to showing his face. And here he comes, if
-I am not mistaken, to resolve all our doubts."
-
-As he spoke there was the sharp sound of horses' hoofs and
-grating wheels against the curb, followed by a sharp pull at the
-bell. Holmes whistled.
-
-"A pair, by the sound," said he. "Yes," he continued, glancing
-out of the window. "A nice little brougham and a pair of
-beauties. A hundred and fifty guineas apiece. There's money in
-this case, Watson, if there is nothing else."
-
-"I think that I had better go, Holmes."
-
-"Not a bit, Doctor. Stay where you are. I am lost without my
-Boswell. And this promises to be interesting. It would be a pity
-to miss it."
-
-"But your client--"
-
-"Never mind him. I may want your help, and so may he. Here he
-comes. Sit down in that armchair, Doctor, and give us your best
-attention."
-
-A slow and heavy step, which had been heard upon the stairs and
-in the passage, paused immediately outside the door. Then there
-was a loud and authoritative tap.
-
-"Come in!" said Holmes.
-
-A man entered who could hardly have been less than six feet six
-inches in height, with the chest and limbs of a Hercules. His
-dress was rich with a richness which would, in England, be looked
-upon as akin to bad taste. Heavy bands of astrakhan were slashed
-across the sleeves and fronts of his double-breasted coat, while
-the deep blue cloak which was thrown over his shoulders was lined
-with flame-coloured silk and secured at the neck with a brooch
-which consisted of a single flaming beryl. Boots which extended
-halfway up his calves, and which were trimmed at the tops with
-rich brown fur, completed the impression of barbaric opulence
-which was suggested by his whole appearance. He carried a
-broad-brimmed hat in his hand, while he wore across the upper
-part of his face, extending down past the cheekbones, a black
-vizard mask, which he had apparently adjusted that very moment,
-for his hand was still raised to it as he entered. From the lower
-part of the face he appeared to be a man of strong character,
-with a thick, hanging lip, and a long, straight chin suggestive
-of resolution pushed to the length of obstinacy.
-
-"You had my note?" he asked with a deep harsh voice and a
-strongly marked German accent. "I told you that I would call." He
-looked from one to the other of us, as if uncertain which to
-address.
-
-"Pray take a seat," said Holmes. "This is my friend and
-colleague, Dr. Watson, who is occasionally good enough to help me
-in my cases. Whom have I the honour to address?"
-
-"You may address me as the Count Von Kramm, a Bohemian nobleman.
-I understand that this gentleman, your friend, is a man of honour
-and discretion, whom I may trust with a matter of the most
-extreme importance. If not, I should much prefer to communicate
-with you alone."
-
-I rose to go, but Holmes caught me by the wrist and pushed me
-back into my chair. "It is both, or none," said he. "You may say
-before this gentleman anything which you may say to me."
-
-The Count shrugged his broad shoulders. "Then I must begin," said
-he, "by binding you both to absolute secrecy for two years; at
-the end of that time the matter will be of no importance. At
-present it is not too much to say that it is of such weight it
-may have an influence upon European history."
-
-"I promise," said Holmes.
-
-"And I."
-
-"You will excuse this mask," continued our strange visitor. "The
-august person who employs me wishes his agent to be unknown to
-you, and I may confess at once that the title by which I have
-just called myself is not exactly my own."
-
-"I was aware of it," said Holmes dryly.
-
-"The circumstances are of great delicacy, and every precaution
-has to be taken to quench what might grow to be an immense
-scandal and seriously compromise one of the reigning families of
-Europe. To speak plainly, the matter implicates the great House
-of Ormstein, hereditary kings of Bohemia."
-
-"I was also aware of that," murmured Holmes, settling himself
-down in his armchair and closing his eyes.
-
-Our visitor glanced with some apparent surprise at the languid,
-lounging figure of the man who had been no doubt depicted to him
-as the most incisive reasoner and most energetic agent in Europe.
-Holmes slowly reopened his eyes and looked impatiently at his
-gigantic client.
-
-"If your Majesty would condescend to state your case," he
-remarked, "I should be better able to advise you."
-
-The man sprang from his chair and paced up and down the room in
-uncontrollable agitation. Then, with a gesture of desperation, he
-tore the mask from his face and hurled it upon the ground. "You
-are right," he cried; "I am the King. Why should I attempt to
-conceal it?"
-
-"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
-before I was aware that I was addressing Wilhelm Gottsreich
-Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
-hereditary King of Bohemia."
-
-"But you can understand," said our strange visitor, sitting down
-once more and passing his hand over his high white forehead, "you
-can understand that I am not accustomed to doing such business in
-my own person. Yet the matter was so delicate that I could not
-confide it to an agent without putting myself in his power. I
-have come incognito from Prague for the purpose of consulting
-you."
-
-"Then, pray consult," said Holmes, shutting his eyes once more.
-
-"The facts are briefly these: Some five years ago, during a
-lengthy visit to Warsaw, I made the acquaintance of the well-known
-adventuress, Irene Adler. The name is no doubt familiar to you."
-
-"Kindly look her up in my index, Doctor," murmured Holmes without
-opening his eyes. For many years he had adopted a system of
-docketing all paragraphs concerning men and things, so that it
-was difficult to name a subject or a person on which he could not
-at once furnish information. In this case I found her biography
-sandwiched in between that of a Hebrew rabbi and that of a
-staff-commander who had written a monograph upon the deep-sea
-fishes.
-
-"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
-1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
-of Warsaw--yes! Retired from operatic stage--ha! Living in
-London--quite so! Your Majesty, as I understand, became entangled
-with this young person, wrote her some compromising letters, and
-is now desirous of getting those letters back."
-
-"Precisely so. But how--"
-
-"Was there a secret marriage?"
-
-"None."
-
-"No legal papers or certificates?"
-
-"None."
-
-"Then I fail to follow your Majesty. If this young person should
-produce her letters for blackmailing or other purposes, how is
-she to prove their authenticity?"
-
-"There is the writing."
-
-"Pooh, pooh! Forgery."
-
-"My private note-paper."
-
-"Stolen."
-
-"My own seal."
-
-"Imitated."
-
-"My photograph."
-
-"Bought."
-
-"We were both in the photograph."
-
-"Oh, dear! That is very bad! Your Majesty has indeed committed an
-indiscretion."
-
-"I was mad--insane."
-
-"You have compromised yourself seriously."
-
-"I was only Crown Prince then. I was young. I am but thirty now."
-
-"It must be recovered."
-
-"We have tried and failed."
-
-"Your Majesty must pay. It must be bought."
-
-"She will not sell."
-
-"Stolen, then."
-
-"Five attempts have been made. Twice burglars in my pay ransacked
-her house. Once we diverted her luggage when she travelled. Twice
-she has been waylaid. There has been no result."
-
-"No sign of it?"
-
-"Absolutely none."
-
-Holmes laughed. "It is quite a pretty little problem," said he.
-
-"But a very serious one to me," returned the King reproachfully.
-
-"Very, indeed. And what does she propose to do with the
-photograph?"
-
-"To ruin me."
-
-"But how?"
-
-"I am about to be married."
-
-"So I have heard."
-
-"To Clotilde Lothman von Saxe-Meningen, second daughter of the
-King of Scandinavia. You may know the strict principles of her
-family. She is herself the very soul of delicacy. A shadow of a
-doubt as to my conduct would bring the matter to an end."
-
-"And Irene Adler?"
-
-"Threatens to send them the photograph. And she will do it. I
-know that she will do it. You do not know her, but she has a soul
-of steel. She has the face of the most beautiful of women, and
-the mind of the most resolute of men. Rather than I should marry
-another woman, there are no lengths to which she would not
-go--none."
-
-"You are sure that she has not sent it yet?"
-
-"I am sure."
-
-"And why?"
-
-"Because she has said that she would send it on the day when the
-betrothal was publicly proclaimed. That will be next Monday."
-
-"Oh, then we have three days yet," said Holmes with a yawn. "That
-is very fortunate, as I have one or two matters of importance to
-look into just at present. Your Majesty will, of course, stay in
-London for the present?"
-
-"Certainly. You will find me at the Langham under the name of the
-Count Von Kramm."
-
-"Then I shall drop you a line to let you know how we progress."
-
-"Pray do so. I shall be all anxiety."
-
-"Then, as to money?"
-
-"You have carte blanche."
-
-"Absolutely?"
-
-"I tell you that I would give one of the provinces of my kingdom
-to have that photograph."
-
-"And for present expenses?"
-
-The King took a heavy chamois leather bag from under his cloak
-and laid it on the table.
-
-"There are three hundred pounds in gold and seven hundred in
-notes," he said.
-
-Holmes scribbled a receipt upon a sheet of his note-book and
-handed it to him.
-
-"And Mademoiselle's address?" he asked.
-
-"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
-
-Holmes took a note of it. "One other question," said he. "Was the
-photograph a cabinet?"
-
-"It was."
-
-"Then, good-night, your Majesty, and I trust that we shall soon
-have some good news for you. And good-night, Watson," he added,
-as the wheels of the royal brougham rolled down the street. "If
-you will be good enough to call to-morrow afternoon at three
-o'clock I should like to chat this little matter over with you."
-
-
-II.
-
-At three o'clock precisely I was at Baker Street, but Holmes had
-not yet returned. The landlady informed me that he had left the
-house shortly after eight o'clock in the morning. I sat down
-beside the fire, however, with the intention of awaiting him,
-however long he might be. I was already deeply interested in his
-inquiry, for, though it was surrounded by none of the grim and
-strange features which were associated with the two crimes which
-I have already recorded, still, the nature of the case and the
-exalted station of his client gave it a character of its own.
-Indeed, apart from the nature of the investigation which my
-friend had on hand, there was something in his masterly grasp of
-a situation, and his keen, incisive reasoning, which made it a
-pleasure to me to study his system of work, and to follow the
-quick, subtle methods by which he disentangled the most
-inextricable mysteries. So accustomed was I to his invariable
-success that the very possibility of his failing had ceased to
-enter into my head.
-
-It was close upon four before the door opened, and a
-drunken-looking groom, ill-kempt and side-whiskered, with an
-inflamed face and disreputable clothes, walked into the room.
-Accustomed as I was to my friend's amazing powers in the use of
-disguises, I had to look three times before I was certain that it
-was indeed he. With a nod he vanished into the bedroom, whence he
-emerged in five minutes tweed-suited and respectable, as of old.
-Putting his hands into his pockets, he stretched out his legs in
-front of the fire and laughed heartily for some minutes.
-
-"Well, really!" he cried, and then he choked and laughed again
-until he was obliged to lie back, limp and helpless, in the
-chair.
-
-"What is it?"
-
-"It's quite too funny. I am sure you could never guess how I
-employed my morning, or what I ended by doing."
-
-"I can't imagine. I suppose that you have been watching the
-habits, and perhaps the house, of Miss Irene Adler."
-
-"Quite so; but the sequel was rather unusual. I will tell you,
-however. I left the house a little after eight o'clock this
-morning in the character of a groom out of work. There is a
-wonderful sympathy and freemasonry among horsey men. Be one of
-them, and you will know all that there is to know. I soon found
-Briony Lodge. It is a bijou villa, with a garden at the back, but
-built out in front right up to the road, two stories. Chubb lock
-to the door. Large sitting-room on the right side, well
-furnished, with long windows almost to the floor, and those
-preposterous English window fasteners which a child could open.
-Behind there was nothing remarkable, save that the passage window
-could be reached from the top of the coach-house. I walked round
-it and examined it closely from every point of view, but without
-noting anything else of interest.
-
-"I then lounged down the street and found, as I expected, that
-there was a mews in a lane which runs down by one wall of the
-garden. I lent the ostlers a hand in rubbing down their horses,
-and received in exchange twopence, a glass of half and half, two
-fills of shag tobacco, and as much information as I could desire
-about Miss Adler, to say nothing of half a dozen other people in
-the neighbourhood in whom I was not in the least interested, but
-whose biographies I was compelled to listen to."
-
-"And what of Irene Adler?" I asked.
-
-"Oh, she has turned all the men's heads down in that part. She is
-the daintiest thing under a bonnet on this planet. So say the
-Serpentine-mews, to a man. She lives quietly, sings at concerts,
-drives out at five every day, and returns at seven sharp for
-dinner. Seldom goes out at other times, except when she sings.
-Has only one male visitor, but a good deal of him. He is dark,
-handsome, and dashing, never calls less than once a day, and
-often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
-the advantages of a cabman as a confidant. They had driven him
-home a dozen times from Serpentine-mews, and knew all about him.
-When I had listened to all they had to tell, I began to walk up
-and down near Briony Lodge once more, and to think over my plan
-of campaign.
-
-"This Godfrey Norton was evidently an important factor in the
-matter. He was a lawyer. That sounded ominous. What was the
-relation between them, and what the object of his repeated
-visits? Was she his client, his friend, or his mistress? If the
-former, she had probably transferred the photograph to his
-keeping. If the latter, it was less likely. On the issue of this
-question depended whether I should continue my work at Briony
-Lodge, or turn my attention to the gentleman's chambers in the
-Temple. It was a delicate point, and it widened the field of my
-inquiry. I fear that I bore you with these details, but I have to
-let you see my little difficulties, if you are to understand the
-situation."
-
-"I am following you closely," I answered.
-
-"I was still balancing the matter in my mind when a hansom cab
-drove up to Briony Lodge, and a gentleman sprang out. He was a
-remarkably handsome man, dark, aquiline, and moustached--evidently
-the man of whom I had heard. He appeared to be in a
-great hurry, shouted to the cabman to wait, and brushed past the
-maid who opened the door with the air of a man who was thoroughly
-at home.
-
-"He was in the house about half an hour, and I could catch
-glimpses of him in the windows of the sitting-room, pacing up and
-down, talking excitedly, and waving his arms. Of her I could see
-nothing. Presently he emerged, looking even more flurried than
-before. As he stepped up to the cab, he pulled a gold watch from
-his pocket and looked at it earnestly, 'Drive like the devil,' he
-shouted, 'first to Gross & Hankey's in Regent Street, and then to
-the Church of St. Monica in the Edgeware Road. Half a guinea if
-you do it in twenty minutes!'
-
-"Away they went, and I was just wondering whether I should not do
-well to follow them when up the lane came a neat little landau,
-the coachman with his coat only half-buttoned, and his tie under
-his ear, while all the tags of his harness were sticking out of
-the buckles. It hadn't pulled up before she shot out of the hall
-door and into it. I only caught a glimpse of her at the moment,
-but she was a lovely woman, with a face that a man might die for.
-
-"'The Church of St. Monica, John,' she cried, 'and half a
-sovereign if you reach it in twenty minutes.'
-
-"This was quite too good to lose, Watson. I was just balancing
-whether I should run for it, or whether I should perch behind her
-landau when a cab came through the street. The driver looked
-twice at such a shabby fare, but I jumped in before he could
-object. 'The Church of St. Monica,' said I, 'and half a sovereign
-if you reach it in twenty minutes.' It was twenty-five minutes to
-twelve, and of course it was clear enough what was in the wind.
-
-"My cabby drove fast. I don't think I ever drove faster, but the
-others were there before us. The cab and the landau with their
-steaming horses were in front of the door when I arrived. I paid
-the man and hurried into the church. There was not a soul there
-save the two whom I had followed and a surpliced clergyman, who
-seemed to be expostulating with them. They were all three
-standing in a knot in front of the altar. I lounged up the side
-aisle like any other idler who has dropped into a church.
-Suddenly, to my surprise, the three at the altar faced round to
-me, and Godfrey Norton came running as hard as he could towards
-me.
-
-"'Thank God,' he cried. 'You'll do. Come! Come!'
-
-"'What then?' I asked.
-
-"'Come, man, come, only three minutes, or it won't be legal.'
-
-"I was half-dragged up to the altar, and before I knew where I was
-I found myself mumbling responses which were whispered in my ear,
-and vouching for things of which I knew nothing, and generally
-assisting in the secure tying up of Irene Adler, spinster, to
-Godfrey Norton, bachelor. It was all done in an instant, and
-there was the gentleman thanking me on the one side and the lady
-on the other, while the clergyman beamed on me in front. It was
-the most preposterous position in which I ever found myself in my
-life, and it was the thought of it that started me laughing just
-now. It seems that there had been some informality about their
-license, that the clergyman absolutely refused to marry them
-without a witness of some sort, and that my lucky appearance
-saved the bridegroom from having to sally out into the streets in
-search of a best man. The bride gave me a sovereign, and I mean
-to wear it on my watch-chain in memory of the occasion."
-
-"This is a very unexpected turn of affairs," said I; "and what
-then?"
-
-"Well, I found my plans very seriously menaced. It looked as if
-the pair might take an immediate departure, and so necessitate
-very prompt and energetic measures on my part. At the church
-door, however, they separated, he driving back to the Temple, and
-she to her own house. 'I shall drive out in the park at five as
-usual,' she said as she left him. I heard no more. They drove
-away in different directions, and I went off to make my own
-arrangements."
-
-"Which are?"
-
-"Some cold beef and a glass of beer," he answered, ringing the
-bell. "I have been too busy to think of food, and I am likely to
-be busier still this evening. By the way, Doctor, I shall want
-your co-operation."
-
-"I shall be delighted."
-
-"You don't mind breaking the law?"
-
-"Not in the least."
-
-"Nor running a chance of arrest?"
-
-"Not in a good cause."
-
-"Oh, the cause is excellent!"
-
-"Then I am your man."
-
-"I was sure that I might rely on you."
-
-"But what is it you wish?"
-
-"When Mrs. Turner has brought in the tray I will make it clear to
-you. Now," he said as he turned hungrily on the simple fare that
-our landlady had provided, "I must discuss it while I eat, for I
-have not much time. It is nearly five now. In two hours we must
-be on the scene of action. Miss Irene, or Madame, rather, returns
-from her drive at seven. We must be at Briony Lodge to meet her."
-
-"And what then?"
-
-"You must leave that to me. I have already arranged what is to
-occur. There is only one point on which I must insist. You must
-not interfere, come what may. You understand?"
-
-"I am to be neutral?"
-
-"To do nothing whatever. There will probably be some small
-unpleasantness. Do not join in it. It will end in my being
-conveyed into the house. Four or five minutes afterwards the
-sitting-room window will open. You are to station yourself close
-to that open window."
-
-"Yes."
-
-"You are to watch me, for I will be visible to you."
-
-"Yes."
-
-"And when I raise my hand--so--you will throw into the room what
-I give you to throw, and will, at the same time, raise the cry of
-fire. You quite follow me?"
-
-"Entirely."
-
-"It is nothing very formidable," he said, taking a long cigar-shaped
-roll from his pocket. "It is an ordinary plumber's smoke-rocket,
-fitted with a cap at either end to make it self-lighting.
-Your task is confined to that. When you raise your cry of fire,
-it will be taken up by quite a number of people. You may then
-walk to the end of the street, and I will rejoin you in ten
-minutes. I hope that I have made myself clear?"
-
-"I am to remain neutral, to get near the window, to watch you,
-and at the signal to throw in this object, then to raise the cry
-of fire, and to wait you at the corner of the street."
-
-"Precisely."
-
-"Then you may entirely rely on me."
-
-"That is excellent. I think, perhaps, it is almost time that I
-prepare for the new role I have to play."
-
-He disappeared into his bedroom and returned in a few minutes in
-the character of an amiable and simple-minded Nonconformist
-clergyman. His broad black hat, his baggy trousers, his white
-tie, his sympathetic smile, and general look of peering and
-benevolent curiosity were such as Mr. John Hare alone could have
-equalled. It was not merely that Holmes changed his costume. His
-expression, his manner, his very soul seemed to vary with every
-fresh part that he assumed. The stage lost a fine actor, even as
-science lost an acute reasoner, when he became a specialist in
-crime.
-
-It was a quarter past six when we left Baker Street, and it still
-wanted ten minutes to the hour when we found ourselves in
-Serpentine Avenue. It was already dusk, and the lamps were just
-being lighted as we paced up and down in front of Briony Lodge,
-waiting for the coming of its occupant. The house was just such
-as I had pictured it from Sherlock Holmes' succinct description,
-but the locality appeared to be less private than I expected. On
-the contrary, for a small street in a quiet neighbourhood, it was
-remarkably animated. There was a group of shabbily dressed men
-smoking and laughing in a corner, a scissors-grinder with his
-wheel, two guardsmen who were flirting with a nurse-girl, and
-several well-dressed young men who were lounging up and down with
-cigars in their mouths.
-
-"You see," remarked Holmes, as we paced to and fro in front of
-the house, "this marriage rather simplifies matters. The
-photograph becomes a double-edged weapon now. The chances are
-that she would be as averse to its being seen by Mr. Godfrey
-Norton, as our client is to its coming to the eyes of his
-princess. Now the question is, Where are we to find the
-photograph?"
-
-"Where, indeed?"
-
-"It is most unlikely that she carries it about with her. It is
-cabinet size. Too large for easy concealment about a woman's
-dress. She knows that the King is capable of having her waylaid
-and searched. Two attempts of the sort have already been made. We
-may take it, then, that she does not carry it about with her."
-
-"Where, then?"
-
-"Her banker or her lawyer. There is that double possibility. But
-I am inclined to think neither. Women are naturally secretive,
-and they like to do their own secreting. Why should she hand it
-over to anyone else? She could trust her own guardianship, but
-she could not tell what indirect or political influence might be
-brought to bear upon a business man. Besides, remember that she
-had resolved to use it within a few days. It must be where she
-can lay her hands upon it. It must be in her own house."
-
-"But it has twice been burgled."
-
-"Pshaw! They did not know how to look."
-
-"But how will you look?"
-
-"I will not look."
-
-"What then?"
-
-"I will get her to show me."
-
-"But she will refuse."
-
-"She will not be able to. But I hear the rumble of wheels. It is
-her carriage. Now carry out my orders to the letter."
-
-As he spoke the gleam of the side-lights of a carriage came round
-the curve of the avenue. It was a smart little landau which
-rattled up to the door of Briony Lodge. As it pulled up, one of
-the loafing men at the corner dashed forward to open the door in
-the hope of earning a copper, but was elbowed away by another
-loafer, who had rushed up with the same intention. A fierce
-quarrel broke out, which was increased by the two guardsmen, who
-took sides with one of the loungers, and by the scissors-grinder,
-who was equally hot upon the other side. A blow was struck, and
-in an instant the lady, who had stepped from her carriage, was
-the centre of a little knot of flushed and struggling men, who
-struck savagely at each other with their fists and sticks. Holmes
-dashed into the crowd to protect the lady; but just as he reached
-her he gave a cry and dropped to the ground, with the blood
-running freely down his face. At his fall the guardsmen took to
-their heels in one direction and the loungers in the other, while
-a number of better-dressed people, who had watched the scuffle
-without taking part in it, crowded in to help the lady and to
-attend to the injured man. Irene Adler, as I will still call her,
-had hurried up the steps; but she stood at the top with her
-superb figure outlined against the lights of the hall, looking
-back into the street.
-
-"Is the poor gentleman much hurt?" she asked.
-
-"He is dead," cried several voices.
-
-"No, no, there's life in him!" shouted another. "But he'll be
-gone before you can get him to hospital."
-
-"He's a brave fellow," said a woman. "They would have had the
-lady's purse and watch if it hadn't been for him. They were a
-gang, and a rough one, too. Ah, he's breathing now."
-
-"He can't lie in the street. May we bring him in, marm?"
-
-"Surely. Bring him into the sitting-room. There is a comfortable
-sofa. This way, please!"
-
-Slowly and solemnly he was borne into Briony Lodge and laid out
-in the principal room, while I still observed the proceedings
-from my post by the window. The lamps had been lit, but the
-blinds had not been drawn, so that I could see Holmes as he lay
-upon the couch. I do not know whether he was seized with
-compunction at that moment for the part he was playing, but I
-know that I never felt more heartily ashamed of myself in my life
-than when I saw the beautiful creature against whom I was
-conspiring, or the grace and kindliness with which she waited
-upon the injured man. And yet it would be the blackest treachery
-to Holmes to draw back now from the part which he had intrusted
-to me. I hardened my heart, and took the smoke-rocket from under
-my ulster. After all, I thought, we are not injuring her. We are
-but preventing her from injuring another.
-
-Holmes had sat up upon the couch, and I saw him motion like a man
-who is in need of air. A maid rushed across and threw open the
-window. At the same instant I saw him raise his hand and at the
-signal I tossed my rocket into the room with a cry of "Fire!" The
-word was no sooner out of my mouth than the whole crowd of
-spectators, well dressed and ill--gentlemen, ostlers, and
-servant-maids--joined in a general shriek of "Fire!" Thick clouds
-of smoke curled through the room and out at the open window. I
-caught a glimpse of rushing figures, and a moment later the voice
-of Holmes from within assuring them that it was a false alarm.
-Slipping through the shouting crowd I made my way to the corner
-of the street, and in ten minutes was rejoiced to find my
-friend's arm in mine, and to get away from the scene of uproar.
-He walked swiftly and in silence for some few minutes until we
-had turned down one of the quiet streets which lead towards the
-Edgeware Road.
-
-"You did it very nicely, Doctor," he remarked. "Nothing could
-have been better. It is all right."
-
-"You have the photograph?"
-
-"I know where it is."
-
-"And how did you find out?"
-
-"She showed me, as I told you she would."
-
-"I am still in the dark."
-
-"I do not wish to make a mystery," said he, laughing. "The matter
-was perfectly simple. You, of course, saw that everyone in the
-street was an accomplice. They were all engaged for the evening."
-
-"I guessed as much."
-
-"Then, when the row broke out, I had a little moist red paint in
-the palm of my hand. I rushed forward, fell down, clapped my hand
-to my face, and became a piteous spectacle. It is an old trick."
-
-"That also I could fathom."
-
-"Then they carried me in. She was bound to have me in. What else
-could she do? And into her sitting-room, which was the very room
-which I suspected. It lay between that and her bedroom, and I was
-determined to see which. They laid me on a couch, I motioned for
-air, they were compelled to open the window, and you had your
-chance."
-
-"How did that help you?"
-
-"It was all-important. When a woman thinks that her house is on
-fire, her instinct is at once to rush to the thing which she
-values most. It is a perfectly overpowering impulse, and I have
-more than once taken advantage of it. In the case of the
-Darlington substitution scandal it was of use to me, and also in
-the Arnsworth Castle business. A married woman grabs at her baby;
-an unmarried one reaches for her jewel-box. Now it was clear to
-me that our lady of to-day had nothing in the house more precious
-to her than what we are in quest of. She would rush to secure it.
-The alarm of fire was admirably done. The smoke and shouting were
-enough to shake nerves of steel. She responded beautifully. The
-photograph is in a recess behind a sliding panel just above the
-right bell-pull. She was there in an instant, and I caught a
-glimpse of it as she half-drew it out. When I cried out that it
-was a false alarm, she replaced it, glanced at the rocket, rushed
-from the room, and I have not seen her since. I rose, and, making
-my excuses, escaped from the house. I hesitated whether to
-attempt to secure the photograph at once; but the coachman had
-come in, and as he was watching me narrowly it seemed safer to
-wait. A little over-precipitance may ruin all."
-
-"And now?" I asked.
-
-"Our quest is practically finished. I shall call with the King
-to-morrow, and with you, if you care to come with us. We will be
-shown into the sitting-room to wait for the lady, but it is
-probable that when she comes she may find neither us nor the
-photograph. It might be a satisfaction to his Majesty to regain
-it with his own hands."
-
-"And when will you call?"
-
-"At eight in the morning. She will not be up, so that we shall
-have a clear field. Besides, we must be prompt, for this marriage
-may mean a complete change in her life and habits. I must wire to
-the King without delay."
-
-We had reached Baker Street and had stopped at the door. He was
-searching his pockets for the key when someone passing said:
-
-"Good-night, Mister Sherlock Holmes."
-
-There were several people on the pavement at the time, but the
-greeting appeared to come from a slim youth in an ulster who had
-hurried by.
-
-"I've heard that voice before," said Holmes, staring down the
-dimly lit street. "Now, I wonder who the deuce that could have
-been."
-
-
-III.
-
-I slept at Baker Street that night, and we were engaged upon our
-toast and coffee in the morning when the King of Bohemia rushed
-into the room.
-
-"You have really got it!" he cried, grasping Sherlock Holmes by
-either shoulder and looking eagerly into his face.
-
-"Not yet."
-
-"But you have hopes?"
-
-"I have hopes."
-
-"Then, come. I am all impatience to be gone."
-
-"We must have a cab."
-
-"No, my brougham is waiting."
-
-"Then that will simplify matters." We descended and started off
-once more for Briony Lodge.
-
-"Irene Adler is married," remarked Holmes.
-
-"Married! When?"
-
-"Yesterday."
-
-"But to whom?"
-
-"To an English lawyer named Norton."
-
-"But she could not love him."
-
-"I am in hopes that she does."
-
-"And why in hopes?"
-
-"Because it would spare your Majesty all fear of future
-annoyance. If the lady loves her husband, she does not love your
-Majesty. If she does not love your Majesty, there is no reason
-why she should interfere with your Majesty's plan."
-
-"It is true. And yet--Well! I wish she had been of my own
-station! What a queen she would have made!" He relapsed into a
-moody silence, which was not broken until we drew up in
-Serpentine Avenue.
-
-The door of Briony Lodge was open, and an elderly woman stood
-upon the steps. She watched us with a sardonic eye as we stepped
-from the brougham.
-
-"Mr. Sherlock Holmes, I believe?" said she.
-
-"I am Mr. Holmes," answered my companion, looking at her with a
-questioning and rather startled gaze.
-
-"Indeed! My mistress told me that you were likely to call. She
-left this morning with her husband by the 5:15 train from Charing
-Cross for the Continent."
-
-"What!" Sherlock Holmes staggered back, white with chagrin and
-surprise. "Do you mean that she has left England?"
-
-"Never to return."
-
-"And the papers?" asked the King hoarsely. "All is lost."
-
-"We shall see." He pushed past the servant and rushed into the
-drawing-room, followed by the King and myself. The furniture was
-scattered about in every direction, with dismantled shelves and
-open drawers, as if the lady had hurriedly ransacked them before
-her flight. Holmes rushed at the bell-pull, tore back a small
-sliding shutter, and, plunging in his hand, pulled out a
-photograph and a letter. The photograph was of Irene Adler
-herself in evening dress, the letter was superscribed to
-"Sherlock Holmes, Esq. To be left till called for." My friend
-tore it open and we all three read it together. It was dated at
-midnight of the preceding night and ran in this way:
-
-"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
-took me in completely. Until after the alarm of fire, I had not a
-suspicion. But then, when I found how I had betrayed myself, I
-began to think. I had been warned against you months ago. I had
-been told that if the King employed an agent it would certainly
-be you. And your address had been given me. Yet, with all this,
-you made me reveal what you wanted to know. Even after I became
-suspicious, I found it hard to think evil of such a dear, kind
-old clergyman. But, you know, I have been trained as an actress
-myself. Male costume is nothing new to me. I often take advantage
-of the freedom which it gives. I sent John, the coachman, to
-watch you, ran up stairs, got into my walking-clothes, as I call
-them, and came down just as you departed.
-
-"Well, I followed you to your door, and so made sure that I was
-really an object of interest to the celebrated Mr. Sherlock
-Holmes. Then I, rather imprudently, wished you good-night, and
-started for the Temple to see my husband.
-
-"We both thought the best resource was flight, when pursued by
-so formidable an antagonist; so you will find the nest empty when
-you call to-morrow. As to the photograph, your client may rest in
-peace. I love and am loved by a better man than he. The King may
-do what he will without hindrance from one whom he has cruelly
-wronged. I keep it only to safeguard myself, and to preserve a
-weapon which will always secure me from any steps which he might
-take in the future. I leave a photograph which he might care to
-possess; and I remain, dear Mr. Sherlock Holmes,
-
-                                      "Very truly yours,
-                                   "IRENE NORTON, née ADLER."
-
-"What a woman--oh, what a woman!" cried the King of Bohemia, when
-we had all three read this epistle. "Did I not tell you how quick
-and resolute she was? Would she not have made an admirable queen?
-Is it not a pity that she was not on my level?"
-
-"From what I have seen of the lady she seems indeed to be on a
-very different level to your Majesty," said Holmes coldly. "I am
-sorry that I have not been able to bring your Majesty's business
-to a more successful conclusion."
-
-"On the contrary, my dear sir," cried the King; "nothing could be
-more successful. I know that her word is inviolate. The
-photograph is now as safe as if it were in the fire."
-
-"I am glad to hear your Majesty say so."
-
-"I am immensely indebted to you. Pray tell me in what way I can
-reward you. This ring--" He slipped an emerald snake ring from
-his finger and held it out upon the palm of his hand.
-
-"Your Majesty has something which I should value even more
-highly," said Holmes.
-
-"You have but to name it."
-
-"This photograph!"
-
-The King stared at him in amazement.
-
-"Irene's photograph!" he cried. "Certainly, if you wish it."
-
-"I thank your Majesty. Then there is no more to be done in the
-matter. I have the honour to wish you a very good-morning." He
-bowed, and, turning away without observing the hand which the
-King had stretched out to him, he set off in my company for his
-chambers.
-
-And that was how a great scandal threatened to affect the kingdom
-of Bohemia, and how the best plans of Mr. Sherlock Holmes were
-beaten by a woman's wit. He used to make merry over the
-cleverness of women, but I have not heard him do it of late. And
-when he speaks of Irene Adler, or when he refers to her
-photograph, it is always under the honourable title of the woman.
-
-
-
-ADVENTURE II. THE RED-HEADED LEAGUE
-
-I had called upon my friend, Mr. Sherlock Holmes, one day in the
-autumn of last year and found him in deep conversation with a
-very stout, florid-faced, elderly gentleman with fiery red hair.
-With an apology for my intrusion, I was about to withdraw when
-Holmes pulled me abruptly into the room and closed the door
-behind me.
-
-"You could not possibly have come at a better time, my dear
-Watson," he said cordially.
-
-"I was afraid that you were engaged."
-
-"So I am. Very much so."
-
-"Then I can wait in the next room."
-
-"Not at all. This gentleman, Mr. Wilson, has been my partner and
-helper in many of my most successful cases, and I have no
-doubt that he will be of the utmost use to me in yours also."
-
-The stout gentleman half rose from his chair and gave a bob of
-greeting, with a quick little questioning glance from his small
-fat-encircled eyes.
-
-"Try the settee," said Holmes, relapsing into his armchair and
-putting his fingertips together, as was his custom when in
-judicial moods. "I know, my dear Watson, that you share my love
-of all that is bizarre and outside the conventions and humdrum
-routine of everyday life. You have shown your relish for it by
-the enthusiasm which has prompted you to chronicle, and, if you
-will excuse my saying so, somewhat to embellish so many of my own
-little adventures."
-
-"Your cases have indeed been of the greatest interest to me," I
-observed.
-
-"You will remember that I remarked the other day, just before we
-went into the very simple problem presented by Miss Mary
-Sutherland, that for strange effects and extraordinary
-combinations we must go to life itself, which is always far more
-daring than any effort of the imagination."
-
-"A proposition which I took the liberty of doubting."
-
-"You did, Doctor, but none the less you must come round to my
-view, for otherwise I shall keep on piling fact upon fact on you
-until your reason breaks down under them and acknowledges me to
-be right. Now, Mr. Jabez Wilson here has been good enough to call
-upon me this morning, and to begin a narrative which promises to
-be one of the most singular which I have listened to for some
-time. You have heard me remark that the strangest and most unique
-things are very often connected not with the larger but with the
-smaller crimes, and occasionally, indeed, where there is room for
-doubt whether any positive crime has been committed. As far as I
-have heard it is impossible for me to say whether the present
-case is an instance of crime or not, but the course of events is
-certainly among the most singular that I have ever listened to.
-Perhaps, Mr. Wilson, you would have the great kindness to
-recommence your narrative. I ask you not merely because my friend
-Dr. Watson has not heard the opening part but also because the
-peculiar nature of the story makes me anxious to have every
-possible detail from your lips. As a rule, when I have heard some
-slight indication of the course of events, I am able to guide
-myself by the thousands of other similar cases which occur to my
-memory. In the present instance I am forced to admit that the
-facts are, to the best of my belief, unique."
-
-The portly client puffed out his chest with an appearance of some
-little pride and pulled a dirty and wrinkled newspaper from the
-inside pocket of his greatcoat. As he glanced down the
-advertisement column, with his head thrust forward and the paper
-flattened out upon his knee, I took a good look at the man and
-endeavoured, after the fashion of my companion, to read the
-indications which might be presented by his dress or appearance.
-
-I did not gain very much, however, by my inspection. Our visitor
-bore every mark of being an average commonplace British
-tradesman, obese, pompous, and slow. He wore rather baggy grey
-shepherd's check trousers, a not over-clean black frock-coat,
-unbuttoned in the front, and a drab waistcoat with a heavy brassy
-Albert chain, and a square pierced bit of metal dangling down as
-an ornament. A frayed top-hat and a faded brown overcoat with a
-wrinkled velvet collar lay upon a chair beside him. Altogether,
-look as I would, there was nothing remarkable about the man save
-his blazing red head, and the expression of extreme chagrin and
-discontent upon his features.
-
-Sherlock Holmes' quick eye took in my occupation, and he shook
-his head with a smile as he noticed my questioning glances.
-"Beyond the obvious facts that he has at some time done manual
-labour, that he takes snuff, that he is a Freemason, that he has
-been in China, and that he has done a considerable amount of
-writing lately, I can deduce nothing else."
-
-Mr. Jabez Wilson started up in his chair, with his forefinger
-upon the paper, but his eyes upon my companion.
-
-"How, in the name of good-fortune, did you know all that, Mr.
-Holmes?" he asked. "How did you know, for example, that I did
-manual labour. It's as true as gospel, for I began as a ship's
-carpenter."
-
-"Your hands, my dear sir. Your right hand is quite a size larger
-than your left. You have worked with it, and the muscles are more
-developed."
-
-"Well, the snuff, then, and the Freemasonry?"
-
-"I won't insult your intelligence by telling you how I read that,
-especially as, rather against the strict rules of your order, you
-use an arc-and-compass breastpin."
-
-"Ah, of course, I forgot that. But the writing?"
-
-"What else can be indicated by that right cuff so very shiny for
-five inches, and the left one with the smooth patch near the
-elbow where you rest it upon the desk?"
-
-"Well, but China?"
-
-"The fish that you have tattooed immediately above your right
-wrist could only have been done in China. I have made a small
-study of tattoo marks and have even contributed to the literature
-of the subject. That trick of staining the fishes' scales of a
-delicate pink is quite peculiar to China. When, in addition, I
-see a Chinese coin hanging from your watch-chain, the matter
-becomes even more simple."
-
-Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
-thought at first that you had done something clever, but I see
-that there was nothing in it, after all."
-
-"I begin to think, Watson," said Holmes, "that I make a mistake
-in explaining. 'Omne ignotum pro magnifico,' you know, and my
-poor little reputation, such as it is, will suffer shipwreck if I
-am so candid. Can you not find the advertisement, Mr. Wilson?"
-
-"Yes, I have got it now," he answered with his thick red finger
-planted halfway down the column. "Here it is. This is what began
-it all. You just read it for yourself, sir."
-
-I took the paper from him and read as follows:
-
-"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
-Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
-another vacancy open which entitles a member of the League to a
-salary of 4 pounds a week for purely nominal services. All
-red-headed men who are sound in body and mind and above the age
-of twenty-one years, are eligible. Apply in person on Monday, at
-eleven o'clock, to Duncan Ross, at the offices of the League, 7
-Pope's Court, Fleet Street."
-
-"What on earth does this mean?" I ejaculated after I had twice
-read over the extraordinary announcement.
-
-Holmes chuckled and wriggled in his chair, as was his habit when
-in high spirits. "It is a little off the beaten track, isn't it?"
-said he. "And now, Mr. Wilson, off you go at scratch and tell us
-all about yourself, your household, and the effect which this
-advertisement had upon your fortunes. You will first make a note,
-Doctor, of the paper and the date."
-
-"It is The Morning Chronicle of April 27, 1890. Just two months
-ago."
-
-"Very good. Now, Mr. Wilson?"
-
-"Well, it is just as I have been telling you, Mr. Sherlock
-Holmes," said Jabez Wilson, mopping his forehead; "I have a small
-pawnbroker's business at Coburg Square, near the City. It's not a
-very large affair, and of late years it has not done more than
-just give me a living. I used to be able to keep two assistants,
-but now I only keep one; and I would have a job to pay him but
-that he is willing to come for half wages so as to learn the
-business."
-
-"What is the name of this obliging youth?" asked Sherlock Holmes.
-
-"His name is Vincent Spaulding, and he's not such a youth,
-either. It's hard to say his age. I should not wish a smarter
-assistant, Mr. Holmes; and I know very well that he could better
-himself and earn twice what I am able to give him. But, after
-all, if he is satisfied, why should I put ideas in his head?"
-
-"Why, indeed? You seem most fortunate in having an employé who
-comes under the full market price. It is not a common experience
-among employers in this age. I don't know that your assistant is
-not as remarkable as your advertisement."
-
-"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
-fellow for photography. Snapping away with a camera when he ought
-to be improving his mind, and then diving down into the cellar
-like a rabbit into its hole to develop his pictures. That is his
-main fault, but on the whole he's a good worker. There's no vice
-in him."
-
-"He is still with you, I presume?"
-
-"Yes, sir. He and a girl of fourteen, who does a bit of simple
-cooking and keeps the place clean--that's all I have in the
-house, for I am a widower and never had any family. We live very
-quietly, sir, the three of us; and we keep a roof over our heads
-and pay our debts, if we do nothing more.
-
-"The first thing that put us out was that advertisement.
-Spaulding, he came down into the office just this day eight
-weeks, with this very paper in his hand, and he says:
-
-"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
-
-"'Why that?' I asks.
-
-"'Why,' says he, 'here's another vacancy on the League of the
-Red-headed Men. It's worth quite a little fortune to any man who
-gets it, and I understand that there are more vacancies than
-there are men, so that the trustees are at their wits' end what
-to do with the money. If my hair would only change colour, here's
-a nice little crib all ready for me to step into.'
-
-"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
-very stay-at-home man, and as my business came to me instead of
-my having to go to it, I was often weeks on end without putting
-my foot over the door-mat. In that way I didn't know much of what
-was going on outside, and I was always glad of a bit of news.
-
-"'Have you never heard of the League of the Red-headed Men?' he
-asked with his eyes open.
-
-"'Never.'
-
-"'Why, I wonder at that, for you are eligible yourself for one
-of the vacancies.'
-
-"'And what are they worth?' I asked.
-
-"'Oh, merely a couple of hundred a year, but the work is slight,
-and it need not interfere very much with one's other
-occupations.'
-
-"Well, you can easily think that that made me prick up my ears,
-for the business has not been over-good for some years, and an
-extra couple of hundred would have been very handy.
-
-"'Tell me all about it,' said I.
-
-"'Well,' said he, showing me the advertisement, 'you can see for
-yourself that the League has a vacancy, and there is the address
-where you should apply for particulars. As far as I can make out,
-the League was founded by an American millionaire, Ezekiah
-Hopkins, who was very peculiar in his ways. He was himself
-red-headed, and he had a great sympathy for all red-headed men;
-so when he died it was found that he had left his enormous
-fortune in the hands of trustees, with instructions to apply the
-interest to the providing of easy berths to men whose hair is of
-that colour. From all I hear it is splendid pay and very little to
-do.'
-
-"'But,' said I, 'there would be millions of red-headed men who
-would apply.'
-
-"'Not so many as you might think,' he answered. 'You see it is
-really confined to Londoners, and to grown men. This American had
-started from London when he was young, and he wanted to do the
-old town a good turn. Then, again, I have heard it is no use your
-applying if your hair is light red, or dark red, or anything but
-real bright, blazing, fiery red. Now, if you cared to apply, Mr.
-Wilson, you would just walk in; but perhaps it would hardly be
-worth your while to put yourself out of the way for the sake of a
-few hundred pounds.'
-
-"Now, it is a fact, gentlemen, as you may see for yourselves,
-that my hair is of a very full and rich tint, so that it seemed
-to me that if there was to be any competition in the matter I
-stood as good a chance as any man that I had ever met. Vincent
-Spaulding seemed to know so much about it that I thought he might
-prove useful, so I just ordered him to put up the shutters for
-the day and to come right away with me. He was very willing to
-have a holiday, so we shut the business up and started off for
-the address that was given us in the advertisement.
-
-"I never hope to see such a sight as that again, Mr. Holmes. From
-north, south, east, and west every man who had a shade of red in
-his hair had tramped into the city to answer the advertisement.
-Fleet Street was choked with red-headed folk, and Pope's Court
-looked like a coster's orange barrow. I should not have thought
-there were so many in the whole country as were brought together
-by that single advertisement. Every shade of colour they
-were--straw, lemon, orange, brick, Irish-setter, liver, clay;
-but, as Spaulding said, there were not many who had the real
-vivid flame-coloured tint. When I saw how many were waiting, I
-would have given it up in despair; but Spaulding would not hear
-of it. How he did it I could not imagine, but he pushed and
-pulled and butted until he got me through the crowd, and right up
-to the steps which led to the office. There was a double stream
-upon the stair, some going up in hope, and some coming back
-dejected; but we wedged in as well as we could and soon found
-ourselves in the office."
-
-"Your experience has been a most entertaining one," remarked
-Holmes as his client paused and refreshed his memory with a huge
-pinch of snuff. "Pray continue your very interesting statement."
-
-"There was nothing in the office but a couple of wooden chairs
-and a deal table, behind which sat a small man with a head that
-was even redder than mine. He said a few words to each candidate
-as he came up, and then he always managed to find some fault in
-them which would disqualify them. Getting a vacancy did not seem
-to be such a very easy matter, after all. However, when our turn
-came the little man was much more favourable to me than to any of
-the others, and he closed the door as we entered, so that he
-might have a private word with us.
-
-"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
-willing to fill a vacancy in the League.'
-
-"'And he is admirably suited for it,' the other answered. 'He has
-every requirement. I cannot recall when I have seen anything so
-fine.' He took a step backward, cocked his head on one side, and
-gazed at my hair until I felt quite bashful. Then suddenly he
-plunged forward, wrung my hand, and congratulated me warmly on my
-success.
-
-"'It would be injustice to hesitate,' said he. 'You will,
-however, I am sure, excuse me for taking an obvious precaution.'
-With that he seized my hair in both his hands, and tugged until I
-yelled with the pain. 'There is water in your eyes,' said he as
-he released me. 'I perceive that all is as it should be. But we
-have to be careful, for we have twice been deceived by wigs and
-once by paint. I could tell you tales of cobbler's wax which
-would disgust you with human nature.' He stepped over to the
-window and shouted through it at the top of his voice that the
-vacancy was filled. A groan of disappointment came up from below,
-and the folk all trooped away in different directions until there
-was not a red-head to be seen except my own and that of the
-manager.
-
-"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
-the pensioners upon the fund left by our noble benefactor. Are
-you a married man, Mr. Wilson? Have you a family?'
-
-"I answered that I had not.
-
-"His face fell immediately.
-
-"'Dear me!' he said gravely, 'that is very serious indeed! I am
-sorry to hear you say that. The fund was, of course, for the
-propagation and spread of the red-heads as well as for their
-maintenance. It is exceedingly unfortunate that you should be a
-bachelor.'
-
-"My face lengthened at this, Mr. Holmes, for I thought that I was
-not to have the vacancy after all; but after thinking it over for
-a few minutes he said that it would be all right.
-
-"'In the case of another,' said he, 'the objection might be
-fatal, but we must stretch a point in favour of a man with such a
-head of hair as yours. When shall you be able to enter upon your
-new duties?'
-
-"'Well, it is a little awkward, for I have a business already,'
-said I.
-
-"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
-'I should be able to look after that for you.'
-
-"'What would be the hours?' I asked.
-
-"'Ten to two.'
-
-"Now a pawnbroker's business is mostly done of an evening, Mr.
-Holmes, especially Thursday and Friday evening, which is just
-before pay-day; so it would suit me very well to earn a little in
-the mornings. Besides, I knew that my assistant was a good man,
-and that he would see to anything that turned up.
-
-"'That would suit me very well,' said I. 'And the pay?'
-
-"'Is 4 pounds a week.'
-
-"'And the work?'
-
-"'Is purely nominal.'
-
-"'What do you call purely nominal?'
-
-"'Well, you have to be in the office, or at least in the
-building, the whole time. If you leave, you forfeit your whole
-position forever. The will is very clear upon that point. You
-don't comply with the conditions if you budge from the office
-during that time.'
-
-"'It's only four hours a day, and I should not think of leaving,'
-said I.
-
-"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
-nor business nor anything else. There you must stay, or you lose
-your billet.'
-
-"'And the work?'
-
-"'Is to copy out the "Encyclopaedia Britannica." There is the first
-volume of it in that press. You must find your own ink, pens, and
-blotting-paper, but we provide this table and chair. Will you be
-ready to-morrow?'
-
-"'Certainly,' I answered.
-
-"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
-once more on the important position which you have been fortunate
-enough to gain.' He bowed me out of the room and I went home with
-my assistant, hardly knowing what to say or do, I was so pleased
-at my own good fortune.
-
-"Well, I thought over the matter all day, and by evening I was in
-low spirits again; for I had quite persuaded myself that the
-whole affair must be some great hoax or fraud, though what its
-object might be I could not imagine. It seemed altogether past
-belief that anyone could make such a will, or that they would pay
-such a sum for doing anything so simple as copying out the
-'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
-cheer me up, but by bedtime I had reasoned myself out of the
-whole thing. However, in the morning I determined to have a look
-at it anyhow, so I bought a penny bottle of ink, and with a
-quill-pen, and seven sheets of foolscap paper, I started off for
-Pope's Court.
-
-"Well, to my surprise and delight, everything was as right as
-possible. The table was set out ready for me, and Mr. Duncan Ross
-was there to see that I got fairly to work. He started me off
-upon the letter A, and then he left me; but he would drop in from
-time to time to see that all was right with me. At two o'clock he
-bade me good-day, complimented me upon the amount that I had
-written, and locked the door of the office after me.
-
-"This went on day after day, Mr. Holmes, and on Saturday the
-manager came in and planked down four golden sovereigns for my
-week's work. It was the same next week, and the same the week
-after. Every morning I was there at ten, and every afternoon I
-left at two. By degrees Mr. Duncan Ross took to coming in only
-once of a morning, and then, after a time, he did not come in at
-all. Still, of course, I never dared to leave the room for an
-instant, for I was not sure when he might come, and the billet
-was such a good one, and suited me so well, that I would not risk
-the loss of it.
-
-"Eight weeks passed away like this, and I had written about
-Abbots and Archery and Armour and Architecture and Attica, and
-hoped with diligence that I might get on to the B's before very
-long. It cost me something in foolscap, and I had pretty nearly
-filled a shelf with my writings. And then suddenly the whole
-business came to an end."
-
-"To an end?"
-
-"Yes, sir. And no later than this morning. I went to my work as
-usual at ten o'clock, but the door was shut and locked, with a
-little square of cardboard hammered on to the middle of the
-panel with a tack. Here it is, and you can read for yourself."
-
-He held up a piece of white cardboard about the size of a sheet
-of note-paper. It read in this fashion:
-
-                  THE RED-HEADED LEAGUE
-
-                           IS
-
-                        DISSOLVED.
-
-                     October 9, 1890.
-
-Sherlock Holmes and I surveyed this curt announcement and the
-rueful face behind it, until the comical side of the affair so
-completely overtopped every other consideration that we both
-burst out into a roar of laughter.
-
-"I cannot see that there is anything very funny," cried our
-client, flushing up to the roots of his flaming head. "If you can
-do nothing better than laugh at me, I can go elsewhere."
-
-"No, no," cried Holmes, shoving him back into the chair from
-which he had half risen. "I really wouldn't miss your case for
-the world. It is most refreshingly unusual. But there is, if you
-will excuse my saying so, something just a little funny about it.
-Pray what steps did you take when you found the card upon the
-door?"
-
-"I was staggered, sir. I did not know what to do. Then I called
-at the offices round, but none of them seemed to know anything
-about it. Finally, I went to the landlord, who is an accountant
-living on the ground-floor, and I asked him if he could tell me
-what had become of the Red-headed League. He said that he had
-never heard of any such body. Then I asked him who Mr. Duncan
-Ross was. He answered that the name was new to him.
-
-"'Well,' said I, 'the gentleman at No. 4.'
-
-"'What, the red-headed man?'
-
-"'Yes.'
-
-"'Oh,' said he, 'his name was William Morris. He was a solicitor
-and was using my room as a temporary convenience until his new
-premises were ready. He moved out yesterday.'
-
-"'Where could I find him?'
-
-"'Oh, at his new offices. He did tell me the address. Yes, 17
-King Edward Street, near St. Paul's.'
-
-"I started off, Mr. Holmes, but when I got to that address it was
-a manufactory of artificial knee-caps, and no one in it had ever
-heard of either Mr. William Morris or Mr. Duncan Ross."
-
-"And what did you do then?" asked Holmes.
-
-"I went home to Saxe-Coburg Square, and I took the advice of my
-assistant. But he could not help me in any way. He could only say
-that if I waited I should hear by post. But that was not quite
-good enough, Mr. Holmes. I did not wish to lose such a place
-without a struggle, so, as I had heard that you were good enough
-to give advice to poor folk who were in need of it, I came right
-away to you."
-
-"And you did very wisely," said Holmes. "Your case is an
-exceedingly remarkable one, and I shall be happy to look into it.
-From what you have told me I think that it is possible that
-graver issues hang from it than might at first sight appear."
-
-"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
-pound a week."
-
-"As far as you are personally concerned," remarked Holmes, "I do
-not see that you have any grievance against this extraordinary
-league. On the contrary, you are, as I understand, richer by some
-30 pounds, to say nothing of the minute knowledge which you have
-gained on every subject which comes under the letter A. You have
-lost nothing by them."
-
-"No, sir. But I want to find out about them, and who they are,
-and what their object was in playing this prank--if it was a
-prank--upon me. It was a pretty expensive joke for them, for it
-cost them two and thirty pounds."
-
-"We shall endeavour to clear up these points for you. And, first,
-one or two questions, Mr. Wilson. This assistant of yours who
-first called your attention to the advertisement--how long had he
-been with you?"
-
-"About a month then."
-
-"How did he come?"
-
-"In answer to an advertisement."
-
-"Was he the only applicant?"
-
-"No, I had a dozen."
-
-"Why did you pick him?"
-
-"Because he was handy and would come cheap."
-
-"At half-wages, in fact."
-
-"Yes."
-
-"What is he like, this Vincent Spaulding?"
-
-"Small, stout-built, very quick in his ways, no hair on his face,
-though he's not short of thirty. Has a white splash of acid upon
-his forehead."
-
-Holmes sat up in his chair in considerable excitement. "I thought
-as much," said he. "Have you ever observed that his ears are
-pierced for earrings?"
-
-"Yes, sir. He told me that a gipsy had done it for him when he
-was a lad."
-
-"Hum!" said Holmes, sinking back in deep thought. "He is still
-with you?"
-
-"Oh, yes, sir; I have only just left him."
-
-"And has your business been attended to in your absence?"
-
-"Nothing to complain of, sir. There's never very much to do of a
-morning."
-
-"That will do, Mr. Wilson. I shall be happy to give you an
-opinion upon the subject in the course of a day or two. To-day is
-Saturday, and I hope that by Monday we may come to a conclusion."
-
-"Well, Watson," said Holmes when our visitor had left us, "what
-do you make of it all?"
-
-"I make nothing of it," I answered frankly. "It is a most
-mysterious business."
-
-"As a rule," said Holmes, "the more bizarre a thing is the less
-mysterious it proves to be. It is your commonplace, featureless
-crimes which are really puzzling, just as a commonplace face is
-the most difficult to identify. But I must be prompt over this
-matter."
-
-"What are you going to do, then?" I asked.
-
-"To smoke," he answered. "It is quite a three pipe problem, and I
-beg that you won't speak to me for fifty minutes." He curled
-himself up in his chair, with his thin knees drawn up to his
-hawk-like nose, and there he sat with his eyes closed and his
-black clay pipe thrusting out like the bill of some strange bird.
-I had come to the conclusion that he had dropped asleep, and
-indeed was nodding myself, when he suddenly sprang out of his
-chair with the gesture of a man who has made up his mind and put
-his pipe down upon the mantelpiece.
-
-"Sarasate plays at the St. James's Hall this afternoon," he
-remarked. "What do you think, Watson? Could your patients spare
-you for a few hours?"
-
-"I have nothing to do to-day. My practice is never very
-absorbing."
-
-"Then put on your hat and come. I am going through the City
-first, and we can have some lunch on the way. I observe that
-there is a good deal of German music on the programme, which is
-rather more to my taste than Italian or French. It is
-introspective, and I want to introspect. Come along!"
-
-We travelled by the Underground as far as Aldersgate; and a short
-walk took us to Saxe-Coburg Square, the scene of the singular
-story which we had listened to in the morning. It was a poky,
-little, shabby-genteel place, where four lines of dingy
-two-storied brick houses looked out into a small railed-in
-enclosure, where a lawn of weedy grass and a few clumps of faded
-laurel-bushes made a hard fight against a smoke-laden and
-uncongenial atmosphere. Three gilt balls and a brown board with
-"JABEZ WILSON" in white letters, upon a corner house, announced
-the place where our red-headed client carried on his business.
-Sherlock Holmes stopped in front of it with his head on one side
-and looked it all over, with his eyes shining brightly between
-puckered lids. Then he walked slowly up the street, and then down
-again to the corner, still looking keenly at the houses. Finally
-he returned to the pawnbroker's, and, having thumped vigorously
-upon the pavement with his stick two or three times, he went up
-to the door and knocked. It was instantly opened by a
-bright-looking, clean-shaven young fellow, who asked him to step
-in.
-
-"Thank you," said Holmes, "I only wished to ask you how you would
-go from here to the Strand."
-
-"Third right, fourth left," answered the assistant promptly,
-closing the door.
-
-"Smart fellow, that," observed Holmes as we walked away. "He is,
-in my judgment, the fourth smartest man in London, and for daring
-I am not sure that he has not a claim to be third. I have known
-something of him before."
-
-"Evidently," said I, "Mr. Wilson's assistant counts for a good
-deal in this mystery of the Red-headed League. I am sure that you
-inquired your way merely in order that you might see him."
-
-"Not him."
-
-"What then?"
-
-"The knees of his trousers."
-
-"And what did you see?"
-
-"What I expected to see."
-
-"Why did you beat the pavement?"
-
-"My dear doctor, this is a time for observation, not for talk. We
-are spies in an enemy's country. We know something of Saxe-Coburg
-Square. Let us now explore the parts which lie behind it."
-
-The road in which we found ourselves as we turned round the
-corner from the retired Saxe-Coburg Square presented as great a
-contrast to it as the front of a picture does to the back. It was
-one of the main arteries which conveyed the traffic of the City
-to the north and west. The roadway was blocked with the immense
-stream of commerce flowing in a double tide inward and outward,
-while the footpaths were black with the hurrying swarm of
-pedestrians. It was difficult to realise as we looked at the line
-of fine shops and stately business premises that they really
-abutted on the other side upon the faded and stagnant square
-which we had just quitted.
-
-"Let me see," said Holmes, standing at the corner and glancing
-along the line, "I should like just to remember the order of the
-houses here. It is a hobby of mine to have an exact knowledge of
-London. There is Mortimer's, the tobacconist, the little
-newspaper shop, the Coburg branch of the City and Suburban Bank,
-the Vegetarian Restaurant, and McFarlane's carriage-building
-depot. That carries us right on to the other block. And now,
-Doctor, we've done our work, so it's time we had some play. A
-sandwich and a cup of coffee, and then off to violin-land, where
-all is sweetness and delicacy and harmony, and there are no
-red-headed clients to vex us with their conundrums."
-
-My friend was an enthusiastic musician, being himself not only a
-very capable performer but a composer of no ordinary merit. All
-the afternoon he sat in the stalls wrapped in the most perfect
-happiness, gently waving his long, thin fingers in time to the
-music, while his gently smiling face and his languid, dreamy eyes
-were as unlike those of Holmes the sleuth-hound, Holmes the
-relentless, keen-witted, ready-handed criminal agent, as it was
-possible to conceive. In his singular character the dual nature
-alternately asserted itself, and his extreme exactness and
-astuteness represented, as I have often thought, the reaction
-against the poetic and contemplative mood which occasionally
-predominated in him. The swing of his nature took him from
-extreme languor to devouring energy; and, as I knew well, he was
-never so truly formidable as when, for days on end, he had been
-lounging in his armchair amid his improvisations and his
-black-letter editions. Then it was that the lust of the chase
-would suddenly come upon him, and that his brilliant reasoning
-power would rise to the level of intuition, until those who were
-unacquainted with his methods would look askance at him as on a
-man whose knowledge was not that of other mortals. When I saw him
-that afternoon so enwrapped in the music at St. James's Hall I
-felt that an evil time might be coming upon those whom he had set
-himself to hunt down.
-
-"You want to go home, no doubt, Doctor," he remarked as we
-emerged.
-
-"Yes, it would be as well."
-
-"And I have some business to do which will take some hours. This
-business at Coburg Square is serious."
-
-"Why serious?"
-
-"A considerable crime is in contemplation. I have every reason to
-believe that we shall be in time to stop it. But to-day being
-Saturday rather complicates matters. I shall want your help
-to-night."
-
-"At what time?"
-
-"Ten will be early enough."
-
-"I shall be at Baker Street at ten."
-
-"Very well. And, I say, Doctor, there may be some little danger,
-so kindly put your army revolver in your pocket." He waved his
-hand, turned on his heel, and disappeared in an instant among the
-crowd.
-
-I trust that I am not more dense than my neighbours, but I was
-always oppressed with a sense of my own stupidity in my dealings
-with Sherlock Holmes. Here I had heard what he had heard, I had
-seen what he had seen, and yet from his words it was evident that
-he saw clearly not only what had happened but what was about to
-happen, while to me the whole business was still confused and
-grotesque. As I drove home to my house in Kensington I thought
-over it all, from the extraordinary story of the red-headed
-copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
-Square, and the ominous words with which he had parted from me.
-What was this nocturnal expedition, and why should I go armed?
-Where were we going, and what were we to do? I had the hint from
-Holmes that this smooth-faced pawnbroker's assistant was a
-formidable man--a man who might play a deep game. I tried to
-puzzle it out, but gave it up in despair and set the matter aside
-until night should bring an explanation.
-
-It was a quarter-past nine when I started from home and made my
-way across the Park, and so through Oxford Street to Baker
-Street. Two hansoms were standing at the door, and as I entered
-the passage I heard the sound of voices from above. On entering
-his room I found Holmes in animated conversation with two men,
-one of whom I recognised as Peter Jones, the official police
-agent, while the other was a long, thin, sad-faced man, with a
-very shiny hat and oppressively respectable frock-coat.
-
-"Ha! Our party is complete," said Holmes, buttoning up his
-pea-jacket and taking his heavy hunting crop from the rack.
-"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
-introduce you to Mr. Merryweather, who is to be our companion in
-to-night's adventure."
-
-"We're hunting in couples again, Doctor, you see," said Jones in
-his consequential way. "Our friend here is a wonderful man for
-starting a chase. All he wants is an old dog to help him to do
-the running down."
-
-"I hope a wild goose may not prove to be the end of our chase,"
-observed Mr. Merryweather gloomily.
-
-"You may place considerable confidence in Mr. Holmes, sir," said
-the police agent loftily. "He has his own little methods, which
-are, if he won't mind my saying so, just a little too theoretical
-and fantastic, but he has the makings of a detective in him. It
-is not too much to say that once or twice, as in that business of
-the Sholto murder and the Agra treasure, he has been more nearly
-correct than the official force."
-
-"Oh, if you say so, Mr. Jones, it is all right," said the
-stranger with deference. "Still, I confess that I miss my rubber.
-It is the first Saturday night for seven-and-twenty years that I
-have not had my rubber."
-
-"I think you will find," said Sherlock Holmes, "that you will
-play for a higher stake to-night than you have ever done yet, and
-that the play will be more exciting. For you, Mr. Merryweather,
-the stake will be some 30,000 pounds; and for you, Jones, it will
-be the man upon whom you wish to lay your hands."
-
-"John Clay, the murderer, thief, smasher, and forger. He's a
-young man, Mr. Merryweather, but he is at the head of his
-profession, and I would rather have my bracelets on him than on
-any criminal in London. He's a remarkable man, is young John
-Clay. His grandfather was a royal duke, and he himself has been
-to Eton and Oxford. His brain is as cunning as his fingers, and
-though we meet signs of him at every turn, we never know where to
-find the man himself. He'll crack a crib in Scotland one week,
-and be raising money to build an orphanage in Cornwall the next.
-I've been on his track for years and have never set eyes on him
-yet."
-
-"I hope that I may have the pleasure of introducing you to-night.
-I've had one or two little turns also with Mr. John Clay, and I
-agree with you that he is at the head of his profession. It is
-past ten, however, and quite time that we started. If you two
-will take the first hansom, Watson and I will follow in the
-second."
-
-Sherlock Holmes was not very communicative during the long drive
-and lay back in the cab humming the tunes which he had heard in
-the afternoon. We rattled through an endless labyrinth of gas-lit
-streets until we emerged into Farrington Street.
-
-"We are close there now," my friend remarked. "This fellow
-Merryweather is a bank director, and personally interested in the
-matter. I thought it as well to have Jones with us also. He is
-not a bad fellow, though an absolute imbecile in his profession.
-He has one positive virtue. He is as brave as a bulldog and as
-tenacious as a lobster if he gets his claws upon anyone. Here we
-are, and they are waiting for us."
-
-We had reached the same crowded thoroughfare in which we had
-found ourselves in the morning. Our cabs were dismissed, and,
-following the guidance of Mr. Merryweather, we passed down a
-narrow passage and through a side door, which he opened for us.
-Within there was a small corridor, which ended in a very massive
-iron gate. This also was opened, and led down a flight of winding
-stone steps, which terminated at another formidable gate. Mr.
-Merryweather stopped to light a lantern, and then conducted us
-down a dark, earth-smelling passage, and so, after opening a
-third door, into a huge vault or cellar, which was piled all
-round with crates and massive boxes.
-
-"You are not very vulnerable from above," Holmes remarked as he
-held up the lantern and gazed about him.
-
-"Nor from below," said Mr. Merryweather, striking his stick upon
-the flags which lined the floor. "Why, dear me, it sounds quite
-hollow!" he remarked, looking up in surprise.
-
-"I must really ask you to be a little more quiet!" said Holmes
-severely. "You have already imperilled the whole success of our
-expedition. Might I beg that you would have the goodness to sit
-down upon one of those boxes, and not to interfere?"
-
-The solemn Mr. Merryweather perched himself upon a crate, with a
-very injured expression upon his face, while Holmes fell upon his
-knees upon the floor and, with the lantern and a magnifying lens,
-began to examine minutely the cracks between the stones. A few
-seconds sufficed to satisfy him, for he sprang to his feet again
-and put his glass in his pocket.
-
-"We have at least an hour before us," he remarked, "for they can
-hardly take any steps until the good pawnbroker is safely in bed.
-Then they will not lose a minute, for the sooner they do their
-work the longer time they will have for their escape. We are at
-present, Doctor--as no doubt you have divined--in the cellar of
-the City branch of one of the principal London banks. Mr.
-Merryweather is the chairman of directors, and he will explain to
-you that there are reasons why the more daring criminals of
-London should take a considerable interest in this cellar at
-present."
-
-"It is our French gold," whispered the director. "We have had
-several warnings that an attempt might be made upon it."
-
-"Your French gold?"
-
-"Yes. We had occasion some months ago to strengthen our resources
-and borrowed for that purpose 30,000 napoleons from the Bank of
-France. It has become known that we have never had occasion to
-unpack the money, and that it is still lying in our cellar. The
-crate upon which I sit contains 2,000 napoleons packed between
-layers of lead foil. Our reserve of bullion is much larger at
-present than is usually kept in a single branch office, and the
-directors have had misgivings upon the subject."
-
-"Which were very well justified," observed Holmes. "And now it is
-time that we arranged our little plans. I expect that within an
-hour matters will come to a head. In the meantime Mr.
-Merryweather, we must put the screen over that dark lantern."
-
-"And sit in the dark?"
-
-"I am afraid so. I had brought a pack of cards in my pocket, and
-I thought that, as we were a partie carrée, you might have your
-rubber after all. But I see that the enemy's preparations have
-gone so far that we cannot risk the presence of a light. And,
-first of all, we must choose our positions. These are daring men,
-and though we shall take them at a disadvantage, they may do us
-some harm unless we are careful. I shall stand behind this crate,
-and do you conceal yourselves behind those. Then, when I flash a
-light upon them, close in swiftly. If they fire, Watson, have no
-compunction about shooting them down."
-
-I placed my revolver, cocked, upon the top of the wooden case
-behind which I crouched. Holmes shot the slide across the front
-of his lantern and left us in pitch darkness--such an absolute
-darkness as I have never before experienced. The smell of hot
-metal remained to assure us that the light was still there, ready
-to flash out at a moment's notice. To me, with my nerves worked
-up to a pitch of expectancy, there was something depressing and
-subduing in the sudden gloom, and in the cold dank air of the
-vault.
-
-"They have but one retreat," whispered Holmes. "That is back
-through the house into Saxe-Coburg Square. I hope that you have
-done what I asked you, Jones?"
-
-"I have an inspector and two officers waiting at the front door."
-
-"Then we have stopped all the holes. And now we must be silent
-and wait."
-
-What a time it seemed! From comparing notes afterwards it was but
-an hour and a quarter, yet it appeared to me that the night must
-have almost gone and the dawn be breaking above us. My limbs
-were weary and stiff, for I feared to change my position; yet my
-nerves were worked up to the highest pitch of tension, and my
-hearing was so acute that I could not only hear the gentle
-breathing of my companions, but I could distinguish the deeper,
-heavier in-breath of the bulky Jones from the thin, sighing note
-of the bank director. From my position I could look over the case
-in the direction of the floor. Suddenly my eyes caught the glint
-of a light.
-
-At first it was but a lurid spark upon the stone pavement. Then
-it lengthened out until it became a yellow line, and then,
-without any warning or sound, a gash seemed to open and a hand
-appeared, a white, almost womanly hand, which felt about in the
-centre of the little area of light. For a minute or more the
-hand, with its writhing fingers, protruded out of the floor. Then
-it was withdrawn as suddenly as it appeared, and all was dark
-again save the single lurid spark which marked a chink between
-the stones.
-
-Its disappearance, however, was but momentary. With a rending,
-tearing sound, one of the broad, white stones turned over upon
-its side and left a square, gaping hole, through which streamed
-the light of a lantern. Over the edge there peeped a clean-cut,
-boyish face, which looked keenly about it, and then, with a hand
-on either side of the aperture, drew itself shoulder-high and
-waist-high, until one knee rested upon the edge. In another
-instant he stood at the side of the hole and was hauling after
-him a companion, lithe and small like himself, with a pale face
-and a shock of very red hair.
-
-"It's all clear," he whispered. "Have you the chisel and the
-bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
-
-Sherlock Holmes had sprung out and seized the intruder by the
-collar. The other dived down the hole, and I heard the sound of
-rending cloth as Jones clutched at his skirts. The light flashed
-upon the barrel of a revolver, but Holmes' hunting crop came
-down on the man's wrist, and the pistol clinked upon the stone
-floor.
-
-"It's no use, John Clay," said Holmes blandly. "You have no
-chance at all."
-
-"So I see," the other answered with the utmost coolness. "I fancy
-that my pal is all right, though I see you have got his
-coat-tails."
-
-"There are three men waiting for him at the door," said Holmes.
-
-"Oh, indeed! You seem to have done the thing very completely. I
-must compliment you."
-
-"And I you," Holmes answered. "Your red-headed idea was very new
-and effective."
-
-"You'll see your pal again presently," said Jones. "He's quicker
-at climbing down holes than I am. Just hold out while I fix the
-derbies."
-
-"I beg that you will not touch me with your filthy hands,"
-remarked our prisoner as the handcuffs clattered upon his wrists.
-"You may not be aware that I have royal blood in my veins. Have
-the goodness, also, when you address me always to say 'sir' and
-'please.'"
-
-"All right," said Jones with a stare and a snigger. "Well, would
-you please, sir, march upstairs, where we can get a cab to carry
-your Highness to the police-station?"
-
-"That is better," said John Clay serenely. He made a sweeping bow
-to the three of us and walked quietly off in the custody of the
-detective.
-
-"Really, Mr. Holmes," said Mr. Merryweather as we followed them
-from the cellar, "I do not know how the bank can thank you or
-repay you. There is no doubt that you have detected and defeated
-in the most complete manner one of the most determined attempts
-at bank robbery that have ever come within my experience."
-
-"I have had one or two little scores of my own to settle with Mr.
-John Clay," said Holmes. "I have been at some small expense over
-this matter, which I shall expect the bank to refund, but beyond
-that I am amply repaid by having had an experience which is in
-many ways unique, and by hearing the very remarkable narrative of
-the Red-headed League."
-
-
-"You see, Watson," he explained in the early hours of the morning
-as we sat over a glass of whisky and soda in Baker Street, "it
-was perfectly obvious from the first that the only possible
-object of this rather fantastic business of the advertisement of
-the League, and the copying of the 'Encyclopaedia,' must be to get
-this not over-bright pawnbroker out of the way for a number of
-hours every day. It was a curious way of managing it, but,
-really, it would be difficult to suggest a better. The method was
-no doubt suggested to Clay's ingenious mind by the colour of his
-accomplice's hair. The 4 pounds a week was a lure which must draw
-him, and what was it to them, who were playing for thousands?
-They put in the advertisement, one rogue has the temporary
-office, the other rogue incites the man to apply for it, and
-together they manage to secure his absence every morning in the
-week. From the time that I heard of the assistant having come for
-half wages, it was obvious to me that he had some strong motive
-for securing the situation."
-
-"But how could you guess what the motive was?"
-
-"Had there been women in the house, I should have suspected a
-mere vulgar intrigue. That, however, was out of the question. The
-man's business was a small one, and there was nothing in his
-house which could account for such elaborate preparations, and
-such an expenditure as they were at. It must, then, be something
-out of the house. What could it be? I thought of the assistant's
-fondness for photography, and his trick of vanishing into the
-cellar. The cellar! There was the end of this tangled clue. Then
-I made inquiries as to this mysterious assistant and found that I
-had to deal with one of the coolest and most daring criminals in
-London. He was doing something in the cellar--something which
-took many hours a day for months on end. What could it be, once
-more? I could think of nothing save that he was running a tunnel
-to some other building.
-
-"So far I had got when we went to visit the scene of action. I
-surprised you by beating upon the pavement with my stick. I was
-ascertaining whether the cellar stretched out in front or behind.
-It was not in front. Then I rang the bell, and, as I hoped, the
-assistant answered it. We have had some skirmishes, but we had
-never set eyes upon each other before. I hardly looked at his
-face. His knees were what I wished to see. You must yourself have
-remarked how worn, wrinkled, and stained they were. They spoke of
-those hours of burrowing. The only remaining point was what they
-were burrowing for. I walked round the corner, saw the City and
-Suburban Bank abutted on our friend's premises, and felt that I
-had solved my problem. When you drove home after the concert I
-called upon Scotland Yard and upon the chairman of the bank
-directors, with the result that you have seen."
-
-"And how could you tell that they would make their attempt
-to-night?" I asked.
-
-"Well, when they closed their League offices that was a sign that
-they cared no longer about Mr. Jabez Wilson's presence--in other
-words, that they had completed their tunnel. But it was essential
-that they should use it soon, as it might be discovered, or the
-bullion might be removed. Saturday would suit them better than
-any other day, as it would give them two days for their escape.
-For all these reasons I expected them to come to-night."
-
-"You reasoned it out beautifully," I exclaimed in unfeigned
-admiration. "It is so long a chain, and yet every link rings
-true."
-
-"It saved me from ennui," he answered, yawning. "Alas! I already
-feel it closing in upon me. My life is spent in one long effort
-to escape from the commonplaces of existence. These little
-problems help me to do so."
-
-"And you are a benefactor of the race," said I.
-
-He shrugged his shoulders. "Well, perhaps, after all, it is of
-some little use," he remarked. "'L'homme c'est rien--l'oeuvre
-c'est tout,' as Gustave Flaubert wrote to George Sand."
-
-
-
-ADVENTURE III. A CASE OF IDENTITY
-
-"My dear fellow," said Sherlock Holmes as we sat on either side
-of the fire in his lodgings at Baker Street, "life is infinitely
-stranger than anything which the mind of man could invent. We
-would not dare to conceive the things which are really mere
-commonplaces of existence. If we could fly out of that window
-hand in hand, hover over this great city, gently remove the
-roofs, and peep in at the queer things which are going on, the
-strange coincidences, the plannings, the cross-purposes, the
-wonderful chains of events, working through generations, and
-leading to the most outré results, it would make all fiction with
-its conventionalities and foreseen conclusions most stale and
-unprofitable."
-
-"And yet I am not convinced of it," I answered. "The cases which
-come to light in the papers are, as a rule, bald enough, and
-vulgar enough. We have in our police reports realism pushed to
-its extreme limits, and yet the result is, it must be confessed,
-neither fascinating nor artistic."
-
-"A certain selection and discretion must be used in producing a
-realistic effect," remarked Holmes. "This is wanting in the
-police report, where more stress is laid, perhaps, upon the
-platitudes of the magistrate than upon the details, which to an
-observer contain the vital essence of the whole matter. Depend
-upon it, there is nothing so unnatural as the commonplace."
-
-I smiled and shook my head. "I can quite understand your thinking
-so," I said. "Of course, in your position of unofficial adviser
-and helper to everybody who is absolutely puzzled, throughout
-three continents, you are brought in contact with all that is
-strange and bizarre. But here"--I picked up the morning paper
-from the ground--"let us put it to a practical test. Here is the
-first heading upon which I come. 'A husband's cruelty to his
-wife.' There is half a column of print, but I know without
-reading it that it is all perfectly familiar to me. There is, of
-course, the other woman, the drink, the push, the blow, the
-bruise, the sympathetic sister or landlady. The crudest of
-writers could invent nothing more crude."
-
-"Indeed, your example is an unfortunate one for your argument,"
-said Holmes, taking the paper and glancing his eye down it. "This
-is the Dundas separation case, and, as it happens, I was engaged
-in clearing up some small points in connection with it. The
-husband was a teetotaler, there was no other woman, and the
-conduct complained of was that he had drifted into the habit of
-winding up every meal by taking out his false teeth and hurling
-them at his wife, which, you will allow, is not an action likely
-to occur to the imagination of the average story-teller. Take a
-pinch of snuff, Doctor, and acknowledge that I have scored over
-you in your example."
-
-He held out his snuffbox of old gold, with a great amethyst in
-the centre of the lid. Its splendour was in such contrast to his
-homely ways and simple life that I could not help commenting upon
-it.
-
-"Ah," said he, "I forgot that I had not seen you for some weeks.
-It is a little souvenir from the King of Bohemia in return for my
-assistance in the case of the Irene Adler papers."
-
-"And the ring?" I asked, glancing at a remarkable brilliant which
-sparkled upon his finger.
-
-"It was from the reigning family of Holland, though the matter in
-which I served them was of such delicacy that I cannot confide it
-even to you, who have been good enough to chronicle one or two of
-my little problems."
-
-"And have you any on hand just now?" I asked with interest.
-
-"Some ten or twelve, but none which present any feature of
-interest. They are important, you understand, without being
-interesting. Indeed, I have found that it is usually in
-unimportant matters that there is a field for the observation,
-and for the quick analysis of cause and effect which gives the
-charm to an investigation. The larger crimes are apt to be the
-simpler, for the bigger the crime the more obvious, as a rule, is
-the motive. In these cases, save for one rather intricate matter
-which has been referred to me from Marseilles, there is nothing
-which presents any features of interest. It is possible, however,
-that I may have something better before very many minutes are
-over, for this is one of my clients, or I am much mistaken."
-
-He had risen from his chair and was standing between the parted
-blinds gazing down into the dull neutral-tinted London street.
-Looking over his shoulder, I saw that on the pavement opposite
-there stood a large woman with a heavy fur boa round her neck,
-and a large curling red feather in a broad-brimmed hat which was
-tilted in a coquettish Duchess of Devonshire fashion over her
-ear. From under this great panoply she peeped up in a nervous,
-hesitating fashion at our windows, while her body oscillated
-backward and forward, and her fingers fidgeted with her glove
-buttons. Suddenly, with a plunge, as of the swimmer who leaves
-the bank, she hurried across the road, and we heard the sharp
-clang of the bell.
-
-"I have seen those symptoms before," said Holmes, throwing his
-cigarette into the fire. "Oscillation upon the pavement always
-means an affaire de coeur. She would like advice, but is not sure
-that the matter is not too delicate for communication. And yet
-even here we may discriminate. When a woman has been seriously
-wronged by a man she no longer oscillates, and the usual symptom
-is a broken bell wire. Here we may take it that there is a love
-matter, but that the maiden is not so much angry as perplexed, or
-grieved. But here she comes in person to resolve our doubts."
-
-As he spoke there was a tap at the door, and the boy in buttons
-entered to announce Miss Mary Sutherland, while the lady herself
-loomed behind his small black figure like a full-sailed
-merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
-her with the easy courtesy for which he was remarkable, and,
-having closed the door and bowed her into an armchair, he looked
-her over in the minute and yet abstracted fashion which was
-peculiar to him.
-
-"Do you not find," he said, "that with your short sight it is a
-little trying to do so much typewriting?"
-
-"I did at first," she answered, "but now I know where the letters
-are without looking." Then, suddenly realising the full purport
-of his words, she gave a violent start and looked up, with fear
-and astonishment upon her broad, good-humoured face. "You've
-heard about me, Mr. Holmes," she cried, "else how could you know
-all that?"
-
-"Never mind," said Holmes, laughing; "it is my business to know
-things. Perhaps I have trained myself to see what others
-overlook. If not, why should you come to consult me?"
-
-"I came to you, sir, because I heard of you from Mrs. Etherege,
-whose husband you found so easy when the police and everyone had
-given him up for dead. Oh, Mr. Holmes, I wish you would do as
-much for me. I'm not rich, but still I have a hundred a year in
-my own right, besides the little that I make by the machine, and
-I would give it all to know what has become of Mr. Hosmer Angel."
-
-"Why did you come away to consult me in such a hurry?" asked
-Sherlock Holmes, with his finger-tips together and his eyes to
-the ceiling.
-
-Again a startled look came over the somewhat vacuous face of Miss
-Mary Sutherland. "Yes, I did bang out of the house," she said,
-"for it made me angry to see the easy way in which Mr.
-Windibank--that is, my father--took it all. He would not go to
-the police, and he would not go to you, and so at last, as he
-would do nothing and kept on saying that there was no harm done,
-it made me mad, and I just on with my things and came right away
-to you."
-
-"Your father," said Holmes, "your stepfather, surely, since the
-name is different."
-
-"Yes, my stepfather. I call him father, though it sounds funny,
-too, for he is only five years and two months older than myself."
-
-"And your mother is alive?"
-
-"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
-Holmes, when she married again so soon after father's death, and
-a man who was nearly fifteen years younger than herself. Father
-was a plumber in the Tottenham Court Road, and he left a tidy
-business behind him, which mother carried on with Mr. Hardy, the
-foreman; but when Mr. Windibank came he made her sell the
-business, for he was very superior, being a traveller in wines.
-They got 4700 pounds for the goodwill and interest, which wasn't
-near as much as father could have got if he had been alive."
-
-I had expected to see Sherlock Holmes impatient under this
-rambling and inconsequential narrative, but, on the contrary, he
-had listened with the greatest concentration of attention.
-
-"Your own little income," he asked, "does it come out of the
-business?"
-
-"Oh, no, sir. It is quite separate and was left me by my uncle
-Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
-cent. Two thousand five hundred pounds was the amount, but I can
-only touch the interest."
-
-"You interest me extremely," said Holmes. "And since you draw so
-large a sum as a hundred a year, with what you earn into the
-bargain, you no doubt travel a little and indulge yourself in
-every way. I believe that a single lady can get on very nicely
-upon an income of about 60 pounds."
-
-"I could do with much less than that, Mr. Holmes, but you
-understand that as long as I live at home I don't wish to be a
-burden to them, and so they have the use of the money just while
-I am staying with them. Of course, that is only just for the
-time. Mr. Windibank draws my interest every quarter and pays it
-over to mother, and I find that I can do pretty well with what I
-earn at typewriting. It brings me twopence a sheet, and I can
-often do from fifteen to twenty sheets in a day."
-
-"You have made your position very clear to me," said Holmes.
-"This is my friend, Dr. Watson, before whom you can speak as
-freely as before myself. Kindly tell us now all about your
-connection with Mr. Hosmer Angel."
-
-A flush stole over Miss Sutherland's face, and she picked
-nervously at the fringe of her jacket. "I met him first at the
-gasfitters' ball," she said. "They used to send father tickets
-when he was alive, and then afterwards they remembered us, and
-sent them to mother. Mr. Windibank did not wish us to go. He
-never did wish us to go anywhere. He would get quite mad if I
-wanted so much as to join a Sunday-school treat. But this time I
-was set on going, and I would go; for what right had he to
-prevent? He said the folk were not fit for us to know, when all
-father's friends were to be there. And he said that I had nothing
-fit to wear, when I had my purple plush that I had never so much
-as taken out of the drawer. At last, when nothing else would do,
-he went off to France upon the business of the firm, but we went,
-mother and I, with Mr. Hardy, who used to be our foreman, and it
-was there I met Mr. Hosmer Angel."
-
-"I suppose," said Holmes, "that when Mr. Windibank came back from
-France he was very annoyed at your having gone to the ball."
-
-"Oh, well, he was very good about it. He laughed, I remember, and
-shrugged his shoulders, and said there was no use denying
-anything to a woman, for she would have her way."
-
-"I see. Then at the gasfitters' ball you met, as I understand, a
-gentleman called Mr. Hosmer Angel."
-
-"Yes, sir. I met him that night, and he called next day to ask if
-we had got home all safe, and after that we met him--that is to
-say, Mr. Holmes, I met him twice for walks, but after that father
-came back again, and Mr. Hosmer Angel could not come to the house
-any more."
-
-"No?"
-
-"Well, you know father didn't like anything of the sort. He
-wouldn't have any visitors if he could help it, and he used to
-say that a woman should be happy in her own family circle. But
-then, as I used to say to mother, a woman wants her own circle to
-begin with, and I had not got mine yet."
-
-"But how about Mr. Hosmer Angel? Did he make no attempt to see
-you?"
-
-"Well, father was going off to France again in a week, and Hosmer
-wrote and said that it would be safer and better not to see each
-other until he had gone. We could write in the meantime, and he
-used to write every day. I took the letters in in the morning, so
-there was no need for father to know."
-
-"Were you engaged to the gentleman at this time?"
-
-"Oh, yes, Mr. Holmes. We were engaged after the first walk that
-we took. Hosmer--Mr. Angel--was a cashier in an office in
-Leadenhall Street--and--"
-
-"What office?"
-
-"That's the worst of it, Mr. Holmes, I don't know."
-
-"Where did he live, then?"
-
-"He slept on the premises."
-
-"And you don't know his address?"
-
-"No--except that it was Leadenhall Street."
-
-"Where did you address your letters, then?"
-
-"To the Leadenhall Street Post Office, to be left till called
-for. He said that if they were sent to the office he would be
-chaffed by all the other clerks about having letters from a lady,
-so I offered to typewrite them, like he did his, but he wouldn't
-have that, for he said that when I wrote them they seemed to come
-from me, but when they were typewritten he always felt that the
-machine had come between us. That will just show you how fond he
-was of me, Mr. Holmes, and the little things that he would think
-of."
-
-"It was most suggestive," said Holmes. "It has long been an axiom
-of mine that the little things are infinitely the most important.
-Can you remember any other little things about Mr. Hosmer Angel?"
-
-"He was a very shy man, Mr. Holmes. He would rather walk with me
-in the evening than in the daylight, for he said that he hated to
-be conspicuous. Very retiring and gentlemanly he was. Even his
-voice was gentle. He'd had the quinsy and swollen glands when he
-was young, he told me, and it had left him with a weak throat,
-and a hesitating, whispering fashion of speech. He was always
-well dressed, very neat and plain, but his eyes were weak, just
-as mine are, and he wore tinted glasses against the glare."
-
-"Well, and what happened when Mr. Windibank, your stepfather,
-returned to France?"
-
-"Mr. Hosmer Angel came to the house again and proposed that we
-should marry before father came back. He was in dreadful earnest
-and made me swear, with my hands on the Testament, that whatever
-happened I would always be true to him. Mother said he was quite
-right to make me swear, and that it was a sign of his passion.
-Mother was all in his favour from the first and was even fonder
-of him than I was. Then, when they talked of marrying within the
-week, I began to ask about father; but they both said never to
-mind about father, but just to tell him afterwards, and mother
-said she would make it all right with him. I didn't quite like
-that, Mr. Holmes. It seemed funny that I should ask his leave, as
-he was only a few years older than me; but I didn't want to do
-anything on the sly, so I wrote to father at Bordeaux, where the
-company has its French offices, but the letter came back to me on
-the very morning of the wedding."
-
-"It missed him, then?"
-
-"Yes, sir; for he had started to England just before it arrived."
-
-"Ha! that was unfortunate. Your wedding was arranged, then, for
-the Friday. Was it to be in church?"
-
-"Yes, sir, but very quietly. It was to be at St. Saviour's, near
-King's Cross, and we were to have breakfast afterwards at the St.
-Pancras Hotel. Hosmer came for us in a hansom, but as there were
-two of us he put us both into it and stepped himself into a
-four-wheeler, which happened to be the only other cab in the
-street. We got to the church first, and when the four-wheeler
-drove up we waited for him to step out, but he never did, and
-when the cabman got down from the box and looked there was no one
-there! The cabman said that he could not imagine what had become
-of him, for he had seen him get in with his own eyes. That was
-last Friday, Mr. Holmes, and I have never seen or heard anything
-since then to throw any light upon what became of him."
-
-"It seems to me that you have been very shamefully treated," said
-Holmes.
-
-"Oh, no, sir! He was too good and kind to leave me so. Why, all
-the morning he was saying to me that, whatever happened, I was to
-be true; and that even if something quite unforeseen occurred to
-separate us, I was always to remember that I was pledged to him,
-and that he would claim his pledge sooner or later. It seemed
-strange talk for a wedding-morning, but what has happened since
-gives a meaning to it."
-
-"Most certainly it does. Your own opinion is, then, that some
-unforeseen catastrophe has occurred to him?"
-
-"Yes, sir. I believe that he foresaw some danger, or else he
-would not have talked so. And then I think that what he foresaw
-happened."
-
-"But you have no notion as to what it could have been?"
-
-"None."
-
-"One more question. How did your mother take the matter?"
-
-"She was angry, and said that I was never to speak of the matter
-again."
-
-"And your father? Did you tell him?"
-
-"Yes; and he seemed to think, with me, that something had
-happened, and that I should hear of Hosmer again. As he said,
-what interest could anyone have in bringing me to the doors of
-the church, and then leaving me? Now, if he had borrowed my
-money, or if he had married me and got my money settled on him,
-there might be some reason, but Hosmer was very independent about
-money and never would look at a shilling of mine. And yet, what
-could have happened? And why could he not write? Oh, it drives me
-half-mad to think of it, and I can't sleep a wink at night." She
-pulled a little handkerchief out of her muff and began to sob
-heavily into it.
-
-"I shall glance into the case for you," said Holmes, rising, "and
-I have no doubt that we shall reach some definite result. Let the
-weight of the matter rest upon me now, and do not let your mind
-dwell upon it further. Above all, try to let Mr. Hosmer Angel
-vanish from your memory, as he has done from your life."
-
-"Then you don't think I'll see him again?"
-
-"I fear not."
-
-"Then what has happened to him?"
-
-"You will leave that question in my hands. I should like an
-accurate description of him and any letters of his which you can
-spare."
-
-"I advertised for him in last Saturday's Chronicle," said she.
-"Here is the slip and here are four letters from him."
-
-"Thank you. And your address?"
-
-"No. 31 Lyon Place, Camberwell."
-
-"Mr. Angel's address you never had, I understand. Where is your
-father's place of business?"
-
-"He travels for Westhouse & Marbank, the great claret importers
-of Fenchurch Street."
-
-"Thank you. You have made your statement very clearly. You will
-leave the papers here, and remember the advice which I have given
-you. Let the whole incident be a sealed book, and do not allow it
-to affect your life."
-
-"You are very kind, Mr. Holmes, but I cannot do that. I shall be
-true to Hosmer. He shall find me ready when he comes back."
-
-For all the preposterous hat and the vacuous face, there was
-something noble in the simple faith of our visitor which
-compelled our respect. She laid her little bundle of papers upon
-the table and went her way, with a promise to come again whenever
-she might be summoned.
-
-Sherlock Holmes sat silent for a few minutes with his fingertips
-still pressed together, his legs stretched out in front of him,
-and his gaze directed upward to the ceiling. Then he took down
-from the rack the old and oily clay pipe, which was to him as a
-counsellor, and, having lit it, he leaned back in his chair, with
-the thick blue cloud-wreaths spinning up from him, and a look of
-infinite languor in his face.
-
-"Quite an interesting study, that maiden," he observed. "I found
-her more interesting than her little problem, which, by the way,
-is rather a trite one. You will find parallel cases, if you
-consult my index, in Andover in '77, and there was something of
-the sort at The Hague last year. Old as is the idea, however,
-there were one or two details which were new to me. But the
-maiden herself was most instructive."
-
-"You appeared to read a good deal upon her which was quite
-invisible to me," I remarked.
-
-"Not invisible but unnoticed, Watson. You did not know where to
-look, and so you missed all that was important. I can never bring
-you to realise the importance of sleeves, the suggestiveness of
-thumb-nails, or the great issues that may hang from a boot-lace.
-Now, what did you gather from that woman's appearance? Describe
-it."
-
-"Well, she had a slate-coloured, broad-brimmed straw hat, with a
-feather of a brickish red. Her jacket was black, with black beads
-sewn upon it, and a fringe of little black jet ornaments. Her
-dress was brown, rather darker than coffee colour, with a little
-purple plush at the neck and sleeves. Her gloves were greyish and
-were worn through at the right forefinger. Her boots I didn't
-observe. She had small round, hanging gold earrings, and a
-general air of being fairly well-to-do in a vulgar, comfortable,
-easy-going way."
-
-Sherlock Holmes clapped his hands softly together and chuckled.
-
-"'Pon my word, Watson, you are coming along wonderfully. You have
-really done very well indeed. It is true that you have missed
-everything of importance, but you have hit upon the method, and
-you have a quick eye for colour. Never trust to general
-impressions, my boy, but concentrate yourself upon details. My
-first glance is always at a woman's sleeve. In a man it is
-perhaps better first to take the knee of the trouser. As you
-observe, this woman had plush upon her sleeves, which is a most
-useful material for showing traces. The double line a little
-above the wrist, where the typewritist presses against the table,
-was beautifully defined. The sewing-machine, of the hand type,
-leaves a similar mark, but only on the left arm, and on the side
-of it farthest from the thumb, instead of being right across the
-broadest part, as this was. I then glanced at her face, and,
-observing the dint of a pince-nez at either side of her nose, I
-ventured a remark upon short sight and typewriting, which seemed
-to surprise her."
-
-"It surprised me."
-
-"But, surely, it was obvious. I was then much surprised and
-interested on glancing down to observe that, though the boots
-which she was wearing were not unlike each other, they were
-really odd ones; the one having a slightly decorated toe-cap, and
-the other a plain one. One was buttoned only in the two lower
-buttons out of five, and the other at the first, third, and
-fifth. Now, when you see that a young lady, otherwise neatly
-dressed, has come away from home with odd boots, half-buttoned,
-it is no great deduction to say that she came away in a hurry."
-
-"And what else?" I asked, keenly interested, as I always was, by
-my friend's incisive reasoning.
-
-"I noted, in passing, that she had written a note before leaving
-home but after being fully dressed. You observed that her right
-glove was torn at the forefinger, but you did not apparently see
-that both glove and finger were stained with violet ink. She had
-written in a hurry and dipped her pen too deep. It must have been
-this morning, or the mark would not remain clear upon the finger.
-All this is amusing, though rather elementary, but I must go back
-to business, Watson. Would you mind reading me the advertised
-description of Mr. Hosmer Angel?"
-
-I held the little printed slip to the light.
-
-"Missing," it said, "on the morning of the fourteenth, a gentleman
-named Hosmer Angel. About five ft. seven in. in height;
-strongly built, sallow complexion, black hair, a little bald in
-the centre, bushy, black side-whiskers and moustache; tinted
-glasses, slight infirmity of speech. Was dressed, when last seen,
-in black frock-coat faced with silk, black waistcoat, gold Albert
-chain, and grey Harris tweed trousers, with brown gaiters over
-elastic-sided boots. Known to have been employed in an office in
-Leadenhall Street. Anybody bringing--"
-
-"That will do," said Holmes. "As to the letters," he continued,
-glancing over them, "they are very commonplace. Absolutely no
-clue in them to Mr. Angel, save that he quotes Balzac once. There
-is one remarkable point, however, which will no doubt strike
-you."
-
-"They are typewritten," I remarked.
-
-"Not only that, but the signature is typewritten. Look at the
-neat little 'Hosmer Angel' at the bottom. There is a date, you
-see, but no superscription except Leadenhall Street, which is
-rather vague. The point about the signature is very suggestive--in
-fact, we may call it conclusive."
-
-"Of what?"
-
-"My dear fellow, is it possible you do not see how strongly it
-bears upon the case?"
-
-"I cannot say that I do unless it were that he wished to be able
-to deny his signature if an action for breach of promise were
-instituted."
-
-"No, that was not the point. However, I shall write two letters,
-which should settle the matter. One is to a firm in the City, the
-other is to the young lady's stepfather, Mr. Windibank, asking
-him whether he could meet us here at six o'clock tomorrow
-evening. It is just as well that we should do business with the
-male relatives. And now, Doctor, we can do nothing until the
-answers to those letters come, so we may put our little problem
-upon the shelf for the interim."
-
-I had had so many reasons to believe in my friend's subtle powers
-of reasoning and extraordinary energy in action that I felt that
-he must have some solid grounds for the assured and easy
-demeanour with which he treated the singular mystery which he had
-been called upon to fathom. Once only had I known him to fail, in
-the case of the King of Bohemia and of the Irene Adler
-photograph; but when I looked back to the weird business of the
-Sign of Four, and the extraordinary circumstances connected with
-the Study in Scarlet, I felt that it would be a strange tangle
-indeed which he could not unravel.
-
-I left him then, still puffing at his black clay pipe, with the
-conviction that when I came again on the next evening I would
-find that he held in his hands all the clues which would lead up
-to the identity of the disappearing bridegroom of Miss Mary
-Sutherland.
-
-A professional case of great gravity was engaging my own
-attention at the time, and the whole of next day I was busy at
-the bedside of the sufferer. It was not until close upon six
-o'clock that I found myself free and was able to spring into a
-hansom and drive to Baker Street, half afraid that I might be too
-late to assist at the dénouement of the little mystery. I found
-Sherlock Holmes alone, however, half asleep, with his long, thin
-form curled up in the recesses of his armchair. A formidable
-array of bottles and test-tubes, with the pungent cleanly smell
-of hydrochloric acid, told me that he had spent his day in the
-chemical work which was so dear to him.
-
-"Well, have you solved it?" I asked as I entered.
-
-"Yes. It was the bisulphate of baryta."
-
-"No, no, the mystery!" I cried.
-
-"Oh, that! I thought of the salt that I have been working upon.
-There was never any mystery in the matter, though, as I said
-yesterday, some of the details are of interest. The only drawback
-is that there is no law, I fear, that can touch the scoundrel."
-
-"Who was he, then, and what was his object in deserting Miss
-Sutherland?"
-
-The question was hardly out of my mouth, and Holmes had not yet
-opened his lips to reply, when we heard a heavy footfall in the
-passage and a tap at the door.
-
-"This is the girl's stepfather, Mr. James Windibank," said
-Holmes. "He has written to me to say that he would be here at
-six. Come in!"
-
-The man who entered was a sturdy, middle-sized fellow, some
-thirty years of age, clean-shaven, and sallow-skinned, with a
-bland, insinuating manner, and a pair of wonderfully sharp and
-penetrating grey eyes. He shot a questioning glance at each of
-us, placed his shiny top-hat upon the sideboard, and with a
-slight bow sidled down into the nearest chair.
-
-"Good-evening, Mr. James Windibank," said Holmes. "I think that
-this typewritten letter is from you, in which you made an
-appointment with me for six o'clock?"
-
-"Yes, sir. I am afraid that I am a little late, but I am not
-quite my own master, you know. I am sorry that Miss Sutherland
-has troubled you about this little matter, for I think it is far
-better not to wash linen of the sort in public. It was quite
-against my wishes that she came, but she is a very excitable,
-impulsive girl, as you may have noticed, and she is not easily
-controlled when she has made up her mind on a point. Of course, I
-did not mind you so much, as you are not connected with the
-official police, but it is not pleasant to have a family
-misfortune like this noised abroad. Besides, it is a useless
-expense, for how could you possibly find this Hosmer Angel?"
-
-"On the contrary," said Holmes quietly; "I have every reason to
-believe that I will succeed in discovering Mr. Hosmer Angel."
-
-Mr. Windibank gave a violent start and dropped his gloves. "I am
-delighted to hear it," he said.
-
-"It is a curious thing," remarked Holmes, "that a typewriter has
-really quite as much individuality as a man's handwriting. Unless
-they are quite new, no two of them write exactly alike. Some
-letters get more worn than others, and some wear only on one
-side. Now, you remark in this note of yours, Mr. Windibank, that
-in every case there is some little slurring over of the 'e,' and
-a slight defect in the tail of the 'r.' There are fourteen other
-characteristics, but those are the more obvious."
-
-"We do all our correspondence with this machine at the office,
-and no doubt it is a little worn," our visitor answered, glancing
-keenly at Holmes with his bright little eyes.
-
-"And now I will show you what is really a very interesting study,
-Mr. Windibank," Holmes continued. "I think of writing another
-little monograph some of these days on the typewriter and its
-relation to crime. It is a subject to which I have devoted some
-little attention. I have here four letters which purport to come
-from the missing man. They are all typewritten. In each case, not
-only are the 'e's' slurred and the 'r's' tailless, but you will
-observe, if you care to use my magnifying lens, that the fourteen
-other characteristics to which I have alluded are there as well."
-
-Mr. Windibank sprang out of his chair and picked up his hat. "I
-cannot waste time over this sort of fantastic talk, Mr. Holmes,"
-he said. "If you can catch the man, catch him, and let me know
-when you have done it."
-
-"Certainly," said Holmes, stepping over and turning the key in
-the door. "I let you know, then, that I have caught him!"
-
-"What! where?" shouted Mr. Windibank, turning white to his lips
-and glancing about him like a rat in a trap.
-
-"Oh, it won't do--really it won't," said Holmes suavely. "There
-is no possible getting out of it, Mr. Windibank. It is quite too
-transparent, and it was a very bad compliment when you said that
-it was impossible for me to solve so simple a question. That's
-right! Sit down and let us talk it over."
-
-Our visitor collapsed into a chair, with a ghastly face and a
-glitter of moisture on his brow. "It--it's not actionable," he
-stammered.
-
-"I am very much afraid that it is not. But between ourselves,
-Windibank, it was as cruel and selfish and heartless a trick in a
-petty way as ever came before me. Now, let me just run over the
-course of events, and you will contradict me if I go wrong."
-
-The man sat huddled up in his chair, with his head sunk upon his
-breast, like one who is utterly crushed. Holmes stuck his feet up
-on the corner of the mantelpiece and, leaning back with his hands
-in his pockets, began talking, rather to himself, as it seemed,
-than to us.
-
-"The man married a woman very much older than himself for her
-money," said he, "and he enjoyed the use of the money of the
-daughter as long as she lived with them. It was a considerable
-sum, for people in their position, and the loss of it would have
-made a serious difference. It was worth an effort to preserve it.
-The daughter was of a good, amiable disposition, but affectionate
-and warm-hearted in her ways, so that it was evident that with
-her fair personal advantages, and her little income, she would
-not be allowed to remain single long. Now her marriage would
-mean, of course, the loss of a hundred a year, so what does her
-stepfather do to prevent it? He takes the obvious course of
-keeping her at home and forbidding her to seek the company of
-people of her own age. But soon he found that that would not
-answer forever. She became restive, insisted upon her rights, and
-finally announced her positive intention of going to a certain
-ball. What does her clever stepfather do then? He conceives an
-idea more creditable to his head than to his heart. With the
-connivance and assistance of his wife he disguised himself,
-covered those keen eyes with tinted glasses, masked the face with
-a moustache and a pair of bushy whiskers, sunk that clear voice
-into an insinuating whisper, and doubly secure on account of the
-girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
-other lovers by making love himself."
-
-"It was only a joke at first," groaned our visitor. "We never
-thought that she would have been so carried away."
-
-"Very likely not. However that may be, the young lady was very
-decidedly carried away, and, having quite made up her mind that
-her stepfather was in France, the suspicion of treachery never
-for an instant entered her mind. She was flattered by the
-gentleman's attentions, and the effect was increased by the
-loudly expressed admiration of her mother. Then Mr. Angel began
-to call, for it was obvious that the matter should be pushed as
-far as it would go if a real effect were to be produced. There
-were meetings, and an engagement, which would finally secure the
-girl's affections from turning towards anyone else. But the
-deception could not be kept up forever. These pretended journeys
-to France were rather cumbrous. The thing to do was clearly to
-bring the business to an end in such a dramatic manner that it
-would leave a permanent impression upon the young lady's mind and
-prevent her from looking upon any other suitor for some time to
-come. Hence those vows of fidelity exacted upon a Testament, and
-hence also the allusions to a possibility of something happening
-on the very morning of the wedding. James Windibank wished Miss
-Sutherland to be so bound to Hosmer Angel, and so uncertain as to
-his fate, that for ten years to come, at any rate, she would not
-listen to another man. As far as the church door he brought her,
-and then, as he could go no farther, he conveniently vanished
-away by the old trick of stepping in at one door of a
-four-wheeler and out at the other. I think that was the chain of
-events, Mr. Windibank!"
-
-Our visitor had recovered something of his assurance while Holmes
-had been talking, and he rose from his chair now with a cold
-sneer upon his pale face.
-
-"It may be so, or it may not, Mr. Holmes," said he, "but if you
-are so very sharp you ought to be sharp enough to know that it is
-you who are breaking the law now, and not me. I have done nothing
-actionable from the first, but as long as you keep that door
-locked you lay yourself open to an action for assault and illegal
-constraint."
-
-"The law cannot, as you say, touch you," said Holmes, unlocking
-and throwing open the door, "yet there never was a man who
-deserved punishment more. If the young lady has a brother or a
-friend, he ought to lay a whip across your shoulders. By Jove!"
-he continued, flushing up at the sight of the bitter sneer upon
-the man's face, "it is not part of my duties to my client, but
-here's a hunting crop handy, and I think I shall just treat
-myself to--" He took two swift steps to the whip, but before he
-could grasp it there was a wild clatter of steps upon the stairs,
-the heavy hall door banged, and from the window we could see Mr.
-James Windibank running at the top of his speed down the road.
-
-"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
-threw himself down into his chair once more. "That fellow will
-rise from crime to crime until he does something very bad, and
-ends on a gallows. The case has, in some respects, been not
-entirely devoid of interest."
-
-"I cannot now entirely see all the steps of your reasoning," I
-remarked.
-
-"Well, of course it was obvious from the first that this Mr.
-Hosmer Angel must have some strong object for his curious
-conduct, and it was equally clear that the only man who really
-profited by the incident, as far as we could see, was the
-stepfather. Then the fact that the two men were never together,
-but that the one always appeared when the other was away, was
-suggestive. So were the tinted spectacles and the curious voice,
-which both hinted at a disguise, as did the bushy whiskers. My
-suspicions were all confirmed by his peculiar action in
-typewriting his signature, which, of course, inferred that his
-handwriting was so familiar to her that she would recognise even
-the smallest sample of it. You see all these isolated facts,
-together with many minor ones, all pointed in the same
-direction."
-
-"And how did you verify them?"
-
-"Having once spotted my man, it was easy to get corroboration. I
-knew the firm for which this man worked. Having taken the printed
-description. I eliminated everything from it which could be the
-result of a disguise--the whiskers, the glasses, the voice, and I
-sent it to the firm, with a request that they would inform me
-whether it answered to the description of any of their
-travellers. I had already noticed the peculiarities of the
-typewriter, and I wrote to the man himself at his business
-address asking him if he would come here. As I expected, his
-reply was typewritten and revealed the same trivial but
-characteristic defects. The same post brought me a letter from
-Westhouse & Marbank, of Fenchurch Street, to say that the
-description tallied in every respect with that of their employé,
-James Windibank. Voilà tout!"
-
-"And Miss Sutherland?"
-
-"If I tell her she will not believe me. You may remember the old
-Persian saying, 'There is danger for him who taketh the tiger
-cub, and danger also for whoso snatches a delusion from a woman.'
-There is as much sense in Hafiz as in Horace, and as much
-knowledge of the world."
-
-
-
-ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
-
-We were seated at breakfast one morning, my wife and I, when the
-maid brought in a telegram. It was from Sherlock Holmes and ran
-in this way:
-
-"Have you a couple of days to spare? Have just been wired for from
-the west of England in connection with Boscombe Valley tragedy.
-Shall be glad if you will come with me. Air and scenery perfect.
-Leave Paddington by the 11:15."
-
-"What do you say, dear?" said my wife, looking across at me.
-"Will you go?"
-
-"I really don't know what to say. I have a fairly long list at
-present."
-
-"Oh, Anstruther would do your work for you. You have been looking
-a little pale lately. I think that the change would do you good,
-and you are always so interested in Mr. Sherlock Holmes' cases."
-
-"I should be ungrateful if I were not, seeing what I gained
-through one of them," I answered. "But if I am to go, I must pack
-at once, for I have only half an hour."
-
-My experience of camp life in Afghanistan had at least had the
-effect of making me a prompt and ready traveller. My wants were
-few and simple, so that in less than the time stated I was in a
-cab with my valise, rattling away to Paddington Station. Sherlock
-Holmes was pacing up and down the platform, his tall, gaunt
-figure made even gaunter and taller by his long grey
-travelling-cloak and close-fitting cloth cap.
-
-"It is really very good of you to come, Watson," said he. "It
-makes a considerable difference to me, having someone with me on
-whom I can thoroughly rely. Local aid is always either worthless
-or else biassed. If you will keep the two corner seats I shall
-get the tickets."
-
-We had the carriage to ourselves save for an immense litter of
-papers which Holmes had brought with him. Among these he rummaged
-and read, with intervals of note-taking and of meditation, until
-we were past Reading. Then he suddenly rolled them all into a
-gigantic ball and tossed them up onto the rack.
-
-"Have you heard anything of the case?" he asked.
-
-"Not a word. I have not seen a paper for some days."
-
-"The London press has not had very full accounts. I have just
-been looking through all the recent papers in order to master the
-particulars. It seems, from what I gather, to be one of those
-simple cases which are so extremely difficult."
-
-"That sounds a little paradoxical."
-
-"But it is profoundly true. Singularity is almost invariably a
-clue. The more featureless and commonplace a crime is, the more
-difficult it is to bring it home. In this case, however, they
-have established a very serious case against the son of the
-murdered man."
-
-"It is a murder, then?"
-
-"Well, it is conjectured to be so. I shall take nothing for
-granted until I have the opportunity of looking personally into
-it. I will explain the state of things to you, as far as I have
-been able to understand it, in a very few words.
-
-"Boscombe Valley is a country district not very far from Ross, in
-Herefordshire. The largest landed proprietor in that part is a
-Mr. John Turner, who made his money in Australia and returned
-some years ago to the old country. One of the farms which he
-held, that of Hatherley, was let to Mr. Charles McCarthy, who was
-also an ex-Australian. The men had known each other in the
-colonies, so that it was not unnatural that when they came to
-settle down they should do so as near each other as possible.
-Turner was apparently the richer man, so McCarthy became his
-tenant but still remained, it seems, upon terms of perfect
-equality, as they were frequently together. McCarthy had one son,
-a lad of eighteen, and Turner had an only daughter of the same
-age, but neither of them had wives living. They appear to have
-avoided the society of the neighbouring English families and to
-have led retired lives, though both the McCarthys were fond of
-sport and were frequently seen at the race-meetings of the
-neighbourhood. McCarthy kept two servants--a man and a girl.
-Turner had a considerable household, some half-dozen at the
-least. That is as much as I have been able to gather about the
-families. Now for the facts.
-
-"On June 3rd, that is, on Monday last, McCarthy left his house at
-Hatherley about three in the afternoon and walked down to the
-Boscombe Pool, which is a small lake formed by the spreading out
-of the stream which runs down the Boscombe Valley. He had been
-out with his serving-man in the morning at Ross, and he had told
-the man that he must hurry, as he had an appointment of
-importance to keep at three. From that appointment he never came
-back alive.
-
-"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
-mile, and two people saw him as he passed over this ground. One
-was an old woman, whose name is not mentioned, and the other was
-William Crowder, a game-keeper in the employ of Mr. Turner. Both
-these witnesses depose that Mr. McCarthy was walking alone. The
-game-keeper adds that within a few minutes of his seeing Mr.
-McCarthy pass he had seen his son, Mr. James McCarthy, going the
-same way with a gun under his arm. To the best of his belief, the
-father was actually in sight at the time, and the son was
-following him. He thought no more of the matter until he heard in
-the evening of the tragedy that had occurred.
-
-"The two McCarthys were seen after the time when William Crowder,
-the game-keeper, lost sight of them. The Boscombe Pool is thickly
-wooded round, with just a fringe of grass and of reeds round the
-edge. A girl of fourteen, Patience Moran, who is the daughter of
-the lodge-keeper of the Boscombe Valley estate, was in one of the
-woods picking flowers. She states that while she was there she
-saw, at the border of the wood and close by the lake, Mr.
-McCarthy and his son, and that they appeared to be having a
-violent quarrel. She heard Mr. McCarthy the elder using very
-strong language to his son, and she saw the latter raise up his
-hand as if to strike his father. She was so frightened by their
-violence that she ran away and told her mother when she reached
-home that she had left the two McCarthys quarrelling near
-Boscombe Pool, and that she was afraid that they were going to
-fight. She had hardly said the words when young Mr. McCarthy came
-running up to the lodge to say that he had found his father dead
-in the wood, and to ask for the help of the lodge-keeper. He was
-much excited, without either his gun or his hat, and his right
-hand and sleeve were observed to be stained with fresh blood. On
-following him they found the dead body stretched out upon the
-grass beside the pool. The head had been beaten in by repeated
-blows of some heavy and blunt weapon. The injuries were such as
-might very well have been inflicted by the butt-end of his son's
-gun, which was found lying on the grass within a few paces of the
-body. Under these circumstances the young man was instantly
-arrested, and a verdict of 'wilful murder' having been returned
-at the inquest on Tuesday, he was on Wednesday brought before the
-magistrates at Ross, who have referred the case to the next
-Assizes. Those are the main facts of the case as they came out
-before the coroner and the police-court."
-
-"I could hardly imagine a more damning case," I remarked. "If
-ever circumstantial evidence pointed to a criminal it does so
-here."
-
-"Circumstantial evidence is a very tricky thing," answered Holmes
-thoughtfully. "It may seem to point very straight to one thing,
-but if you shift your own point of view a little, you may find it
-pointing in an equally uncompromising manner to something
-entirely different. It must be confessed, however, that the case
-looks exceedingly grave against the young man, and it is very
-possible that he is indeed the culprit. There are several people
-in the neighbourhood, however, and among them Miss Turner, the
-daughter of the neighbouring landowner, who believe in his
-innocence, and who have retained Lestrade, whom you may recollect
-in connection with the Study in Scarlet, to work out the case in
-his interest. Lestrade, being rather puzzled, has referred the
-case to me, and hence it is that two middle-aged gentlemen are
-flying westward at fifty miles an hour instead of quietly
-digesting their breakfasts at home."
-
-"I am afraid," said I, "that the facts are so obvious that you
-will find little credit to be gained out of this case."
-
-"There is nothing more deceptive than an obvious fact," he
-answered, laughing. "Besides, we may chance to hit upon some
-other obvious facts which may have been by no means obvious to
-Mr. Lestrade. You know me too well to think that I am boasting
-when I say that I shall either confirm or destroy his theory by
-means which he is quite incapable of employing, or even of
-understanding. To take the first example to hand, I very clearly
-perceive that in your bedroom the window is upon the right-hand
-side, and yet I question whether Mr. Lestrade would have noted
-even so self-evident a thing as that."
-
-"How on earth--"
-
-"My dear fellow, I know you well. I know the military neatness
-which characterises you. You shave every morning, and in this
-season you shave by the sunlight; but since your shaving is less
-and less complete as we get farther back on the left side, until
-it becomes positively slovenly as we get round the angle of the
-jaw, it is surely very clear that that side is less illuminated
-than the other. I could not imagine a man of your habits looking
-at himself in an equal light and being satisfied with such a
-result. I only quote this as a trivial example of observation and
-inference. Therein lies my métier, and it is just possible that
-it may be of some service in the investigation which lies before
-us. There are one or two minor points which were brought out in
-the inquest, and which are worth considering."
-
-"What are they?"
-
-"It appears that his arrest did not take place at once, but after
-the return to Hatherley Farm. On the inspector of constabulary
-informing him that he was a prisoner, he remarked that he was not
-surprised to hear it, and that it was no more than his deserts.
-This observation of his had the natural effect of removing any
-traces of doubt which might have remained in the minds of the
-coroner's jury."
-
-"It was a confession," I ejaculated.
-
-"No, for it was followed by a protestation of innocence."
-
-"Coming on the top of such a damning series of events, it was at
-least a most suspicious remark."
-
-"On the contrary," said Holmes, "it is the brightest rift which I
-can at present see in the clouds. However innocent he might be,
-he could not be such an absolute imbecile as not to see that the
-circumstances were very black against him. Had he appeared
-surprised at his own arrest, or feigned indignation at it, I
-should have looked upon it as highly suspicious, because such
-surprise or anger would not be natural under the circumstances,
-and yet might appear to be the best policy to a scheming man. His
-frank acceptance of the situation marks him as either an innocent
-man, or else as a man of considerable self-restraint and
-firmness. As to his remark about his deserts, it was also not
-unnatural if you consider that he stood beside the dead body of
-his father, and that there is no doubt that he had that very day
-so far forgotten his filial duty as to bandy words with him, and
-even, according to the little girl whose evidence is so
-important, to raise his hand as if to strike him. The
-self-reproach and contrition which are displayed in his remark
-appear to me to be the signs of a healthy mind rather than of a
-guilty one."
-
-I shook my head. "Many men have been hanged on far slighter
-evidence," I remarked.
-
-"So they have. And many men have been wrongfully hanged."
-
-"What is the young man's own account of the matter?"
-
-"It is, I am afraid, not very encouraging to his supporters,
-though there are one or two points in it which are suggestive.
-You will find it here, and may read it for yourself."
-
-He picked out from his bundle a copy of the local Herefordshire
-paper, and having turned down the sheet he pointed out the
-paragraph in which the unfortunate young man had given his own
-statement of what had occurred. I settled myself down in the
-corner of the carriage and read it very carefully. It ran in this
-way:
-
-"Mr. James McCarthy, the only son of the deceased, was then called
-and gave evidence as follows: 'I had been away from home for
-three days at Bristol, and had only just returned upon the
-morning of last Monday, the 3rd. My father was absent from home at
-the time of my arrival, and I was informed by the maid that he
-had driven over to Ross with John Cobb, the groom. Shortly after
-my return I heard the wheels of his trap in the yard, and,
-looking out of my window, I saw him get out and walk rapidly out
-of the yard, though I was not aware in which direction he was
-going. I then took my gun and strolled out in the direction of
-the Boscombe Pool, with the intention of visiting the rabbit
-warren which is upon the other side. On my way I saw William
-Crowder, the game-keeper, as he had stated in his evidence; but
-he is mistaken in thinking that I was following my father. I had
-no idea that he was in front of me. When about a hundred yards
-from the pool I heard a cry of "Cooee!" which was a usual signal
-between my father and myself. I then hurried forward, and found
-him standing by the pool. He appeared to be much surprised at
-seeing me and asked me rather roughly what I was doing there. A
-conversation ensued which led to high words and almost to blows,
-for my father was a man of a very violent temper. Seeing that his
-passion was becoming ungovernable, I left him and returned
-towards Hatherley Farm. I had not gone more than 150 yards,
-however, when I heard a hideous outcry behind me, which caused me
-to run back again. I found my father expiring upon the ground,
-with his head terribly injured. I dropped my gun and held him in
-my arms, but he almost instantly expired. I knelt beside him for
-some minutes, and then made my way to Mr. Turner's lodge-keeper,
-his house being the nearest, to ask for assistance. I saw no one
-near my father when I returned, and I have no idea how he came by
-his injuries. He was not a popular man, being somewhat cold and
-forbidding in his manners, but he had, as far as I know, no
-active enemies. I know nothing further of the matter.'
-
-"The Coroner: Did your father make any statement to you before
-he died?
-
-"Witness: He mumbled a few words, but I could only catch some
-allusion to a rat.
-
-"The Coroner: What did you understand by that?
-
-"Witness: It conveyed no meaning to me. I thought that he was
-delirious.
-
-"The Coroner: What was the point upon which you and your father
-had this final quarrel?
-
-"Witness: I should prefer not to answer.
-
-"The Coroner: I am afraid that I must press it.
-
-"Witness: It is really impossible for me to tell you. I can
-assure you that it has nothing to do with the sad tragedy which
-followed.
-
-"The Coroner: That is for the court to decide. I need not point
-out to you that your refusal to answer will prejudice your case
-considerably in any future proceedings which may arise.
-
-"Witness: I must still refuse.
-
-"The Coroner: I understand that the cry of 'Cooee' was a common
-signal between you and your father?
-
-"Witness: It was.
-
-"The Coroner: How was it, then, that he uttered it before he saw
-you, and before he even knew that you had returned from Bristol?
-
-"Witness (with considerable confusion): I do not know.
-
-"A Juryman: Did you see nothing which aroused your suspicions
-when you returned on hearing the cry and found your father
-fatally injured?
-
-"Witness: Nothing definite.
-
-"The Coroner: What do you mean?
-
-"Witness: I was so disturbed and excited as I rushed out into
-the open, that I could think of nothing except of my father. Yet
-I have a vague impression that as I ran forward something lay
-upon the ground to the left of me. It seemed to me to be
-something grey in colour, a coat of some sort, or a plaid perhaps.
-When I rose from my father I looked round for it, but it was
-gone.
-
-"'Do you mean that it disappeared before you went for help?'
-
-"'Yes, it was gone.'
-
-"'You cannot say what it was?'
-
-"'No, I had a feeling something was there.'
-
-"'How far from the body?'
-
-"'A dozen yards or so.'
-
-"'And how far from the edge of the wood?'
-
-"'About the same.'
-
-"'Then if it was removed it was while you were within a dozen
-yards of it?'
-
-"'Yes, but with my back towards it.'
-
-"This concluded the examination of the witness."
-
-"I see," said I as I glanced down the column, "that the coroner
-in his concluding remarks was rather severe upon young McCarthy.
-He calls attention, and with reason, to the discrepancy about his
-father having signalled to him before seeing him, also to his
-refusal to give details of his conversation with his father, and
-his singular account of his father's dying words. They are all,
-as he remarks, very much against the son."
-
-Holmes laughed softly to himself and stretched himself out upon
-the cushioned seat. "Both you and the coroner have been at some
-pains," said he, "to single out the very strongest points in the
-young man's favour. Don't you see that you alternately give him
-credit for having too much imagination and too little? Too
-little, if he could not invent a cause of quarrel which would
-give him the sympathy of the jury; too much, if he evolved from
-his own inner consciousness anything so outré as a dying
-reference to a rat, and the incident of the vanishing cloth. No,
-sir, I shall approach this case from the point of view that what
-this young man says is true, and we shall see whither that
-hypothesis will lead us. And now here is my pocket Petrarch, and
-not another word shall I say of this case until we are on the
-scene of action. We lunch at Swindon, and I see that we shall be
-there in twenty minutes."
-
-It was nearly four o'clock when we at last, after passing through
-the beautiful Stroud Valley, and over the broad gleaming Severn,
-found ourselves at the pretty little country-town of Ross. A
-lean, ferret-like man, furtive and sly-looking, was waiting for
-us upon the platform. In spite of the light brown dustcoat and
-leather-leggings which he wore in deference to his rustic
-surroundings, I had no difficulty in recognising Lestrade, of
-Scotland Yard. With him we drove to the Hereford Arms where a
-room had already been engaged for us.
-
-"I have ordered a carriage," said Lestrade as we sat over a cup
-of tea. "I knew your energetic nature, and that you would not be
-happy until you had been on the scene of the crime."
-
-"It was very nice and complimentary of you," Holmes answered. "It
-is entirely a question of barometric pressure."
-
-Lestrade looked startled. "I do not quite follow," he said.
-
-"How is the glass? Twenty-nine, I see. No wind, and not a cloud
-in the sky. I have a caseful of cigarettes here which need
-smoking, and the sofa is very much superior to the usual country
-hotel abomination. I do not think that it is probable that I
-shall use the carriage to-night."
-
-Lestrade laughed indulgently. "You have, no doubt, already formed
-your conclusions from the newspapers," he said. "The case is as
-plain as a pikestaff, and the more one goes into it the plainer
-it becomes. Still, of course, one can't refuse a lady, and such a
-very positive one, too. She has heard of you, and would have your
-opinion, though I repeatedly told her that there was nothing
-which you could do which I had not already done. Why, bless my
-soul! here is her carriage at the door."
-
-He had hardly spoken before there rushed into the room one of the
-most lovely young women that I have ever seen in my life. Her
-violet eyes shining, her lips parted, a pink flush upon her
-cheeks, all thought of her natural reserve lost in her
-overpowering excitement and concern.
-
-"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
-other of us, and finally, with a woman's quick intuition,
-fastening upon my companion, "I am so glad that you have come. I
-have driven down to tell you so. I know that James didn't do it.
-I know it, and I want you to start upon your work knowing it,
-too. Never let yourself doubt upon that point. We have known each
-other since we were little children, and I know his faults as no
-one else does; but he is too tender-hearted to hurt a fly. Such a
-charge is absurd to anyone who really knows him."
-
-"I hope we may clear him, Miss Turner," said Sherlock Holmes.
-"You may rely upon my doing all that I can."
-
-"But you have read the evidence. You have formed some conclusion?
-Do you not see some loophole, some flaw? Do you not yourself
-think that he is innocent?"
-
-"I think that it is very probable."
-
-"There, now!" she cried, throwing back her head and looking
-defiantly at Lestrade. "You hear! He gives me hopes."
-
-Lestrade shrugged his shoulders. "I am afraid that my colleague
-has been a little quick in forming his conclusions," he said.
-
-"But he is right. Oh! I know that he is right. James never did
-it. And about his quarrel with his father, I am sure that the
-reason why he would not speak about it to the coroner was because
-I was concerned in it."
-
-"In what way?" asked Holmes.
-
-"It is no time for me to hide anything. James and his father had
-many disagreements about me. Mr. McCarthy was very anxious that
-there should be a marriage between us. James and I have always
-loved each other as brother and sister; but of course he is young
-and has seen very little of life yet, and--and--well, he
-naturally did not wish to do anything like that yet. So there
-were quarrels, and this, I am sure, was one of them."
-
-"And your father?" asked Holmes. "Was he in favour of such a
-union?"
-
-"No, he was averse to it also. No one but Mr. McCarthy was in
-favour of it." A quick blush passed over her fresh young face as
-Holmes shot one of his keen, questioning glances at her.
-
-"Thank you for this information," said he. "May I see your father
-if I call to-morrow?"
-
-"I am afraid the doctor won't allow it."
-
-"The doctor?"
-
-"Yes, have you not heard? Poor father has never been strong for
-years back, but this has broken him down completely. He has taken
-to his bed, and Dr. Willows says that he is a wreck and that his
-nervous system is shattered. Mr. McCarthy was the only man alive
-who had known dad in the old days in Victoria."
-
-"Ha! In Victoria! That is important."
-
-"Yes, at the mines."
-
-"Quite so; at the gold-mines, where, as I understand, Mr. Turner
-made his money."
-
-"Yes, certainly."
-
-"Thank you, Miss Turner. You have been of material assistance to
-me."
-
-"You will tell me if you have any news to-morrow. No doubt you
-will go to the prison to see James. Oh, if you do, Mr. Holmes, do
-tell him that I know him to be innocent."
-
-"I will, Miss Turner."
-
-"I must go home now, for dad is very ill, and he misses me so if
-I leave him. Good-bye, and God help you in your undertaking." She
-hurried from the room as impulsively as she had entered, and we
-heard the wheels of her carriage rattle off down the street.
-
-"I am ashamed of you, Holmes," said Lestrade with dignity after a
-few minutes' silence. "Why should you raise up hopes which you
-are bound to disappoint? I am not over-tender of heart, but I
-call it cruel."
-
-"I think that I see my way to clearing James McCarthy," said
-Holmes. "Have you an order to see him in prison?"
-
-"Yes, but only for you and me."
-
-"Then I shall reconsider my resolution about going out. We have
-still time to take a train to Hereford and see him to-night?"
-
-"Ample."
-
-"Then let us do so. Watson, I fear that you will find it very
-slow, but I shall only be away a couple of hours."
-
-I walked down to the station with them, and then wandered through
-the streets of the little town, finally returning to the hotel,
-where I lay upon the sofa and tried to interest myself in a
-yellow-backed novel. The puny plot of the story was so thin,
-however, when compared to the deep mystery through which we were
-groping, and I found my attention wander so continually from the
-action to the fact, that I at last flung it across the room and
-gave myself up entirely to a consideration of the events of the
-day. Supposing that this unhappy young man's story were
-absolutely true, then what hellish thing, what absolutely
-unforeseen and extraordinary calamity could have occurred between
-the time when he parted from his father, and the moment when,
-drawn back by his screams, he rushed into the glade? It was
-something terrible and deadly. What could it be? Might not the
-nature of the injuries reveal something to my medical instincts?
-I rang the bell and called for the weekly county paper, which
-contained a verbatim account of the inquest. In the surgeon's
-deposition it was stated that the posterior third of the left
-parietal bone and the left half of the occipital bone had been
-shattered by a heavy blow from a blunt weapon. I marked the spot
-upon my own head. Clearly such a blow must have been struck from
-behind. That was to some extent in favour of the accused, as when
-seen quarrelling he was face to face with his father. Still, it
-did not go for very much, for the older man might have turned his
-back before the blow fell. Still, it might be worth while to call
-Holmes' attention to it. Then there was the peculiar dying
-reference to a rat. What could that mean? It could not be
-delirium. A man dying from a sudden blow does not commonly become
-delirious. No, it was more likely to be an attempt to explain how
-he met his fate. But what could it indicate? I cudgelled my
-brains to find some possible explanation. And then the incident
-of the grey cloth seen by young McCarthy. If that were true the
-murderer must have dropped some part of his dress, presumably his
-overcoat, in his flight, and must have had the hardihood to
-return and to carry it away at the instant when the son was
-kneeling with his back turned not a dozen paces off. What a
-tissue of mysteries and improbabilities the whole thing was! I
-did not wonder at Lestrade's opinion, and yet I had so much faith
-in Sherlock Holmes' insight that I could not lose hope as long
-as every fresh fact seemed to strengthen his conviction of young
-McCarthy's innocence.
-
-It was late before Sherlock Holmes returned. He came back alone,
-for Lestrade was staying in lodgings in the town.
-
-"The glass still keeps very high," he remarked as he sat down.
-"It is of importance that it should not rain before we are able
-to go over the ground. On the other hand, a man should be at his
-very best and keenest for such nice work as that, and I did not
-wish to do it when fagged by a long journey. I have seen young
-McCarthy."
-
-"And what did you learn from him?"
-
-"Nothing."
-
-"Could he throw no light?"
-
-"None at all. I was inclined to think at one time that he knew
-who had done it and was screening him or her, but I am convinced
-now that he is as puzzled as everyone else. He is not a very
-quick-witted youth, though comely to look at and, I should think,
-sound at heart."
-
-"I cannot admire his taste," I remarked, "if it is indeed a fact
-that he was averse to a marriage with so charming a young lady as
-this Miss Turner."
-
-"Ah, thereby hangs a rather painful tale. This fellow is madly,
-insanely, in love with her, but some two years ago, when he was
-only a lad, and before he really knew her, for she had been away
-five years at a boarding-school, what does the idiot do but get
-into the clutches of a barmaid in Bristol and marry her at a
-registry office? No one knows a word of the matter, but you can
-imagine how maddening it must be to him to be upbraided for not
-doing what he would give his very eyes to do, but what he knows
-to be absolutely impossible. It was sheer frenzy of this sort
-which made him throw his hands up into the air when his father,
-at their last interview, was goading him on to propose to Miss
-Turner. On the other hand, he had no means of supporting himself,
-and his father, who was by all accounts a very hard man, would
-have thrown him over utterly had he known the truth. It was with
-his barmaid wife that he had spent the last three days in
-Bristol, and his father did not know where he was. Mark that
-point. It is of importance. Good has come out of evil, however,
-for the barmaid, finding from the papers that he is in serious
-trouble and likely to be hanged, has thrown him over utterly and
-has written to him to say that she has a husband already in the
-Bermuda Dockyard, so that there is really no tie between them. I
-think that that bit of news has consoled young McCarthy for all
-that he has suffered."
-
-"But if he is innocent, who has done it?"
-
-"Ah! who? I would call your attention very particularly to two
-points. One is that the murdered man had an appointment with
-someone at the pool, and that the someone could not have been his
-son, for his son was away, and he did not know when he would
-return. The second is that the murdered man was heard to cry
-'Cooee!' before he knew that his son had returned. Those are the
-crucial points upon which the case depends. And now let us talk
-about George Meredith, if you please, and we shall leave all
-minor matters until to-morrow."
-
-There was no rain, as Holmes had foretold, and the morning broke
-bright and cloudless. At nine o'clock Lestrade called for us with
-the carriage, and we set off for Hatherley Farm and the Boscombe
-Pool.
-
-"There is serious news this morning," Lestrade observed. "It is
-said that Mr. Turner, of the Hall, is so ill that his life is
-despaired of."
-
-"An elderly man, I presume?" said Holmes.
-
-"About sixty; but his constitution has been shattered by his life
-abroad, and he has been in failing health for some time. This
-business has had a very bad effect upon him. He was an old friend
-of McCarthy's, and, I may add, a great benefactor to him, for I
-have learned that he gave him Hatherley Farm rent free."
-
-"Indeed! That is interesting," said Holmes.
-
-"Oh, yes! In a hundred other ways he has helped him. Everybody
-about here speaks of his kindness to him."
-
-"Really! Does it not strike you as a little singular that this
-McCarthy, who appears to have had little of his own, and to have
-been under such obligations to Turner, should still talk of
-marrying his son to Turner's daughter, who is, presumably,
-heiress to the estate, and that in such a very cocksure manner,
-as if it were merely a case of a proposal and all else would
-follow? It is the more strange, since we know that Turner himself
-was averse to the idea. The daughter told us as much. Do you not
-deduce something from that?"
-
-"We have got to the deductions and the inferences," said
-Lestrade, winking at me. "I find it hard enough to tackle facts,
-Holmes, without flying away after theories and fancies."
-
-"You are right," said Holmes demurely; "you do find it very hard
-to tackle the facts."
-
-"Anyhow, I have grasped one fact which you seem to find it
-difficult to get hold of," replied Lestrade with some warmth.
-
-"And that is--"
-
-"That McCarthy senior met his death from McCarthy junior and that
-all theories to the contrary are the merest moonshine."
-
-"Well, moonshine is a brighter thing than fog," said Holmes,
-laughing. "But I am very much mistaken if this is not Hatherley
-Farm upon the left."
-
-"Yes, that is it." It was a widespread, comfortable-looking
-building, two-storied, slate-roofed, with great yellow blotches
-of lichen upon the grey walls. The drawn blinds and the smokeless
-chimneys, however, gave it a stricken look, as though the weight
-of this horror still lay heavy upon it. We called at the door,
-when the maid, at Holmes' request, showed us the boots which her
-master wore at the time of his death, and also a pair of the
-son's, though not the pair which he had then had. Having measured
-these very carefully from seven or eight different points, Holmes
-desired to be led to the court-yard, from which we all followed
-the winding track which led to Boscombe Pool.
-
-Sherlock Holmes was transformed when he was hot upon such a scent
-as this. Men who had only known the quiet thinker and logician of
-Baker Street would have failed to recognise him. His face flushed
-and darkened. His brows were drawn into two hard black lines,
-while his eyes shone out from beneath them with a steely glitter.
-His face was bent downward, his shoulders bowed, his lips
-compressed, and the veins stood out like whipcord in his long,
-sinewy neck. His nostrils seemed to dilate with a purely animal
-lust for the chase, and his mind was so absolutely concentrated
-upon the matter before him that a question or remark fell
-unheeded upon his ears, or, at the most, only provoked a quick,
-impatient snarl in reply. Swiftly and silently he made his way
-along the track which ran through the meadows, and so by way of
-the woods to the Boscombe Pool. It was damp, marshy ground, as is
-all that district, and there were marks of many feet, both upon
-the path and amid the short grass which bounded it on either
-side. Sometimes Holmes would hurry on, sometimes stop dead, and
-once he made quite a little detour into the meadow. Lestrade and
-I walked behind him, the detective indifferent and contemptuous,
-while I watched my friend with the interest which sprang from the
-conviction that every one of his actions was directed towards a
-definite end.
-
-The Boscombe Pool, which is a little reed-girt sheet of water
-some fifty yards across, is situated at the boundary between the
-Hatherley Farm and the private park of the wealthy Mr. Turner.
-Above the woods which lined it upon the farther side we could see
-the red, jutting pinnacles which marked the site of the rich
-landowner's dwelling. On the Hatherley side of the pool the woods
-grew very thick, and there was a narrow belt of sodden grass
-twenty paces across between the edge of the trees and the reeds
-which lined the lake. Lestrade showed us the exact spot at which
-the body had been found, and, indeed, so moist was the ground,
-that I could plainly see the traces which had been left by the
-fall of the stricken man. To Holmes, as I could see by his eager
-face and peering eyes, very many other things were to be read
-upon the trampled grass. He ran round, like a dog who is picking
-up a scent, and then turned upon my companion.
-
-"What did you go into the pool for?" he asked.
-
-"I fished about with a rake. I thought there might be some weapon
-or other trace. But how on earth--"
-
-"Oh, tut, tut! I have no time! That left foot of yours with its
-inward twist is all over the place. A mole could trace it, and
-there it vanishes among the reeds. Oh, how simple it would all
-have been had I been here before they came like a herd of buffalo
-and wallowed all over it. Here is where the party with the
-lodge-keeper came, and they have covered all tracks for six or
-eight feet round the body. But here are three separate tracks of
-the same feet." He drew out a lens and lay down upon his
-waterproof to have a better view, talking all the time rather to
-himself than to us. "These are young McCarthy's feet. Twice he
-was walking, and once he ran swiftly, so that the soles are
-deeply marked and the heels hardly visible. That bears out his
-story. He ran when he saw his father on the ground. Then here are
-the father's feet as he paced up and down. What is this, then? It
-is the butt-end of the gun as the son stood listening. And this?
-Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
-unusual boots! They come, they go, they come again--of course
-that was for the cloak. Now where did they come from?" He ran up
-and down, sometimes losing, sometimes finding the track until we
-were well within the edge of the wood and under the shadow of a
-great beech, the largest tree in the neighbourhood. Holmes traced
-his way to the farther side of this and lay down once more upon
-his face with a little cry of satisfaction. For a long time he
-remained there, turning over the leaves and dried sticks,
-gathering up what seemed to me to be dust into an envelope and
-examining with his lens not only the ground but even the bark of
-the tree as far as he could reach. A jagged stone was lying among
-the moss, and this also he carefully examined and retained. Then
-he followed a pathway through the wood until he came to the
-highroad, where all traces were lost.
-
-"It has been a case of considerable interest," he remarked,
-returning to his natural manner. "I fancy that this grey house on
-the right must be the lodge. I think that I will go in and have a
-word with Moran, and perhaps write a little note. Having done
-that, we may drive back to our luncheon. You may walk to the cab,
-and I shall be with you presently."
-
-It was about ten minutes before we regained our cab and drove
-back into Ross, Holmes still carrying with him the stone which he
-had picked up in the wood.
-
-"This may interest you, Lestrade," he remarked, holding it out.
-"The murder was done with it."
-
-"I see no marks."
-
-"There are none."
-
-"How do you know, then?"
-
-"The grass was growing under it. It had only lain there a few
-days. There was no sign of a place whence it had been taken. It
-corresponds with the injuries. There is no sign of any other
-weapon."
-
-"And the murderer?"
-
-"Is a tall man, left-handed, limps with the right leg, wears
-thick-soled shooting-boots and a grey cloak, smokes Indian
-cigars, uses a cigar-holder, and carries a blunt pen-knife in his
-pocket. There are several other indications, but these may be
-enough to aid us in our search."
-
-Lestrade laughed. "I am afraid that I am still a sceptic," he
-said. "Theories are all very well, but we have to deal with a
-hard-headed British jury."
-
-"Nous verrons," answered Holmes calmly. "You work your own
-method, and I shall work mine. I shall be busy this afternoon,
-and shall probably return to London by the evening train."
-
-"And leave your case unfinished?"
-
-"No, finished."
-
-"But the mystery?"
-
-"It is solved."
-
-"Who was the criminal, then?"
-
-"The gentleman I describe."
-
-"But who is he?"
-
-"Surely it would not be difficult to find out. This is not such a
-populous neighbourhood."
-
-Lestrade shrugged his shoulders. "I am a practical man," he said,
-"and I really cannot undertake to go about the country looking
-for a left-handed gentleman with a game leg. I should become the
-laughing-stock of Scotland Yard."
-
-"All right," said Holmes quietly. "I have given you the chance.
-Here are your lodgings. Good-bye. I shall drop you a line before
-I leave."
-
-Having left Lestrade at his rooms, we drove to our hotel, where
-we found lunch upon the table. Holmes was silent and buried in
-thought with a pained expression upon his face, as one who finds
-himself in a perplexing position.
-
-"Look here, Watson," he said when the cloth was cleared "just sit
-down in this chair and let me preach to you for a little. I don't
-know quite what to do, and I should value your advice. Light a
-cigar and let me expound."
-
- "Pray do so."
-
-"Well, now, in considering this case there are two points about
-young McCarthy's narrative which struck us both instantly,
-although they impressed me in his favour and you against him. One
-was the fact that his father should, according to his account,
-cry 'Cooee!' before seeing him. The other was his singular dying
-reference to a rat. He mumbled several words, you understand, but
-that was all that caught the son's ear. Now from this double
-point our research must commence, and we will begin it by
-presuming that what the lad says is absolutely true."
-
-"What of this 'Cooee!' then?"
-
-"Well, obviously it could not have been meant for the son. The
-son, as far as he knew, was in Bristol. It was mere chance that
-he was within earshot. The 'Cooee!' was meant to attract the
-attention of whoever it was that he had the appointment with. But
-'Cooee' is a distinctly Australian cry, and one which is used
-between Australians. There is a strong presumption that the
-person whom McCarthy expected to meet him at Boscombe Pool was
-someone who had been in Australia."
-
-"What of the rat, then?"
-
-Sherlock Holmes took a folded paper from his pocket and flattened
-it out on the table. "This is a map of the Colony of Victoria,"
-he said. "I wired to Bristol for it last night." He put his hand
-over part of the map. "What do you read?"
-
-"ARAT," I read.
-
-"And now?" He raised his hand.
-
-"BALLARAT."
-
-"Quite so. That was the word the man uttered, and of which his
-son only caught the last two syllables. He was trying to utter
-the name of his murderer. So and so, of Ballarat."
-
-"It is wonderful!" I exclaimed.
-
-"It is obvious. And now, you see, I had narrowed the field down
-considerably. The possession of a grey garment was a third point
-which, granting the son's statement to be correct, was a
-certainty. We have come now out of mere vagueness to the definite
-conception of an Australian from Ballarat with a grey cloak."
-
-"Certainly."
-
-"And one who was at home in the district, for the pool can only
-be approached by the farm or by the estate, where strangers could
-hardly wander."
-
-"Quite so."
-
-"Then comes our expedition of to-day. By an examination of the
-ground I gained the trifling details which I gave to that
-imbecile Lestrade, as to the personality of the criminal."
-
-"But how did you gain them?"
-
-"You know my method. It is founded upon the observation of
-trifles."
-
-"His height I know that you might roughly judge from the length
-of his stride. His boots, too, might be told from their traces."
-
-"Yes, they were peculiar boots."
-
-"But his lameness?"
-
-"The impression of his right foot was always less distinct than
-his left. He put less weight upon it. Why? Because he limped--he
-was lame."
-
-"But his left-handedness."
-
-"You were yourself struck by the nature of the injury as recorded
-by the surgeon at the inquest. The blow was struck from
-immediately behind, and yet was upon the left side. Now, how can
-that be unless it were by a left-handed man? He had stood behind
-that tree during the interview between the father and son. He had
-even smoked there. I found the ash of a cigar, which my special
-knowledge of tobacco ashes enables me to pronounce as an Indian
-cigar. I have, as you know, devoted some attention to this, and
-written a little monograph on the ashes of 140 different
-varieties of pipe, cigar, and cigarette tobacco. Having found the
-ash, I then looked round and discovered the stump among the moss
-where he had tossed it. It was an Indian cigar, of the variety
-which are rolled in Rotterdam."
-
-"And the cigar-holder?"
-
-"I could see that the end had not been in his mouth. Therefore he
-used a holder. The tip had been cut off, not bitten off, but the
-cut was not a clean one, so I deduced a blunt pen-knife."
-
-"Holmes," I said, "you have drawn a net round this man from which
-he cannot escape, and you have saved an innocent human life as
-truly as if you had cut the cord which was hanging him. I see the
-direction in which all this points. The culprit is--"
-
-"Mr. John Turner," cried the hotel waiter, opening the door of
-our sitting-room, and ushering in a visitor.
-
-The man who entered was a strange and impressive figure. His
-slow, limping step and bowed shoulders gave the appearance of
-decrepitude, and yet his hard, deep-lined, craggy features, and
-his enormous limbs showed that he was possessed of unusual
-strength of body and of character. His tangled beard, grizzled
-hair, and outstanding, drooping eyebrows combined to give an air
-of dignity and power to his appearance, but his face was of an
-ashen white, while his lips and the corners of his nostrils were
-tinged with a shade of blue. It was clear to me at a glance that
-he was in the grip of some deadly and chronic disease.
-
-"Pray sit down on the sofa," said Holmes gently. "You had my
-note?"
-
-"Yes, the lodge-keeper brought it up. You said that you wished to
-see me here to avoid scandal."
-
-"I thought people would talk if I went to the Hall."
-
-"And why did you wish to see me?" He looked across at my
-companion with despair in his weary eyes, as though his question
-was already answered.
-
-"Yes," said Holmes, answering the look rather than the words. "It
-is so. I know all about McCarthy."
-
-The old man sank his face in his hands. "God help me!" he cried.
-"But I would not have let the young man come to harm. I give you
-my word that I would have spoken out if it went against him at
-the Assizes."
-
-"I am glad to hear you say so," said Holmes gravely.
-
-"I would have spoken now had it not been for my dear girl. It
-would break her heart--it will break her heart when she hears
-that I am arrested."
-
-"It may not come to that," said Holmes.
-
-"What?"
-
-"I am no official agent. I understand that it was your daughter
-who required my presence here, and I am acting in her interests.
-Young McCarthy must be got off, however."
-
-"I am a dying man," said old Turner. "I have had diabetes for
-years. My doctor says it is a question whether I shall live a
-month. Yet I would rather die under my own roof than in a gaol."
-
-Holmes rose and sat down at the table with his pen in his hand
-and a bundle of paper before him. "Just tell us the truth," he
-said. "I shall jot down the facts. You will sign it, and Watson
-here can witness it. Then I could produce your confession at the
-last extremity to save young McCarthy. I promise you that I shall
-not use it unless it is absolutely needed."
-
-"It's as well," said the old man; "it's a question whether I
-shall live to the Assizes, so it matters little to me, but I
-should wish to spare Alice the shock. And now I will make the
-thing clear to you; it has been a long time in the acting, but
-will not take me long to tell.
-
-"You didn't know this dead man, McCarthy. He was a devil
-incarnate. I tell you that. God keep you out of the clutches of
-such a man as he. His grip has been upon me these twenty years,
-and he has blasted my life. I'll tell you first how I came to be
-in his power.
-
-"It was in the early '60's at the diggings. I was a young chap
-then, hot-blooded and reckless, ready to turn my hand at
-anything; I got among bad companions, took to drink, had no luck
-with my claim, took to the bush, and in a word became what you
-would call over here a highway robber. There were six of us, and
-we had a wild, free life of it, sticking up a station from time
-to time, or stopping the wagons on the road to the diggings.
-Black Jack of Ballarat was the name I went under, and our party
-is still remembered in the colony as the Ballarat Gang.
-
-"One day a gold convoy came down from Ballarat to Melbourne, and
-we lay in wait for it and attacked it. There were six troopers
-and six of us, so it was a close thing, but we emptied four of
-their saddles at the first volley. Three of our boys were killed,
-however, before we got the swag. I put my pistol to the head of
-the wagon-driver, who was this very man McCarthy. I wish to the
-Lord that I had shot him then, but I spared him, though I saw his
-wicked little eyes fixed on my face, as though to remember every
-feature. We got away with the gold, became wealthy men, and made
-our way over to England without being suspected. There I parted
-from my old pals and determined to settle down to a quiet and
-respectable life. I bought this estate, which chanced to be in
-the market, and I set myself to do a little good with my money,
-to make up for the way in which I had earned it. I married, too,
-and though my wife died young she left me my dear little Alice.
-Even when she was just a baby her wee hand seemed to lead me down
-the right path as nothing else had ever done. In a word, I turned
-over a new leaf and did my best to make up for the past. All was
-going well when McCarthy laid his grip upon me.
-
-"I had gone up to town about an investment, and I met him in
-Regent Street with hardly a coat to his back or a boot to his
-foot.
-
-"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
-as good as a family to you. There's two of us, me and my son, and
-you can have the keeping of us. If you don't--it's a fine,
-law-abiding country is England, and there's always a policeman
-within hail.'
-
-"Well, down they came to the west country, there was no shaking
-them off, and there they have lived rent free on my best land
-ever since. There was no rest for me, no peace, no forgetfulness;
-turn where I would, there was his cunning, grinning face at my
-elbow. It grew worse as Alice grew up, for he soon saw I was more
-afraid of her knowing my past than of the police. Whatever he
-wanted he must have, and whatever it was I gave him without
-question, land, money, houses, until at last he asked a thing
-which I could not give. He asked for Alice.
-
-"His son, you see, had grown up, and so had my girl, and as I was
-known to be in weak health, it seemed a fine stroke to him that
-his lad should step into the whole property. But there I was
-firm. I would not have his cursed stock mixed with mine; not that
-I had any dislike to the lad, but his blood was in him, and that
-was enough. I stood firm. McCarthy threatened. I braved him to do
-his worst. We were to meet at the pool midway between our houses
-to talk it over.
-
-"When I went down there I found him talking with his son, so I
-smoked a cigar and waited behind a tree until he should be alone.
-But as I listened to his talk all that was black and bitter in
-me seemed to come uppermost. He was urging his son to marry my
-daughter with as little regard for what she might think as if she
-were a slut from off the streets. It drove me mad to think that I
-and all that I held most dear should be in the power of such a
-man as this. Could I not snap the bond? I was already a dying and
-a desperate man. Though clear of mind and fairly strong of limb,
-I knew that my own fate was sealed. But my memory and my girl!
-Both could be saved if I could but silence that foul tongue. I
-did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
-I have led a life of martyrdom to atone for it. But that my girl
-should be entangled in the same meshes which held me was more
-than I could suffer. I struck him down with no more compunction
-than if he had been some foul and venomous beast. His cry brought
-back his son; but I had gained the cover of the wood, though I
-was forced to go back to fetch the cloak which I had dropped in
-my flight. That is the true story, gentlemen, of all that
-occurred."
-
-"Well, it is not for me to judge you," said Holmes as the old man
-signed the statement which had been drawn out. "I pray that we
-may never be exposed to such a temptation."
-
-"I pray not, sir. And what do you intend to do?"
-
-"In view of your health, nothing. You are yourself aware that you
-will soon have to answer for your deed at a higher court than the
-Assizes. I will keep your confession, and if McCarthy is
-condemned I shall be forced to use it. If not, it shall never be
-seen by mortal eye; and your secret, whether you be alive or
-dead, shall be safe with us."
-
-"Farewell, then," said the old man solemnly. "Your own deathbeds,
-when they come, will be the easier for the thought of the peace
-which you have given to mine." Tottering and shaking in all his
-giant frame, he stumbled slowly from the room.
-
-"God help us!" said Holmes after a long silence. "Why does fate
-play such tricks with poor, helpless worms? I never hear of such
-a case as this that I do not think of Baxter's words, and say,
-'There, but for the grace of God, goes Sherlock Holmes.'"
-
-James McCarthy was acquitted at the Assizes on the strength of a
-number of objections which had been drawn out by Holmes and
-submitted to the defending counsel. Old Turner lived for seven
-months after our interview, but he is now dead; and there is
-every prospect that the son and daughter may come to live happily
-together in ignorance of the black cloud which rests upon their
-past.
-
-
-
-ADVENTURE V. THE FIVE ORANGE PIPS
-
-When I glance over my notes and records of the Sherlock Holmes
-cases between the years '82 and '90, I am faced by so many which
-present strange and interesting features that it is no easy
-matter to know which to choose and which to leave. Some, however,
-have already gained publicity through the papers, and others have
-not offered a field for those peculiar qualities which my friend
-possessed in so high a degree, and which it is the object of
-these papers to illustrate. Some, too, have baffled his
-analytical skill, and would be, as narratives, beginnings without
-an ending, while others have been but partially cleared up, and
-have their explanations founded rather upon conjecture and
-surmise than on that absolute logical proof which was so dear to
-him. There is, however, one of these last which was so remarkable
-in its details and so startling in its results that I am tempted
-to give some account of it in spite of the fact that there are
-points in connection with it which never have been, and probably
-never will be, entirely cleared up.
-
-The year '87 furnished us with a long series of cases of greater
-or less interest, of which I retain the records. Among my
-headings under this one twelve months I find an account of the
-adventure of the Paradol Chamber, of the Amateur Mendicant
-Society, who held a luxurious club in the lower vault of a
-furniture warehouse, of the facts connected with the loss of the
-British barque "Sophy Anderson", of the singular adventures of the
-Grice Patersons in the island of Uffa, and finally of the
-Camberwell poisoning case. In the latter, as may be remembered,
-Sherlock Holmes was able, by winding up the dead man's watch, to
-prove that it had been wound up two hours before, and that
-therefore the deceased had gone to bed within that time--a
-deduction which was of the greatest importance in clearing up the
-case. All these I may sketch out at some future date, but none of
-them present such singular features as the strange train of
-circumstances which I have now taken up my pen to describe.
-
-It was in the latter days of September, and the equinoctial gales
-had set in with exceptional violence. All day the wind had
-screamed and the rain had beaten against the windows, so that
-even here in the heart of great, hand-made London we were forced
-to raise our minds for the instant from the routine of life and
-to recognise the presence of those great elemental forces which
-shriek at mankind through the bars of his civilisation, like
-untamed beasts in a cage. As evening drew in, the storm grew
-higher and louder, and the wind cried and sobbed like a child in
-the chimney. Sherlock Holmes sat moodily at one side of the
-fireplace cross-indexing his records of crime, while I at the
-other was deep in one of Clark Russell's fine sea-stories until
-the howl of the gale from without seemed to blend with the text,
-and the splash of the rain to lengthen out into the long swash of
-the sea waves. My wife was on a visit to her mother's, and for a
-few days I was a dweller once more in my old quarters at Baker
-Street.
-
-"Why," said I, glancing up at my companion, "that was surely the
-bell. Who could come to-night? Some friend of yours, perhaps?"
-
-"Except yourself I have none," he answered. "I do not encourage
-visitors."
-
-"A client, then?"
-
-"If so, it is a serious case. Nothing less would bring a man out
-on such a day and at such an hour. But I take it that it is more
-likely to be some crony of the landlady's."
-
-Sherlock Holmes was wrong in his conjecture, however, for there
-came a step in the passage and a tapping at the door. He
-stretched out his long arm to turn the lamp away from himself and
-towards the vacant chair upon which a newcomer must sit.
-
-"Come in!" said he.
-
-The man who entered was young, some two-and-twenty at the
-outside, well-groomed and trimly clad, with something of
-refinement and delicacy in his bearing. The streaming umbrella
-which he held in his hand, and his long shining waterproof told
-of the fierce weather through which he had come. He looked about
-him anxiously in the glare of the lamp, and I could see that his
-face was pale and his eyes heavy, like those of a man who is
-weighed down with some great anxiety.
-
-"I owe you an apology," he said, raising his golden pince-nez to
-his eyes. "I trust that I am not intruding. I fear that I have
-brought some traces of the storm and rain into your snug
-chamber."
-
-"Give me your coat and umbrella," said Holmes. "They may rest
-here on the hook and will be dry presently. You have come up from
-the south-west, I see."
-
-"Yes, from Horsham."
-
-"That clay and chalk mixture which I see upon your toe caps is
-quite distinctive."
-
-"I have come for advice."
-
-"That is easily got."
-
-"And help."
-
-"That is not always so easy."
-
-"I have heard of you, Mr. Holmes. I heard from Major Prendergast
-how you saved him in the Tankerville Club scandal."
-
-"Ah, of course. He was wrongfully accused of cheating at cards."
-
-"He said that you could solve anything."
-
-"He said too much."
-
-"That you are never beaten."
-
-"I have been beaten four times--three times by men, and once by a
-woman."
-
-"But what is that compared with the number of your successes?"
-
-"It is true that I have been generally successful."
-
-"Then you may be so with me."
-
-"I beg that you will draw your chair up to the fire and favour me
-with some details as to your case."
-
-"It is no ordinary one."
-
-"None of those which come to me are. I am the last court of
-appeal."
-
-"And yet I question, sir, whether, in all your experience, you
-have ever listened to a more mysterious and inexplicable chain of
-events than those which have happened in my own family."
-
-"You fill me with interest," said Holmes. "Pray give us the
-essential facts from the commencement, and I can afterwards
-question you as to those details which seem to me to be most
-important."
-
-The young man pulled his chair up and pushed his wet feet out
-towards the blaze.
-
-"My name," said he, "is John Openshaw, but my own affairs have,
-as far as I can understand, little to do with this awful
-business. It is a hereditary matter; so in order to give you an
-idea of the facts, I must go back to the commencement of the
-affair.
-
-"You must know that my grandfather had two sons--my uncle Elias
-and my father Joseph. My father had a small factory at Coventry,
-which he enlarged at the time of the invention of bicycling. He
-was a patentee of the Openshaw unbreakable tire, and his business
-met with such success that he was able to sell it and to retire
-upon a handsome competence.
-
-"My uncle Elias emigrated to America when he was a young man and
-became a planter in Florida, where he was reported to have done
-very well. At the time of the war he fought in Jackson's army,
-and afterwards under Hood, where he rose to be a colonel. When
-Lee laid down his arms my uncle returned to his plantation, where
-he remained for three or four years. About 1869 or 1870 he came
-back to Europe and took a small estate in Sussex, near Horsham.
-He had made a very considerable fortune in the States, and his
-reason for leaving them was his aversion to the negroes, and his
-dislike of the Republican policy in extending the franchise to
-them. He was a singular man, fierce and quick-tempered, very
-foul-mouthed when he was angry, and of a most retiring
-disposition. During all the years that he lived at Horsham, I
-doubt if ever he set foot in the town. He had a garden and two or
-three fields round his house, and there he would take his
-exercise, though very often for weeks on end he would never leave
-his room. He drank a great deal of brandy and smoked very
-heavily, but he would see no society and did not want any
-friends, not even his own brother.
-
-"He didn't mind me; in fact, he took a fancy to me, for at the
-time when he saw me first I was a youngster of twelve or so. This
-would be in the year 1878, after he had been eight or nine years
-in England. He begged my father to let me live with him and he
-was very kind to me in his way. When he was sober he used to be
-fond of playing backgammon and draughts with me, and he would
-make me his representative both with the servants and with the
-tradespeople, so that by the time that I was sixteen I was quite
-master of the house. I kept all the keys and could go where I
-liked and do what I liked, so long as I did not disturb him in
-his privacy. There was one singular exception, however, for he
-had a single room, a lumber-room up among the attics, which was
-invariably locked, and which he would never permit either me or
-anyone else to enter. With a boy's curiosity I have peeped
-through the keyhole, but I was never able to see more than such a
-collection of old trunks and bundles as would be expected in such
-a room.
-
-"One day--it was in March, 1883--a letter with a foreign stamp
-lay upon the table in front of the colonel's plate. It was not a
-common thing for him to receive letters, for his bills were all
-paid in ready money, and he had no friends of any sort. 'From
-India!' said he as he took it up, 'Pondicherry postmark! What can
-this be?' Opening it hurriedly, out there jumped five little
-dried orange pips, which pattered down upon his plate. I began to
-laugh at this, but the laugh was struck from my lips at the sight
-of his face. His lip had fallen, his eyes were protruding, his
-skin the colour of putty, and he glared at the envelope which he
-still held in his trembling hand, 'K. K. K.!' he shrieked, and
-then, 'My God, my God, my sins have overtaken me!'
-
-"'What is it, uncle?' I cried.
-
-"'Death,' said he, and rising from the table he retired to his
-room, leaving me palpitating with horror. I took up the envelope
-and saw scrawled in red ink upon the inner flap, just above the
-gum, the letter K three times repeated. There was nothing else
-save the five dried pips. What could be the reason of his
-overpowering terror? I left the breakfast-table, and as I
-ascended the stair I met him coming down with an old rusty key,
-which must have belonged to the attic, in one hand, and a small
-brass box, like a cashbox, in the other.
-
-"'They may do what they like, but I'll checkmate them still,'
-said he with an oath. 'Tell Mary that I shall want a fire in my
-room to-day, and send down to Fordham, the Horsham lawyer.'
-
-"I did as he ordered, and when the lawyer arrived I was asked to
-step up to the room. The fire was burning brightly, and in the
-grate there was a mass of black, fluffy ashes, as of burned
-paper, while the brass box stood open and empty beside it. As I
-glanced at the box I noticed, with a start, that upon the lid was
-printed the treble K which I had read in the morning upon the
-envelope.
-
-"'I wish you, John,' said my uncle, 'to witness my will. I leave
-my estate, with all its advantages and all its disadvantages, to
-my brother, your father, whence it will, no doubt, descend to
-you. If you can enjoy it in peace, well and good! If you find you
-cannot, take my advice, my boy, and leave it to your deadliest
-enemy. I am sorry to give you such a two-edged thing, but I can't
-say what turn things are going to take. Kindly sign the paper
-where Mr. Fordham shows you.'
-
-"I signed the paper as directed, and the lawyer took it away with
-him. The singular incident made, as you may think, the deepest
-impression upon me, and I pondered over it and turned it every
-way in my mind without being able to make anything of it. Yet I
-could not shake off the vague feeling of dread which it left
-behind, though the sensation grew less keen as the weeks passed
-and nothing happened to disturb the usual routine of our lives. I
-could see a change in my uncle, however. He drank more than ever,
-and he was less inclined for any sort of society. Most of his
-time he would spend in his room, with the door locked upon the
-inside, but sometimes he would emerge in a sort of drunken frenzy
-and would burst out of the house and tear about the garden with a
-revolver in his hand, screaming out that he was afraid of no man,
-and that he was not to be cooped up, like a sheep in a pen, by
-man or devil. When these hot fits were over, however, he would
-rush tumultuously in at the door and lock and bar it behind him,
-like a man who can brazen it out no longer against the terror
-which lies at the roots of his soul. At such times I have seen
-his face, even on a cold day, glisten with moisture, as though it
-were new raised from a basin.
-
-"Well, to come to an end of the matter, Mr. Holmes, and not to
-abuse your patience, there came a night when he made one of those
-drunken sallies from which he never came back. We found him, when
-we went to search for him, face downward in a little
-green-scummed pool, which lay at the foot of the garden. There
-was no sign of any violence, and the water was but two feet deep,
-so that the jury, having regard to his known eccentricity,
-brought in a verdict of 'suicide.' But I, who knew how he winced
-from the very thought of death, had much ado to persuade myself
-that he had gone out of his way to meet it. The matter passed,
-however, and my father entered into possession of the estate, and
-of some 14,000 pounds, which lay to his credit at the bank."
-
-"One moment," Holmes interposed, "your statement is, I foresee,
-one of the most remarkable to which I have ever listened. Let me
-have the date of the reception by your uncle of the letter, and
-the date of his supposed suicide."
-
-"The letter arrived on March 10, 1883. His death was seven weeks
-later, upon the night of May 2nd."
-
-"Thank you. Pray proceed."
-
-"When my father took over the Horsham property, he, at my
-request, made a careful examination of the attic, which had been
-always locked up. We found the brass box there, although its
-contents had been destroyed. On the inside of the cover was a
-paper label, with the initials of K. K. K. repeated upon it, and
-'Letters, memoranda, receipts, and a register' written beneath.
-These, we presume, indicated the nature of the papers which had
-been destroyed by Colonel Openshaw. For the rest, there was
-nothing of much importance in the attic save a great many
-scattered papers and note-books bearing upon my uncle's life in
-America. Some of them were of the war time and showed that he had
-done his duty well and had borne the repute of a brave soldier.
-Others were of a date during the reconstruction of the Southern
-states, and were mostly concerned with politics, for he had
-evidently taken a strong part in opposing the carpet-bag
-politicians who had been sent down from the North.
-
-"Well, it was the beginning of '84 when my father came to live at
-Horsham, and all went as well as possible with us until the
-January of '85. On the fourth day after the new year I heard my
-father give a sharp cry of surprise as we sat together at the
-breakfast-table. There he was, sitting with a newly opened
-envelope in one hand and five dried orange pips in the
-outstretched palm of the other one. He had always laughed at what
-he called my cock-and-bull story about the colonel, but he looked
-very scared and puzzled now that the same thing had come upon
-himself.
-
-"'Why, what on earth does this mean, John?' he stammered.
-
-"My heart had turned to lead. 'It is K. K. K.,' said I.
-
-"He looked inside the envelope. 'So it is,' he cried. 'Here are
-the very letters. But what is this written above them?'
-
-"'Put the papers on the sundial,' I read, peeping over his
-shoulder.
-
-"'What papers? What sundial?' he asked.
-
-"'The sundial in the garden. There is no other,' said I; 'but the
-papers must be those that are destroyed.'
-
-"'Pooh!' said he, gripping hard at his courage. 'We are in a
-civilised land here, and we can't have tomfoolery of this kind.
-Where does the thing come from?'
-
-"'From Dundee,' I answered, glancing at the postmark.
-
-"'Some preposterous practical joke,' said he. 'What have I to do
-with sundials and papers? I shall take no notice of such
-nonsense.'
-
-"'I should certainly speak to the police,' I said.
-
-"'And be laughed at for my pains. Nothing of the sort.'
-
-"'Then let me do so?'
-
-"'No, I forbid you. I won't have a fuss made about such
-nonsense.'
-
-"It was in vain to argue with him, for he was a very obstinate
-man. I went about, however, with a heart which was full of
-forebodings.
-
-"On the third day after the coming of the letter my father went
-from home to visit an old friend of his, Major Freebody, who is
-in command of one of the forts upon Portsdown Hill. I was glad
-that he should go, for it seemed to me that he was farther from
-danger when he was away from home. In that, however, I was in
-error. Upon the second day of his absence I received a telegram
-from the major, imploring me to come at once. My father had
-fallen over one of the deep chalk-pits which abound in the
-neighbourhood, and was lying senseless, with a shattered skull. I
-hurried to him, but he passed away without having ever recovered
-his consciousness. He had, as it appears, been returning from
-Fareham in the twilight, and as the country was unknown to him,
-and the chalk-pit unfenced, the jury had no hesitation in
-bringing in a verdict of 'death from accidental causes.'
-Carefully as I examined every fact connected with his death, I
-was unable to find anything which could suggest the idea of
-murder. There were no signs of violence, no footmarks, no
-robbery, no record of strangers having been seen upon the roads.
-And yet I need not tell you that my mind was far from at ease,
-and that I was well-nigh certain that some foul plot had been
-woven round him.
-
-"In this sinister way I came into my inheritance. You will ask me
-why I did not dispose of it? I answer, because I was well
-convinced that our troubles were in some way dependent upon an
-incident in my uncle's life, and that the danger would be as
-pressing in one house as in another.
-
-"It was in January, '85, that my poor father met his end, and two
-years and eight months have elapsed since then. During that time
-I have lived happily at Horsham, and I had begun to hope that
-this curse had passed away from the family, and that it had ended
-with the last generation. I had begun to take comfort too soon,
-however; yesterday morning the blow fell in the very shape in
-which it had come upon my father."
-
-The young man took from his waistcoat a crumpled envelope, and
-turning to the table he shook out upon it five little dried
-orange pips.
-
-"This is the envelope," he continued. "The postmark is
-London--eastern division. Within are the very words which were
-upon my father's last message: 'K. K. K.'; and then 'Put the
-papers on the sundial.'"
-
-"What have you done?" asked Holmes.
-
-"Nothing."
-
-"Nothing?"
-
-"To tell the truth"--he sank his face into his thin, white
-hands--"I have felt helpless. I have felt like one of those poor
-rabbits when the snake is writhing towards it. I seem to be in
-the grasp of some resistless, inexorable evil, which no foresight
-and no precautions can guard against."
-
-"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
-lost. Nothing but energy can save you. This is no time for
-despair."
-
-"I have seen the police."
-
-"Ah!"
-
-"But they listened to my story with a smile. I am convinced that
-the inspector has formed the opinion that the letters are all
-practical jokes, and that the deaths of my relations were really
-accidents, as the jury stated, and were not to be connected with
-the warnings."
-
-Holmes shook his clenched hands in the air. "Incredible
-imbecility!" he cried.
-
-"They have, however, allowed me a policeman, who may remain in
-the house with me."
-
-"Has he come with you to-night?"
-
-"No. His orders were to stay in the house."
-
-Again Holmes raved in the air.
-
-"Why did you come to me," he cried, "and, above all, why did you
-not come at once?"
-
-"I did not know. It was only to-day that I spoke to Major
-Prendergast about my troubles and was advised by him to come to
-you."
-
-"It is really two days since you had the letter. We should have
-acted before this. You have no further evidence, I suppose, than
-that which you have placed before us--no suggestive detail which
-might help us?"
-
-"There is one thing," said John Openshaw. He rummaged in his coat
-pocket, and, drawing out a piece of discoloured, blue-tinted
-paper, he laid it out upon the table. "I have some remembrance,"
-said he, "that on the day when my uncle burned the papers I
-observed that the small, unburned margins which lay amid the
-ashes were of this particular colour. I found this single sheet
-upon the floor of his room, and I am inclined to think that it
-may be one of the papers which has, perhaps, fluttered out from
-among the others, and in that way has escaped destruction. Beyond
-the mention of pips, I do not see that it helps us much. I think
-myself that it is a page from some private diary. The writing is
-undoubtedly my uncle's."
-
-Holmes moved the lamp, and we both bent over the sheet of paper,
-which showed by its ragged edge that it had indeed been torn from
-a book. It was headed, "March, 1869," and beneath were the
-following enigmatical notices:
-
-"4th. Hudson came. Same old platform.
-
-"7th. Set the pips on McCauley, Paramore, and
-      John Swain, of St. Augustine.
-
-"9th. McCauley cleared.
-
-"10th. John Swain cleared.
-
-"12th. Visited Paramore. All well."
-
-"Thank you!" said Holmes, folding up the paper and returning it
-to our visitor. "And now you must on no account lose another
-instant. We cannot spare time even to discuss what you have told
-me. You must get home instantly and act."
-
-"What shall I do?"
-
-"There is but one thing to do. It must be done at once. You must
-put this piece of paper which you have shown us into the brass
-box which you have described. You must also put in a note to say
-that all the other papers were burned by your uncle, and that
-this is the only one which remains. You must assert that in such
-words as will carry conviction with them. Having done this, you
-must at once put the box out upon the sundial, as directed. Do
-you understand?"
-
-"Entirely."
-
-"Do not think of revenge, or anything of the sort, at present. I
-think that we may gain that by means of the law; but we have our
-web to weave, while theirs is already woven. The first
-consideration is to remove the pressing danger which threatens
-you. The second is to clear up the mystery and to punish the
-guilty parties."
-
-"I thank you," said the young man, rising and pulling on his
-overcoat. "You have given me fresh life and hope. I shall
-certainly do as you advise."
-
-"Do not lose an instant. And, above all, take care of yourself in
-the meanwhile, for I do not think that there can be a doubt that
-you are threatened by a very real and imminent danger. How do you
-go back?"
-
-"By train from Waterloo."
-
-"It is not yet nine. The streets will be crowded, so I trust that
-you may be in safety. And yet you cannot guard yourself too
-closely."
-
-"I am armed."
-
-"That is well. To-morrow I shall set to work upon your case."
-
-"I shall see you at Horsham, then?"
-
-"No, your secret lies in London. It is there that I shall seek
-it."
-
-"Then I shall call upon you in a day, or in two days, with news
-as to the box and the papers. I shall take your advice in every
-particular." He shook hands with us and took his leave. Outside
-the wind still screamed and the rain splashed and pattered
-against the windows. This strange, wild story seemed to have come
-to us from amid the mad elements--blown in upon us like a sheet
-of sea-weed in a gale--and now to have been reabsorbed by them
-once more.
-
-Sherlock Holmes sat for some time in silence, with his head sunk
-forward and his eyes bent upon the red glow of the fire. Then he
-lit his pipe, and leaning back in his chair he watched the blue
-smoke-rings as they chased each other up to the ceiling.
-
-"I think, Watson," he remarked at last, "that of all our cases we
-have had none more fantastic than this."
-
-"Save, perhaps, the Sign of Four."
-
-"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
-to me to be walking amid even greater perils than did the
-Sholtos."
-
-"But have you," I asked, "formed any definite conception as to
-what these perils are?"
-
-"There can be no question as to their nature," he answered.
-
-"Then what are they? Who is this K. K. K., and why does he pursue
-this unhappy family?"
-
-Sherlock Holmes closed his eyes and placed his elbows upon the
-arms of his chair, with his finger-tips together. "The ideal
-reasoner," he remarked, "would, when he had once been shown a
-single fact in all its bearings, deduce from it not only all the
-chain of events which led up to it but also all the results which
-would follow from it. As Cuvier could correctly describe a whole
-animal by the contemplation of a single bone, so the observer who
-has thoroughly understood one link in a series of incidents
-should be able to accurately state all the other ones, both
-before and after. We have not yet grasped the results which the
-reason alone can attain to. Problems may be solved in the study
-which have baffled all those who have sought a solution by the
-aid of their senses. To carry the art, however, to its highest
-pitch, it is necessary that the reasoner should be able to
-utilise all the facts which have come to his knowledge; and this
-in itself implies, as you will readily see, a possession of all
-knowledge, which, even in these days of free education and
-encyclopaedias, is a somewhat rare accomplishment. It is not so
-impossible, however, that a man should possess all knowledge
-which is likely to be useful to him in his work, and this I have
-endeavoured in my case to do. If I remember rightly, you on one
-occasion, in the early days of our friendship, defined my limits
-in a very precise fashion."
-
-"Yes," I answered, laughing. "It was a singular document.
-Philosophy, astronomy, and politics were marked at zero, I
-remember. Botany variable, geology profound as regards the
-mud-stains from any region within fifty miles of town, chemistry
-eccentric, anatomy unsystematic, sensational literature and crime
-records unique, violin-player, boxer, swordsman, lawyer, and
-self-poisoner by cocaine and tobacco. Those, I think, were the
-main points of my analysis."
-
-Holmes grinned at the last item. "Well," he said, "I say now, as
-I said then, that a man should keep his little brain-attic
-stocked with all the furniture that he is likely to use, and the
-rest he can put away in the lumber-room of his library, where he
-can get it if he wants it. Now, for such a case as the one which
-has been submitted to us to-night, we need certainly to muster
-all our resources. Kindly hand me down the letter K of the
-'American Encyclopaedia' which stands upon the shelf beside you.
-Thank you. Now let us consider the situation and see what may be
-deduced from it. In the first place, we may start with a strong
-presumption that Colonel Openshaw had some very strong reason for
-leaving America. Men at his time of life do not change all their
-habits and exchange willingly the charming climate of Florida for
-the lonely life of an English provincial town. His extreme love
-of solitude in England suggests the idea that he was in fear of
-someone or something, so we may assume as a working hypothesis
-that it was fear of someone or something which drove him from
-America. As to what it was he feared, we can only deduce that by
-considering the formidable letters which were received by himself
-and his successors. Did you remark the postmarks of those
-letters?"
-
-"The first was from Pondicherry, the second from Dundee, and the
-third from London."
-
-"From East London. What do you deduce from that?"
-
-"They are all seaports. That the writer was on board of a ship."
-
-"Excellent. We have already a clue. There can be no doubt that
-the probability--the strong probability--is that the writer was
-on board of a ship. And now let us consider another point. In the
-case of Pondicherry, seven weeks elapsed between the threat and
-its fulfilment, in Dundee it was only some three or four days.
-Does that suggest anything?"
-
-"A greater distance to travel."
-
-"But the letter had also a greater distance to come."
-
-"Then I do not see the point."
-
-"There is at least a presumption that the vessel in which the man
-or men are is a sailing-ship. It looks as if they always send
-their singular warning or token before them when starting upon
-their mission. You see how quickly the deed followed the sign
-when it came from Dundee. If they had come from Pondicherry in a
-steamer they would have arrived almost as soon as their letter.
-But, as a matter of fact, seven weeks elapsed. I think that those
-seven weeks represented the difference between the mail-boat which
-brought the letter and the sailing vessel which brought the
-writer."
-
-"It is possible."
-
-"More than that. It is probable. And now you see the deadly
-urgency of this new case, and why I urged young Openshaw to
-caution. The blow has always fallen at the end of the time which
-it would take the senders to travel the distance. But this one
-comes from London, and therefore we cannot count upon delay."
-
-"Good God!" I cried. "What can it mean, this relentless
-persecution?"
-
-"The papers which Openshaw carried are obviously of vital
-importance to the person or persons in the sailing-ship. I think
-that it is quite clear that there must be more than one of them.
-A single man could not have carried out two deaths in such a way
-as to deceive a coroner's jury. There must have been several in
-it, and they must have been men of resource and determination.
-Their papers they mean to have, be the holder of them who it may.
-In this way you see K. K. K. ceases to be the initials of an
-individual and becomes the badge of a society."
-
-"But of what society?"
-
-"Have you never--" said Sherlock Holmes, bending forward and
-sinking his voice--"have you never heard of the Ku Klux Klan?"
-
-"I never have."
-
-Holmes turned over the leaves of the book upon his knee. "Here it
-is," said he presently:
-
-"'Ku Klux Klan. A name derived from the fanciful resemblance to
-the sound produced by cocking a rifle. This terrible secret
-society was formed by some ex-Confederate soldiers in the
-Southern states after the Civil War, and it rapidly formed local
-branches in different parts of the country, notably in Tennessee,
-Louisiana, the Carolinas, Georgia, and Florida. Its power was
-used for political purposes, principally for the terrorising of
-the negro voters and the murdering and driving from the country
-of those who were opposed to its views. Its outrages were usually
-preceded by a warning sent to the marked man in some fantastic
-but generally recognised shape--a sprig of oak-leaves in some
-parts, melon seeds or orange pips in others. On receiving this
-the victim might either openly abjure his former ways, or might
-fly from the country. If he braved the matter out, death would
-unfailingly come upon him, and usually in some strange and
-unforeseen manner. So perfect was the organisation of the
-society, and so systematic its methods, that there is hardly a
-case upon record where any man succeeded in braving it with
-impunity, or in which any of its outrages were traced home to the
-perpetrators. For some years the organisation flourished in spite
-of the efforts of the United States government and of the better
-classes of the community in the South. Eventually, in the year
-1869, the movement rather suddenly collapsed, although there have
-been sporadic outbreaks of the same sort since that date.'
-
-"You will observe," said Holmes, laying down the volume, "that
-the sudden breaking up of the society was coincident with the
-disappearance of Openshaw from America with their papers. It may
-well have been cause and effect. It is no wonder that he and his
-family have some of the more implacable spirits upon their track.
-You can understand that this register and diary may implicate
-some of the first men in the South, and that there may be many
-who will not sleep easy at night until it is recovered."
-
-"Then the page we have seen--"
-
-"Is such as we might expect. It ran, if I remember right, 'sent
-the pips to A, B, and C'--that is, sent the society's warning to
-them. Then there are successive entries that A and B cleared, or
-left the country, and finally that C was visited, with, I fear, a
-sinister result for C. Well, I think, Doctor, that we may let
-some light into this dark place, and I believe that the only
-chance young Openshaw has in the meantime is to do what I have
-told him. There is nothing more to be said or to be done
-to-night, so hand me over my violin and let us try to forget for
-half an hour the miserable weather and the still more miserable
-ways of our fellow-men."
-
-
-It had cleared in the morning, and the sun was shining with a
-subdued brightness through the dim veil which hangs over the
-great city. Sherlock Holmes was already at breakfast when I came
-down.
-
-"You will excuse me for not waiting for you," said he; "I have, I
-foresee, a very busy day before me in looking into this case of
-young Openshaw's."
-
-"What steps will you take?" I asked.
-
-"It will very much depend upon the results of my first inquiries.
-I may have to go down to Horsham, after all."
-
-"You will not go there first?"
-
-"No, I shall commence with the City. Just ring the bell and the
-maid will bring up your coffee."
-
-As I waited, I lifted the unopened newspaper from the table and
-glanced my eye over it. It rested upon a heading which sent a
-chill to my heart.
-
-"Holmes," I cried, "you are too late."
-
-"Ah!" said he, laying down his cup, "I feared as much. How was it
-done?" He spoke calmly, but I could see that he was deeply moved.
-
-"My eye caught the name of Openshaw, and the heading 'Tragedy
-Near Waterloo Bridge.' Here is the account:
-
-"Between nine and ten last night Police-Constable Cook, of the H
-Division, on duty near Waterloo Bridge, heard a cry for help and
-a splash in the water. The night, however, was extremely dark and
-stormy, so that, in spite of the help of several passers-by, it
-was quite impossible to effect a rescue. The alarm, however, was
-given, and, by the aid of the water-police, the body was
-eventually recovered. It proved to be that of a young gentleman
-whose name, as it appears from an envelope which was found in his
-pocket, was John Openshaw, and whose residence is near Horsham.
-It is conjectured that he may have been hurrying down to catch
-the last train from Waterloo Station, and that in his haste and
-the extreme darkness he missed his path and walked over the edge
-of one of the small landing-places for river steamboats. The body
-exhibited no traces of violence, and there can be no doubt that
-the deceased had been the victim of an unfortunate accident,
-which should have the effect of calling the attention of the
-authorities to the condition of the riverside landing-stages."
-
-We sat in silence for some minutes, Holmes more depressed and
-shaken than I had ever seen him.
-
-"That hurts my pride, Watson," he said at last. "It is a petty
-feeling, no doubt, but it hurts my pride. It becomes a personal
-matter with me now, and, if God sends me health, I shall set my
-hand upon this gang. That he should come to me for help, and that
-I should send him away to his death--!" He sprang from his chair
-and paced about the room in uncontrollable agitation, with a
-flush upon his sallow cheeks and a nervous clasping and
-unclasping of his long thin hands.
-
-"They must be cunning devils," he exclaimed at last. "How could
-they have decoyed him down there? The Embankment is not on the
-direct line to the station. The bridge, no doubt, was too
-crowded, even on such a night, for their purpose. Well, Watson,
-we shall see who will win in the long run. I am going out now!"
-
-"To the police?"
-
-"No; I shall be my own police. When I have spun the web they may
-take the flies, but not before."
-
-All day I was engaged in my professional work, and it was late in
-the evening before I returned to Baker Street. Sherlock Holmes
-had not come back yet. It was nearly ten o'clock before he
-entered, looking pale and worn. He walked up to the sideboard,
-and tearing a piece from the loaf he devoured it voraciously,
-washing it down with a long draught of water.
-
-"You are hungry," I remarked.
-
-"Starving. It had escaped my memory. I have had nothing since
-breakfast."
-
-"Nothing?"
-
-"Not a bite. I had no time to think of it."
-
-"And how have you succeeded?"
-
-"Well."
-
-"You have a clue?"
-
-"I have them in the hollow of my hand. Young Openshaw shall not
-long remain unavenged. Why, Watson, let us put their own devilish
-trade-mark upon them. It is well thought of!"
-
-"What do you mean?"
-
-He took an orange from the cupboard, and tearing it to pieces he
-squeezed out the pips upon the table. Of these he took five and
-thrust them into an envelope. On the inside of the flap he wrote
-"S. H. for J. O." Then he sealed it and addressed it to "Captain
-James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
-
-"That will await him when he enters port," said he, chuckling.
-"It may give him a sleepless night. He will find it as sure a
-precursor of his fate as Openshaw did before him."
-
-"And who is this Captain Calhoun?"
-
-"The leader of the gang. I shall have the others, but he first."
-
-"How did you trace it, then?"
-
-He took a large sheet of paper from his pocket, all covered with
-dates and names.
-
-"I have spent the whole day," said he, "over Lloyd's registers
-and files of the old papers, following the future career of every
-vessel which touched at Pondicherry in January and February in
-'83. There were thirty-six ships of fair tonnage which were
-reported there during those months. Of these, one, the 'Lone Star,'
-instantly attracted my attention, since, although it was reported
-as having cleared from London, the name is that which is given to
-one of the states of the Union."
-
-"Texas, I think."
-
-"I was not and am not sure which; but I knew that the ship must
-have an American origin."
-
-"What then?"
-
-"I searched the Dundee records, and when I found that the barque
-'Lone Star' was there in January, '85, my suspicion became a
-certainty. I then inquired as to the vessels which lay at present
-in the port of London."
-
-"Yes?"
-
-"The 'Lone Star' had arrived here last week. I went down to the
-Albert Dock and found that she had been taken down the river by
-the early tide this morning, homeward bound to Savannah. I wired
-to Gravesend and learned that she had passed some time ago, and
-as the wind is easterly I have no doubt that she is now past the
-Goodwins and not very far from the Isle of Wight."
-
-"What will you do, then?"
-
-"Oh, I have my hand upon him. He and the two mates, are as I
-learn, the only native-born Americans in the ship. The others are
-Finns and Germans. I know, also, that they were all three away
-from the ship last night. I had it from the stevedore who has
-been loading their cargo. By the time that their sailing-ship
-reaches Savannah the mail-boat will have carried this letter, and
-the cable will have informed the police of Savannah that these
-three gentlemen are badly wanted here upon a charge of murder."
-
-There is ever a flaw, however, in the best laid of human plans,
-and the murderers of John Openshaw were never to receive the
-orange pips which would show them that another, as cunning and as
-resolute as themselves, was upon their track. Very long and very
-severe were the equinoctial gales that year. We waited long for
-news of the "Lone Star" of Savannah, but none ever reached us. We
-did at last hear that somewhere far out in the Atlantic a
-shattered stern-post of a boat was seen swinging in the trough
-of a wave, with the letters "L. S." carved upon it, and that is
-all which we shall ever know of the fate of the "Lone Star."
-
-
-
-ADVENTURE VI. THE MAN WITH THE TWISTED LIP
-
-Isa Whitney, brother of the late Elias Whitney, D.D., Principal
-of the Theological College of St. George's, was much addicted to
-opium. The habit grew upon him, as I understand, from some
-foolish freak when he was at college; for having read De
-Quincey's description of his dreams and sensations, he had
-drenched his tobacco with laudanum in an attempt to produce the
-same effects. He found, as so many more have done, that the
-practice is easier to attain than to get rid of, and for many
-years he continued to be a slave to the drug, an object of
-mingled horror and pity to his friends and relatives. I can see
-him now, with yellow, pasty face, drooping lids, and pin-point
-pupils, all huddled in a chair, the wreck and ruin of a noble
-man.
-
-One night--it was in June, '89--there came a ring to my bell,
-about the hour when a man gives his first yawn and glances at the
-clock. I sat up in my chair, and my wife laid her needle-work
-down in her lap and made a little face of disappointment.
-
-"A patient!" said she. "You'll have to go out."
-
-I groaned, for I was newly come back from a weary day.
-
-We heard the door open, a few hurried words, and then quick steps
-upon the linoleum. Our own door flew open, and a lady, clad in
-some dark-coloured stuff, with a black veil, entered the room.
-
-"You will excuse my calling so late," she began, and then,
-suddenly losing her self-control, she ran forward, threw her arms
-about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
-such trouble!" she cried; "I do so want a little help."
-
-"Why," said my wife, pulling up her veil, "it is Kate Whitney.
-How you startled me, Kate! I had not an idea who you were when
-you came in."
-
-"I didn't know what to do, so I came straight to you." That was
-always the way. Folk who were in grief came to my wife like birds
-to a light-house.
-
-"It was very sweet of you to come. Now, you must have some wine
-and water, and sit here comfortably and tell us all about it. Or
-should you rather that I sent James off to bed?"
-
-"Oh, no, no! I want the doctor's advice and help, too. It's about
-Isa. He has not been home for two days. I am so frightened about
-him!"
-
-It was not the first time that she had spoken to us of her
-husband's trouble, to me as a doctor, to my wife as an old friend
-and school companion. We soothed and comforted her by such words
-as we could find. Did she know where her husband was? Was it
-possible that we could bring him back to her?
-
-It seems that it was. She had the surest information that of late
-he had, when the fit was on him, made use of an opium den in the
-farthest east of the City. Hitherto his orgies had always been
-confined to one day, and he had come back, twitching and
-shattered, in the evening. But now the spell had been upon him
-eight-and-forty hours, and he lay there, doubtless among the
-dregs of the docks, breathing in the poison or sleeping off the
-effects. There he was to be found, she was sure of it, at the Bar
-of Gold, in Upper Swandam Lane. But what was she to do? How could
-she, a young and timid woman, make her way into such a place and
-pluck her husband out from among the ruffians who surrounded him?
-
-There was the case, and of course there was but one way out of
-it. Might I not escort her to this place? And then, as a second
-thought, why should she come at all? I was Isa Whitney's medical
-adviser, and as such I had influence over him. I could manage it
-better if I were alone. I promised her on my word that I would
-send him home in a cab within two hours if he were indeed at the
-address which she had given me. And so in ten minutes I had left
-my armchair and cheery sitting-room behind me, and was speeding
-eastward in a hansom on a strange errand, as it seemed to me at
-the time, though the future only could show how strange it was to
-be.
-
-But there was no great difficulty in the first stage of my
-adventure. Upper Swandam Lane is a vile alley lurking behind the
-high wharves which line the north side of the river to the east
-of London Bridge. Between a slop-shop and a gin-shop, approached
-by a steep flight of steps leading down to a black gap like the
-mouth of a cave, I found the den of which I was in search.
-Ordering my cab to wait, I passed down the steps, worn hollow in
-the centre by the ceaseless tread of drunken feet; and by the
-light of a flickering oil-lamp above the door I found the latch
-and made my way into a long, low room, thick and heavy with the
-brown opium smoke, and terraced with wooden berths, like the
-forecastle of an emigrant ship.
-
-Through the gloom one could dimly catch a glimpse of bodies lying
-in strange fantastic poses, bowed shoulders, bent knees, heads
-thrown back, and chins pointing upward, with here and there a
-dark, lack-lustre eye turned upon the newcomer. Out of the black
-shadows there glimmered little red circles of light, now bright,
-now faint, as the burning poison waxed or waned in the bowls of
-the metal pipes. The most lay silent, but some muttered to
-themselves, and others talked together in a strange, low,
-monotonous voice, their conversation coming in gushes, and then
-suddenly tailing off into silence, each mumbling out his own
-thoughts and paying little heed to the words of his neighbour. At
-the farther end was a small brazier of burning charcoal, beside
-which on a three-legged wooden stool there sat a tall, thin old
-man, with his jaw resting upon his two fists, and his elbows upon
-his knees, staring into the fire.
-
-As I entered, a sallow Malay attendant had hurried up with a pipe
-for me and a supply of the drug, beckoning me to an empty berth.
-
-"Thank you. I have not come to stay," said I. "There is a friend
-of mine here, Mr. Isa Whitney, and I wish to speak with him."
-
-There was a movement and an exclamation from my right, and
-peering through the gloom, I saw Whitney, pale, haggard, and
-unkempt, staring out at me.
-
-"My God! It's Watson," said he. He was in a pitiable state of
-reaction, with every nerve in a twitter. "I say, Watson, what
-o'clock is it?"
-
-"Nearly eleven."
-
-"Of what day?"
-
-"Of Friday, June 19th."
-
-"Good heavens! I thought it was Wednesday. It is Wednesday. What
-d'you want to frighten a chap for?" He sank his face onto his
-arms and began to sob in a high treble key.
-
-"I tell you that it is Friday, man. Your wife has been waiting
-this two days for you. You should be ashamed of yourself!"
-
-"So I am. But you've got mixed, Watson, for I have only been here
-a few hours, three pipes, four pipes--I forget how many. But I'll
-go home with you. I wouldn't frighten Kate--poor little Kate.
-Give me your hand! Have you a cab?"
-
-"Yes, I have one waiting."
-
-"Then I shall go in it. But I must owe something. Find what I
-owe, Watson. I am all off colour. I can do nothing for myself."
-
-I walked down the narrow passage between the double row of
-sleepers, holding my breath to keep out the vile, stupefying
-fumes of the drug, and looking about for the manager. As I passed
-the tall man who sat by the brazier I felt a sudden pluck at my
-skirt, and a low voice whispered, "Walk past me, and then look
-back at me." The words fell quite distinctly upon my ear. I
-glanced down. They could only have come from the old man at my
-side, and yet he sat now as absorbed as ever, very thin, very
-wrinkled, bent with age, an opium pipe dangling down from between
-his knees, as though it had dropped in sheer lassitude from his
-fingers. I took two steps forward and looked back. It took all my
-self-control to prevent me from breaking out into a cry of
-astonishment. He had turned his back so that none could see him
-but I. His form had filled out, his wrinkles were gone, the dull
-eyes had regained their fire, and there, sitting by the fire and
-grinning at my surprise, was none other than Sherlock Holmes. He
-made a slight motion to me to approach him, and instantly, as he
-turned his face half round to the company once more, subsided
-into a doddering, loose-lipped senility.
-
-"Holmes!" I whispered, "what on earth are you doing in this den?"
-
-"As low as you can," he answered; "I have excellent ears. If you
-would have the great kindness to get rid of that sottish friend
-of yours I should be exceedingly glad to have a little talk with
-you."
-
-"I have a cab outside."
-
-"Then pray send him home in it. You may safely trust him, for he
-appears to be too limp to get into any mischief. I should
-recommend you also to send a note by the cabman to your wife to
-say that you have thrown in your lot with me. If you will wait
-outside, I shall be with you in five minutes."
-
-It was difficult to refuse any of Sherlock Holmes' requests, for
-they were always so exceedingly definite, and put forward with
-such a quiet air of mastery. I felt, however, that when Whitney
-was once confined in the cab my mission was practically
-accomplished; and for the rest, I could not wish anything better
-than to be associated with my friend in one of those singular
-adventures which were the normal condition of his existence. In a
-few minutes I had written my note, paid Whitney's bill, led him
-out to the cab, and seen him driven through the darkness. In a
-very short time a decrepit figure had emerged from the opium den,
-and I was walking down the street with Sherlock Holmes. For two
-streets he shuffled along with a bent back and an uncertain foot.
-Then, glancing quickly round, he straightened himself out and
-burst into a hearty fit of laughter.
-
-"I suppose, Watson," said he, "that you imagine that I have added
-opium-smoking to cocaine injections, and all the other little
-weaknesses on which you have favoured me with your medical
-views."
-
-"I was certainly surprised to find you there."
-
-"But not more so than I to find you."
-
-"I came to find a friend."
-
-"And I to find an enemy."
-
-"An enemy?"
-
-"Yes; one of my natural enemies, or, shall I say, my natural
-prey. Briefly, Watson, I am in the midst of a very remarkable
-inquiry, and I have hoped to find a clue in the incoherent
-ramblings of these sots, as I have done before now. Had I been
-recognised in that den my life would not have been worth an
-hour's purchase; for I have used it before now for my own
-purposes, and the rascally Lascar who runs it has sworn to have
-vengeance upon me. There is a trap-door at the back of that
-building, near the corner of Paul's Wharf, which could tell some
-strange tales of what has passed through it upon the moonless
-nights."
-
-"What! You do not mean bodies?"
-
-"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
-for every poor devil who has been done to death in that den. It
-is the vilest murder-trap on the whole riverside, and I fear that
-Neville St. Clair has entered it never to leave it more. But our
-trap should be here." He put his two forefingers between his
-teeth and whistled shrilly--a signal which was answered by a
-similar whistle from the distance, followed shortly by the rattle
-of wheels and the clink of horses' hoofs.
-
-"Now, Watson," said Holmes, as a tall dog-cart dashed up through
-the gloom, throwing out two golden tunnels of yellow light from
-its side lanterns. "You'll come with me, won't you?"
-
-"If I can be of use."
-
-"Oh, a trusty comrade is always of use; and a chronicler still
-more so. My room at The Cedars is a double-bedded one."
-
-"The Cedars?"
-
-"Yes; that is Mr. St. Clair's house. I am staying there while I
-conduct the inquiry."
-
-"Where is it, then?"
-
-"Near Lee, in Kent. We have a seven-mile drive before us."
-
-"But I am all in the dark."
-
-"Of course you are. You'll know all about it presently. Jump up
-here. All right, John; we shall not need you. Here's half a
-crown. Look out for me to-morrow, about eleven. Give her her
-head. So long, then!"
-
-He flicked the horse with his whip, and we dashed away through
-the endless succession of sombre and deserted streets, which
-widened gradually, until we were flying across a broad
-balustraded bridge, with the murky river flowing sluggishly
-beneath us. Beyond lay another dull wilderness of bricks and
-mortar, its silence broken only by the heavy, regular footfall of
-the policeman, or the songs and shouts of some belated party of
-revellers. A dull wrack was drifting slowly across the sky, and a
-star or two twinkled dimly here and there through the rifts of
-the clouds. Holmes drove in silence, with his head sunk upon his
-breast, and the air of a man who is lost in thought, while I sat
-beside him, curious to learn what this new quest might be which
-seemed to tax his powers so sorely, and yet afraid to break in
-upon the current of his thoughts. We had driven several miles,
-and were beginning to get to the fringe of the belt of suburban
-villas, when he shook himself, shrugged his shoulders, and lit up
-his pipe with the air of a man who has satisfied himself that he
-is acting for the best.
-
-"You have a grand gift of silence, Watson," said he. "It makes
-you quite invaluable as a companion. 'Pon my word, it is a great
-thing for me to have someone to talk to, for my own thoughts are
-not over-pleasant. I was wondering what I should say to this dear
-little woman to-night when she meets me at the door."
-
-"You forget that I know nothing about it."
-
-"I shall just have time to tell you the facts of the case before
-we get to Lee. It seems absurdly simple, and yet, somehow I can
-get nothing to go upon. There's plenty of thread, no doubt, but I
-can't get the end of it into my hand. Now, I'll state the case
-clearly and concisely to you, Watson, and maybe you can see a
-spark where all is dark to me."
-
-"Proceed, then."
-
-"Some years ago--to be definite, in May, 1884--there came to Lee
-a gentleman, Neville St. Clair by name, who appeared to have
-plenty of money. He took a large villa, laid out the grounds very
-nicely, and lived generally in good style. By degrees he made
-friends in the neighbourhood, and in 1887 he married the daughter
-of a local brewer, by whom he now has two children. He had no
-occupation, but was interested in several companies and went into
-town as a rule in the morning, returning by the 5:14 from Cannon
-Street every night. Mr. St. Clair is now thirty-seven years of
-age, is a man of temperate habits, a good husband, a very
-affectionate father, and a man who is popular with all who know
-him. I may add that his whole debts at the present moment, as far
-as we have been able to ascertain, amount to 88 pounds 10s., while
-he has 220 pounds standing to his credit in the Capital and
-Counties Bank. There is no reason, therefore, to think that money
-troubles have been weighing upon his mind.
-
-"Last Monday Mr. Neville St. Clair went into town rather earlier
-than usual, remarking before he started that he had two important
-commissions to perform, and that he would bring his little boy
-home a box of bricks. Now, by the merest chance, his wife
-received a telegram upon this same Monday, very shortly after his
-departure, to the effect that a small parcel of considerable
-value which she had been expecting was waiting for her at the
-offices of the Aberdeen Shipping Company. Now, if you are well up
-in your London, you will know that the office of the company is
-in Fresno Street, which branches out of Upper Swandam Lane, where
-you found me to-night. Mrs. St. Clair had her lunch, started for
-the City, did some shopping, proceeded to the company's office,
-got her packet, and found herself at exactly 4:35 walking through
-Swandam Lane on her way back to the station. Have you followed me
-so far?"
-
-"It is very clear."
-
-"If you remember, Monday was an exceedingly hot day, and Mrs. St.
-Clair walked slowly, glancing about in the hope of seeing a cab,
-as she did not like the neighbourhood in which she found herself.
-While she was walking in this way down Swandam Lane, she suddenly
-heard an ejaculation or cry, and was struck cold to see her
-husband looking down at her and, as it seemed to her, beckoning
-to her from a second-floor window. The window was open, and she
-distinctly saw his face, which she describes as being terribly
-agitated. He waved his hands frantically to her, and then
-vanished from the window so suddenly that it seemed to her that
-he had been plucked back by some irresistible force from behind.
-One singular point which struck her quick feminine eye was that
-although he wore some dark coat, such as he had started to town
-in, he had on neither collar nor necktie.
-
-"Convinced that something was amiss with him, she rushed down the
-steps--for the house was none other than the opium den in which
-you found me to-night--and running through the front room she
-attempted to ascend the stairs which led to the first floor. At
-the foot of the stairs, however, she met this Lascar scoundrel of
-whom I have spoken, who thrust her back and, aided by a Dane, who
-acts as assistant there, pushed her out into the street. Filled
-with the most maddening doubts and fears, she rushed down the
-lane and, by rare good-fortune, met in Fresno Street a number of
-constables with an inspector, all on their way to their beat. The
-inspector and two men accompanied her back, and in spite of the
-continued resistance of the proprietor, they made their way to
-the room in which Mr. St. Clair had last been seen. There was no
-sign of him there. In fact, in the whole of that floor there was
-no one to be found save a crippled wretch of hideous aspect, who,
-it seems, made his home there. Both he and the Lascar stoutly
-swore that no one else had been in the front room during the
-afternoon. So determined was their denial that the inspector was
-staggered, and had almost come to believe that Mrs. St. Clair had
-been deluded when, with a cry, she sprang at a small deal box
-which lay upon the table and tore the lid from it. Out there fell
-a cascade of children's bricks. It was the toy which he had
-promised to bring home.
-
-"This discovery, and the evident confusion which the cripple
-showed, made the inspector realise that the matter was serious.
-The rooms were carefully examined, and results all pointed to an
-abominable crime. The front room was plainly furnished as a
-sitting-room and led into a small bedroom, which looked out upon
-the back of one of the wharves. Between the wharf and the bedroom
-window is a narrow strip, which is dry at low tide but is covered
-at high tide with at least four and a half feet of water. The
-bedroom window was a broad one and opened from below. On
-examination traces of blood were to be seen upon the windowsill,
-and several scattered drops were visible upon the wooden floor of
-the bedroom. Thrust away behind a curtain in the front room were
-all the clothes of Mr. Neville St. Clair, with the exception of
-his coat. His boots, his socks, his hat, and his watch--all were
-there. There were no signs of violence upon any of these
-garments, and there were no other traces of Mr. Neville St.
-Clair. Out of the window he must apparently have gone for no
-other exit could be discovered, and the ominous bloodstains upon
-the sill gave little promise that he could save himself by
-swimming, for the tide was at its very highest at the moment of
-the tragedy.
-
-"And now as to the villains who seemed to be immediately
-implicated in the matter. The Lascar was known to be a man of the
-vilest antecedents, but as, by Mrs. St. Clair's story, he was
-known to have been at the foot of the stair within a very few
-seconds of her husband's appearance at the window, he could
-hardly have been more than an accessory to the crime. His defence
-was one of absolute ignorance, and he protested that he had no
-knowledge as to the doings of Hugh Boone, his lodger, and that he
-could not account in any way for the presence of the missing
-gentleman's clothes.
-
-"So much for the Lascar manager. Now for the sinister cripple who
-lives upon the second floor of the opium den, and who was
-certainly the last human being whose eyes rested upon Neville St.
-Clair. His name is Hugh Boone, and his hideous face is one which
-is familiar to every man who goes much to the City. He is a
-professional beggar, though in order to avoid the police
-regulations he pretends to a small trade in wax vestas. Some
-little distance down Threadneedle Street, upon the left-hand
-side, there is, as you may have remarked, a small angle in the
-wall. Here it is that this creature takes his daily seat,
-cross-legged with his tiny stock of matches on his lap, and as he
-is a piteous spectacle a small rain of charity descends into the
-greasy leather cap which lies upon the pavement beside him. I
-have watched the fellow more than once before ever I thought of
-making his professional acquaintance, and I have been surprised
-at the harvest which he has reaped in a short time. His
-appearance, you see, is so remarkable that no one can pass him
-without observing him. A shock of orange hair, a pale face
-disfigured by a horrible scar, which, by its contraction, has
-turned up the outer edge of his upper lip, a bulldog chin, and a
-pair of very penetrating dark eyes, which present a singular
-contrast to the colour of his hair, all mark him out from amid
-the common crowd of mendicants and so, too, does his wit, for he
-is ever ready with a reply to any piece of chaff which may be
-thrown at him by the passers-by. This is the man whom we now
-learn to have been the lodger at the opium den, and to have been
-the last man to see the gentleman of whom we are in quest."
-
-"But a cripple!" said I. "What could he have done single-handed
-against a man in the prime of life?"
-
-"He is a cripple in the sense that he walks with a limp; but in
-other respects he appears to be a powerful and well-nurtured man.
-Surely your medical experience would tell you, Watson, that
-weakness in one limb is often compensated for by exceptional
-strength in the others."
-
-"Pray continue your narrative."
-
-"Mrs. St. Clair had fainted at the sight of the blood upon the
-window, and she was escorted home in a cab by the police, as her
-presence could be of no help to them in their investigations.
-Inspector Barton, who had charge of the case, made a very careful
-examination of the premises, but without finding anything which
-threw any light upon the matter. One mistake had been made in not
-arresting Boone instantly, as he was allowed some few minutes
-during which he might have communicated with his friend the
-Lascar, but this fault was soon remedied, and he was seized and
-searched, without anything being found which could incriminate
-him. There were, it is true, some blood-stains upon his right
-shirt-sleeve, but he pointed to his ring-finger, which had been
-cut near the nail, and explained that the bleeding came from
-there, adding that he had been to the window not long before, and
-that the stains which had been observed there came doubtless from
-the same source. He denied strenuously having ever seen Mr.
-Neville St. Clair and swore that the presence of the clothes in
-his room was as much a mystery to him as to the police. As to
-Mrs. St. Clair's assertion that she had actually seen her husband
-at the window, he declared that she must have been either mad or
-dreaming. He was removed, loudly protesting, to the
-police-station, while the inspector remained upon the premises in
-the hope that the ebbing tide might afford some fresh clue.
-
-"And it did, though they hardly found upon the mud-bank what they
-had feared to find. It was Neville St. Clair's coat, and not
-Neville St. Clair, which lay uncovered as the tide receded. And
-what do you think they found in the pockets?"
-
-"I cannot imagine."
-
-"No, I don't think you would guess. Every pocket stuffed with
-pennies and half-pennies--421 pennies and 270 half-pennies. It
-was no wonder that it had not been swept away by the tide. But a
-human body is a different matter. There is a fierce eddy between
-the wharf and the house. It seemed likely enough that the
-weighted coat had remained when the stripped body had been sucked
-away into the river."
-
-"But I understand that all the other clothes were found in the
-room. Would the body be dressed in a coat alone?"
-
-"No, sir, but the facts might be met speciously enough. Suppose
-that this man Boone had thrust Neville St. Clair through the
-window, there is no human eye which could have seen the deed.
-What would he do then? It would of course instantly strike him
-that he must get rid of the tell-tale garments. He would seize
-the coat, then, and be in the act of throwing it out, when it
-would occur to him that it would swim and not sink. He has little
-time, for he has heard the scuffle downstairs when the wife tried
-to force her way up, and perhaps he has already heard from his
-Lascar confederate that the police are hurrying up the street.
-There is not an instant to be lost. He rushes to some secret
-hoard, where he has accumulated the fruits of his beggary, and he
-stuffs all the coins upon which he can lay his hands into the
-pockets to make sure of the coat's sinking. He throws it out, and
-would have done the same with the other garments had not he heard
-the rush of steps below, and only just had time to close the
-window when the police appeared."
-
-"It certainly sounds feasible."
-
-"Well, we will take it as a working hypothesis for want of a
-better. Boone, as I have told you, was arrested and taken to the
-station, but it could not be shown that there had ever before
-been anything against him. He had for years been known as a
-professional beggar, but his life appeared to have been a very
-quiet and innocent one. There the matter stands at present, and
-the questions which have to be solved--what Neville St. Clair was
-doing in the opium den, what happened to him when there, where is
-he now, and what Hugh Boone had to do with his disappearance--are
-all as far from a solution as ever. I confess that I cannot
-recall any case within my experience which looked at the first
-glance so simple and yet which presented such difficulties."
-
-While Sherlock Holmes had been detailing this singular series of
-events, we had been whirling through the outskirts of the great
-town until the last straggling houses had been left behind, and
-we rattled along with a country hedge upon either side of us.
-Just as he finished, however, we drove through two scattered
-villages, where a few lights still glimmered in the windows.
-
-"We are on the outskirts of Lee," said my companion. "We have
-touched on three English counties in our short drive, starting in
-Middlesex, passing over an angle of Surrey, and ending in Kent.
-See that light among the trees? That is The Cedars, and beside
-that lamp sits a woman whose anxious ears have already, I have
-little doubt, caught the clink of our horse's feet."
-
-"But why are you not conducting the case from Baker Street?" I
-asked.
-
-"Because there are many inquiries which must be made out here.
-Mrs. St. Clair has most kindly put two rooms at my disposal, and
-you may rest assured that she will have nothing but a welcome for
-my friend and colleague. I hate to meet her, Watson, when I have
-no news of her husband. Here we are. Whoa, there, whoa!"
-
-We had pulled up in front of a large villa which stood within its
-own grounds. A stable-boy had run out to the horse's head, and
-springing down, I followed Holmes up the small, winding
-gravel-drive which led to the house. As we approached, the door
-flew open, and a little blonde woman stood in the opening, clad
-in some sort of light mousseline de soie, with a touch of fluffy
-pink chiffon at her neck and wrists. She stood with her figure
-outlined against the flood of light, one hand upon the door, one
-half-raised in her eagerness, her body slightly bent, her head
-and face protruded, with eager eyes and parted lips, a standing
-question.
-
-"Well?" she cried, "well?" And then, seeing that there were two
-of us, she gave a cry of hope which sank into a groan as she saw
-that my companion shook his head and shrugged his shoulders.
-
-"No good news?"
-
-"None."
-
-"No bad?"
-
-"No."
-
-"Thank God for that. But come in. You must be weary, for you have
-had a long day."
-
-"This is my friend, Dr. Watson. He has been of most vital use to
-me in several of my cases, and a lucky chance has made it
-possible for me to bring him out and associate him with this
-investigation."
-
-"I am delighted to see you," said she, pressing my hand warmly.
-"You will, I am sure, forgive anything that may be wanting in our
-arrangements, when you consider the blow which has come so
-suddenly upon us."
-
-"My dear madam," said I, "I am an old campaigner, and if I were
-not I can very well see that no apology is needed. If I can be of
-any assistance, either to you or to my friend here, I shall be
-indeed happy."
-
-"Now, Mr. Sherlock Holmes," said the lady as we entered a
-well-lit dining-room, upon the table of which a cold supper had
-been laid out, "I should very much like to ask you one or two
-plain questions, to which I beg that you will give a plain
-answer."
-
-"Certainly, madam."
-
-"Do not trouble about my feelings. I am not hysterical, nor given
-to fainting. I simply wish to hear your real, real opinion."
-
-"Upon what point?"
-
-"In your heart of hearts, do you think that Neville is alive?"
-
-Sherlock Holmes seemed to be embarrassed by the question.
-"Frankly, now!" she repeated, standing upon the rug and looking
-keenly down at him as he leaned back in a basket-chair.
-
-"Frankly, then, madam, I do not."
-
-"You think that he is dead?"
-
-"I do."
-
-"Murdered?"
-
-"I don't say that. Perhaps."
-
-"And on what day did he meet his death?"
-
-"On Monday."
-
-"Then perhaps, Mr. Holmes, you will be good enough to explain how
-it is that I have received a letter from him to-day."
-
-Sherlock Holmes sprang out of his chair as if he had been
-galvanised.
-
-"What!" he roared.
-
-"Yes, to-day." She stood smiling, holding up a little slip of
-paper in the air.
-
-"May I see it?"
-
-"Certainly."
-
-He snatched it from her in his eagerness, and smoothing it out
-upon the table he drew over the lamp and examined it intently. I
-had left my chair and was gazing at it over his shoulder. The
-envelope was a very coarse one and was stamped with the Gravesend
-postmark and with the date of that very day, or rather of the day
-before, for it was considerably after midnight.
-
-"Coarse writing," murmured Holmes. "Surely this is not your
-husband's writing, madam."
-
-"No, but the enclosure is."
-
-"I perceive also that whoever addressed the envelope had to go
-and inquire as to the address."
-
-"How can you tell that?"
-
-"The name, you see, is in perfectly black ink, which has dried
-itself. The rest is of the greyish colour, which shows that
-blotting-paper has been used. If it had been written straight
-off, and then blotted, none would be of a deep black shade. This
-man has written the name, and there has then been a pause before
-he wrote the address, which can only mean that he was not
-familiar with it. It is, of course, a trifle, but there is
-nothing so important as trifles. Let us now see the letter. Ha!
-there has been an enclosure here!"
-
-"Yes, there was a ring. His signet-ring."
-
-"And you are sure that this is your husband's hand?"
-
-"One of his hands."
-
-"One?"
-
-"His hand when he wrote hurriedly. It is very unlike his usual
-writing, and yet I know it well."
-
-"'Dearest do not be frightened. All will come well. There is a
-huge error which it may take some little time to rectify.
-Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
-of a book, octavo size, no water-mark. Hum! Posted to-day in
-Gravesend by a man with a dirty thumb. Ha! And the flap has been
-gummed, if I am not very much in error, by a person who had been
-chewing tobacco. And you have no doubt that it is your husband's
-hand, madam?"
-
-"None. Neville wrote those words."
-
-"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
-the clouds lighten, though I should not venture to say that the
-danger is over."
-
-"But he must be alive, Mr. Holmes."
-
-"Unless this is a clever forgery to put us on the wrong scent.
-The ring, after all, proves nothing. It may have been taken from
-him."
-
-"No, no; it is, it is his very own writing!"
-
-"Very well. It may, however, have been written on Monday and only
-posted to-day."
-
-"That is possible."
-
-"If so, much may have happened between."
-
-"Oh, you must not discourage me, Mr. Holmes. I know that all is
-well with him. There is so keen a sympathy between us that I
-should know if evil came upon him. On the very day that I saw him
-last he cut himself in the bedroom, and yet I in the dining-room
-rushed upstairs instantly with the utmost certainty that
-something had happened. Do you think that I would respond to such
-a trifle and yet be ignorant of his death?"
-
-"I have seen too much not to know that the impression of a woman
-may be more valuable than the conclusion of an analytical
-reasoner. And in this letter you certainly have a very strong
-piece of evidence to corroborate your view. But if your husband
-is alive and able to write letters, why should he remain away
-from you?"
-
-"I cannot imagine. It is unthinkable."
-
-"And on Monday he made no remarks before leaving you?"
-
-"No."
-
-"And you were surprised to see him in Swandam Lane?"
-
-"Very much so."
-
-"Was the window open?"
-
-"Yes."
-
-"Then he might have called to you?"
-
-"He might."
-
-"He only, as I understand, gave an inarticulate cry?"
-
-"Yes."
-
-"A call for help, you thought?"
-
-"Yes. He waved his hands."
-
-"But it might have been a cry of surprise. Astonishment at the
-unexpected sight of you might cause him to throw up his hands?"
-
-"It is possible."
-
-"And you thought he was pulled back?"
-
-"He disappeared so suddenly."
-
-"He might have leaped back. You did not see anyone else in the
-room?"
-
-"No, but this horrible man confessed to having been there, and
-the Lascar was at the foot of the stairs."
-
-"Quite so. Your husband, as far as you could see, had his
-ordinary clothes on?"
-
-"But without his collar or tie. I distinctly saw his bare
-throat."
-
-"Had he ever spoken of Swandam Lane?"
-
-"Never."
-
-"Had he ever showed any signs of having taken opium?"
-
-"Never."
-
-"Thank you, Mrs. St. Clair. Those are the principal points about
-which I wished to be absolutely clear. We shall now have a little
-supper and then retire, for we may have a very busy day
-to-morrow."
-
-A large and comfortable double-bedded room had been placed at our
-disposal, and I was quickly between the sheets, for I was weary
-after my night of adventure. Sherlock Holmes was a man, however,
-who, when he had an unsolved problem upon his mind, would go for
-days, and even for a week, without rest, turning it over,
-rearranging his facts, looking at it from every point of view
-until he had either fathomed it or convinced himself that his
-data were insufficient. It was soon evident to me that he was now
-preparing for an all-night sitting. He took off his coat and
-waistcoat, put on a large blue dressing-gown, and then wandered
-about the room collecting pillows from his bed and cushions from
-the sofa and armchairs. With these he constructed a sort of
-Eastern divan, upon which he perched himself cross-legged, with
-an ounce of shag tobacco and a box of matches laid out in front
-of him. In the dim light of the lamp I saw him sitting there, an
-old briar pipe between his lips, his eyes fixed vacantly upon the
-corner of the ceiling, the blue smoke curling up from him,
-silent, motionless, with the light shining upon his strong-set
-aquiline features. So he sat as I dropped off to sleep, and so he
-sat when a sudden ejaculation caused me to wake up, and I found
-the summer sun shining into the apartment. The pipe was still
-between his lips, the smoke still curled upward, and the room was
-full of a dense tobacco haze, but nothing remained of the heap of
-shag which I had seen upon the previous night.
-
-"Awake, Watson?" he asked.
-
-"Yes."
-
-"Game for a morning drive?"
-
-"Certainly."
-
-"Then dress. No one is stirring yet, but I know where the
-stable-boy sleeps, and we shall soon have the trap out." He
-chuckled to himself as he spoke, his eyes twinkled, and he seemed
-a different man to the sombre thinker of the previous night.
-
-As I dressed I glanced at my watch. It was no wonder that no one
-was stirring. It was twenty-five minutes past four. I had hardly
-finished when Holmes returned with the news that the boy was
-putting in the horse.
-
-"I want to test a little theory of mine," said he, pulling on his
-boots. "I think, Watson, that you are now standing in the
-presence of one of the most absolute fools in Europe. I deserve
-to be kicked from here to Charing Cross. But I think I have the
-key of the affair now."
-
-"And where is it?" I asked, smiling.
-
-"In the bathroom," he answered. "Oh, yes, I am not joking," he
-continued, seeing my look of incredulity. "I have just been
-there, and I have taken it out, and I have got it in this
-Gladstone bag. Come on, my boy, and we shall see whether it will
-not fit the lock."
-
-We made our way downstairs as quietly as possible, and out into
-the bright morning sunshine. In the road stood our horse and
-trap, with the half-clad stable-boy waiting at the head. We both
-sprang in, and away we dashed down the London Road. A few country
-carts were stirring, bearing in vegetables to the metropolis, but
-the lines of villas on either side were as silent and lifeless as
-some city in a dream.
-
-"It has been in some points a singular case," said Holmes,
-flicking the horse on into a gallop. "I confess that I have been
-as blind as a mole, but it is better to learn wisdom late than
-never to learn it at all."
-
-In town the earliest risers were just beginning to look sleepily
-from their windows as we drove through the streets of the Surrey
-side. Passing down the Waterloo Bridge Road we crossed over the
-river, and dashing up Wellington Street wheeled sharply to the
-right and found ourselves in Bow Street. Sherlock Holmes was well
-known to the force, and the two constables at the door saluted
-him. One of them held the horse's head while the other led us in.
-
-"Who is on duty?" asked Holmes.
-
-"Inspector Bradstreet, sir."
-
-"Ah, Bradstreet, how are you?" A tall, stout official had come
-down the stone-flagged passage, in a peaked cap and frogged
-jacket. "I wish to have a quiet word with you, Bradstreet."
-"Certainly, Mr. Holmes. Step into my room here." It was a small,
-office-like room, with a huge ledger upon the table, and a
-telephone projecting from the wall. The inspector sat down at his
-desk.
-
-"What can I do for you, Mr. Holmes?"
-
-"I called about that beggarman, Boone--the one who was charged
-with being concerned in the disappearance of Mr. Neville St.
-Clair, of Lee."
-
-"Yes. He was brought up and remanded for further inquiries."
-
-"So I heard. You have him here?"
-
-"In the cells."
-
-"Is he quiet?"
-
-"Oh, he gives no trouble. But he is a dirty scoundrel."
-
-"Dirty?"
-
-"Yes, it is all we can do to make him wash his hands, and his
-face is as black as a tinker's. Well, when once his case has been
-settled, he will have a regular prison bath; and I think, if you
-saw him, you would agree with me that he needed it."
-
-"I should like to see him very much."
-
-"Would you? That is easily done. Come this way. You can leave
-your bag."
-
-"No, I think that I'll take it."
-
-"Very good. Come this way, if you please." He led us down a
-passage, opened a barred door, passed down a winding stair, and
-brought us to a whitewashed corridor with a line of doors on each
-side.
-
-"The third on the right is his," said the inspector. "Here it
-is!" He quietly shot back a panel in the upper part of the door
-and glanced through.
-
-"He is asleep," said he. "You can see him very well."
-
-We both put our eyes to the grating. The prisoner lay with his
-face towards us, in a very deep sleep, breathing slowly and
-heavily. He was a middle-sized man, coarsely clad as became his
-calling, with a coloured shirt protruding through the rent in his
-tattered coat. He was, as the inspector had said, extremely
-dirty, but the grime which covered his face could not conceal its
-repulsive ugliness. A broad wheal from an old scar ran right
-across it from eye to chin, and by its contraction had turned up
-one side of the upper lip, so that three teeth were exposed in a
-perpetual snarl. A shock of very bright red hair grew low over
-his eyes and forehead.
-
-"He's a beauty, isn't he?" said the inspector.
-
-"He certainly needs a wash," remarked Holmes. "I had an idea that
-he might, and I took the liberty of bringing the tools with me."
-He opened the Gladstone bag as he spoke, and took out, to my
-astonishment, a very large bath-sponge.
-
-"He! he! You are a funny one," chuckled the inspector.
-
-"Now, if you will have the great goodness to open that door very
-quietly, we will soon make him cut a much more respectable
-figure."
-
-"Well, I don't know why not," said the inspector. "He doesn't
-look a credit to the Bow Street cells, does he?" He slipped his
-key into the lock, and we all very quietly entered the cell. The
-sleeper half turned, and then settled down once more into a deep
-slumber. Holmes stooped to the water-jug, moistened his sponge,
-and then rubbed it twice vigorously across and down the
-prisoner's face.
-
-"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
-Lee, in the county of Kent."
-
-Never in my life have I seen such a sight. The man's face peeled
-off under the sponge like the bark from a tree. Gone was the
-coarse brown tint! Gone, too, was the horrid scar which had
-seamed it across, and the twisted lip which had given the
-repulsive sneer to the face! A twitch brought away the tangled
-red hair, and there, sitting up in his bed, was a pale,
-sad-faced, refined-looking man, black-haired and smooth-skinned,
-rubbing his eyes and staring about him with sleepy bewilderment.
-Then suddenly realising the exposure, he broke into a scream and
-threw himself down with his face to the pillow.
-
-"Great heavens!" cried the inspector, "it is, indeed, the missing
-man. I know him from the photograph."
-
-The prisoner turned with the reckless air of a man who abandons
-himself to his destiny. "Be it so," said he. "And pray what am I
-charged with?"
-
-"With making away with Mr. Neville St.-- Oh, come, you can't be
-charged with that unless they make a case of attempted suicide of
-it," said the inspector with a grin. "Well, I have been
-twenty-seven years in the force, but this really takes the cake."
-
-"If I am Mr. Neville St. Clair, then it is obvious that no crime
-has been committed, and that, therefore, I am illegally
-detained."
-
-"No crime, but a very great error has been committed," said
-Holmes. "You would have done better to have trusted your wife."
-
-"It was not the wife; it was the children," groaned the prisoner.
-"God help me, I would not have them ashamed of their father. My
-God! What an exposure! What can I do?"
-
-Sherlock Holmes sat down beside him on the couch and patted him
-kindly on the shoulder.
-
-"If you leave it to a court of law to clear the matter up," said
-he, "of course you can hardly avoid publicity. On the other hand,
-if you convince the police authorities that there is no possible
-case against you, I do not know that there is any reason that the
-details should find their way into the papers. Inspector
-Bradstreet would, I am sure, make notes upon anything which you
-might tell us and submit it to the proper authorities. The case
-would then never go into court at all."
-
-"God bless you!" cried the prisoner passionately. "I would have
-endured imprisonment, ay, even execution, rather than have left
-my miserable secret as a family blot to my children.
-
-"You are the first who have ever heard my story. My father was a
-schoolmaster in Chesterfield, where I received an excellent
-education. I travelled in my youth, took to the stage, and
-finally became a reporter on an evening paper in London. One day
-my editor wished to have a series of articles upon begging in the
-metropolis, and I volunteered to supply them. There was the point
-from which all my adventures started. It was only by trying
-begging as an amateur that I could get the facts upon which to
-base my articles. When an actor I had, of course, learned all the
-secrets of making up, and had been famous in the green-room for
-my skill. I took advantage now of my attainments. I painted my
-face, and to make myself as pitiable as possible I made a good
-scar and fixed one side of my lip in a twist by the aid of a
-small slip of flesh-coloured plaster. Then with a red head of
-hair, and an appropriate dress, I took my station in the business
-part of the city, ostensibly as a match-seller but really as a
-beggar. For seven hours I plied my trade, and when I returned
-home in the evening I found to my surprise that I had received no
-less than 26s. 4d.
-
-"I wrote my articles and thought little more of the matter until,
-some time later, I backed a bill for a friend and had a writ
-served upon me for 25 pounds. I was at my wit's end where to get
-the money, but a sudden idea came to me. I begged a fortnight's
-grace from the creditor, asked for a holiday from my employers,
-and spent the time in begging in the City under my disguise. In
-ten days I had the money and had paid the debt.
-
-"Well, you can imagine how hard it was to settle down to arduous
-work at 2 pounds a week when I knew that I could earn as much in
-a day by smearing my face with a little paint, laying my cap on
-the ground, and sitting still. It was a long fight between my
-pride and the money, but the dollars won at last, and I threw up
-reporting and sat day after day in the corner which I had first
-chosen, inspiring pity by my ghastly face and filling my pockets
-with coppers. Only one man knew my secret. He was the keeper of a
-low den in which I used to lodge in Swandam Lane, where I could
-every morning emerge as a squalid beggar and in the evenings
-transform myself into a well-dressed man about town. This fellow,
-a Lascar, was well paid by me for his rooms, so that I knew that
-my secret was safe in his possession.
-
-"Well, very soon I found that I was saving considerable sums of
-money. I do not mean that any beggar in the streets of London
-could earn 700 pounds a year--which is less than my average
-takings--but I had exceptional advantages in my power of making
-up, and also in a facility of repartee, which improved by
-practice and made me quite a recognised character in the City.
-All day a stream of pennies, varied by silver, poured in upon me,
-and it was a very bad day in which I failed to take 2 pounds.
-
-"As I grew richer I grew more ambitious, took a house in the
-country, and eventually married, without anyone having a
-suspicion as to my real occupation. My dear wife knew that I had
-business in the City. She little knew what.
-
-"Last Monday I had finished for the day and was dressing in my
-room above the opium den when I looked out of my window and saw,
-to my horror and astonishment, that my wife was standing in the
-street, with her eyes fixed full upon me. I gave a cry of
-surprise, threw up my arms to cover my face, and, rushing to my
-confidant, the Lascar, entreated him to prevent anyone from
-coming up to me. I heard her voice downstairs, but I knew that
-she could not ascend. Swiftly I threw off my clothes, pulled on
-those of a beggar, and put on my pigments and wig. Even a wife's
-eyes could not pierce so complete a disguise. But then it
-occurred to me that there might be a search in the room, and that
-the clothes might betray me. I threw open the window, reopening
-by my violence a small cut which I had inflicted upon myself in
-the bedroom that morning. Then I seized my coat, which was
-weighted by the coppers which I had just transferred to it from
-the leather bag in which I carried my takings. I hurled it out of
-the window, and it disappeared into the Thames. The other clothes
-would have followed, but at that moment there was a rush of
-constables up the stair, and a few minutes after I found, rather,
-I confess, to my relief, that instead of being identified as Mr.
-Neville St. Clair, I was arrested as his murderer.
-
-"I do not know that there is anything else for me to explain. I
-was determined to preserve my disguise as long as possible, and
-hence my preference for a dirty face. Knowing that my wife would
-be terribly anxious, I slipped off my ring and confided it to the
-Lascar at a moment when no constable was watching me, together
-with a hurried scrawl, telling her that she had no cause to
-fear."
-
-"That note only reached her yesterday," said Holmes.
-
-"Good God! What a week she must have spent!"
-
-"The police have watched this Lascar," said Inspector Bradstreet,
-"and I can quite understand that he might find it difficult to
-post a letter unobserved. Probably he handed it to some sailor
-customer of his, who forgot all about it for some days."
-
-"That was it," said Holmes, nodding approvingly; "I have no doubt
-of it. But have you never been prosecuted for begging?"
-
-"Many times; but what was a fine to me?"
-
-"It must stop here, however," said Bradstreet. "If the police are
-to hush this thing up, there must be no more of Hugh Boone."
-
-"I have sworn it by the most solemn oaths which a man can take."
-
-"In that case I think that it is probable that no further steps
-may be taken. But if you are found again, then all must come out.
-I am sure, Mr. Holmes, that we are very much indebted to you for
-having cleared the matter up. I wish I knew how you reach your
-results."
-
-"I reached this one," said my friend, "by sitting upon five
-pillows and consuming an ounce of shag. I think, Watson, that if
-we drive to Baker Street we shall just be in time for breakfast."
-
-
-
-VII. THE ADVENTURE OF THE BLUE CARBUNCLE
-
-I had called upon my friend Sherlock Holmes upon the second
-morning after Christmas, with the intention of wishing him the
-compliments of the season. He was lounging upon the sofa in a
-purple dressing-gown, a pipe-rack within his reach upon the
-right, and a pile of crumpled morning papers, evidently newly
-studied, near at hand. Beside the couch was a wooden chair, and
-on the angle of the back hung a very seedy and disreputable
-hard-felt hat, much the worse for wear, and cracked in several
-places. A lens and a forceps lying upon the seat of the chair
-suggested that the hat had been suspended in this manner for the
-purpose of examination.
-
-"You are engaged," said I; "perhaps I interrupt you."
-
-"Not at all. I am glad to have a friend with whom I can discuss
-my results. The matter is a perfectly trivial one"--he jerked his
-thumb in the direction of the old hat--"but there are points in
-connection with it which are not entirely devoid of interest and
-even of instruction."
-
-I seated myself in his armchair and warmed my hands before his
-crackling fire, for a sharp frost had set in, and the windows
-were thick with the ice crystals. "I suppose," I remarked, "that,
-homely as it looks, this thing has some deadly story linked on to
-it--that it is the clue which will guide you in the solution of
-some mystery and the punishment of some crime."
-
-"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
-those whimsical little incidents which will happen when you have
-four million human beings all jostling each other within the
-space of a few square miles. Amid the action and reaction of so
-dense a swarm of humanity, every possible combination of events
-may be expected to take place, and many a little problem will be
-presented which may be striking and bizarre without being
-criminal. We have already had experience of such."
-
-"So much so," I remarked, "that of the last six cases which I
-have added to my notes, three have been entirely free of any
-legal crime."
-
-"Precisely. You allude to my attempt to recover the Irene Adler
-papers, to the singular case of Miss Mary Sutherland, and to the
-adventure of the man with the twisted lip. Well, I have no doubt
-that this small matter will fall into the same innocent category.
-You know Peterson, the commissionaire?"
-
-"Yes."
-
-"It is to him that this trophy belongs."
-
-"It is his hat."
-
-"No, no, he found it. Its owner is unknown. I beg that you will
-look upon it not as a battered billycock but as an intellectual
-problem. And, first, as to how it came here. It arrived upon
-Christmas morning, in company with a good fat goose, which is, I
-have no doubt, roasting at this moment in front of Peterson's
-fire. The facts are these: about four o'clock on Christmas
-morning, Peterson, who, as you know, is a very honest fellow, was
-returning from some small jollification and was making his way
-homeward down Tottenham Court Road. In front of him he saw, in
-the gaslight, a tallish man, walking with a slight stagger, and
-carrying a white goose slung over his shoulder. As he reached the
-corner of Goodge Street, a row broke out between this stranger
-and a little knot of roughs. One of the latter knocked off the
-man's hat, on which he raised his stick to defend himself and,
-swinging it over his head, smashed the shop window behind him.
-Peterson had rushed forward to protect the stranger from his
-assailants; but the man, shocked at having broken the window, and
-seeing an official-looking person in uniform rushing towards him,
-dropped his goose, took to his heels, and vanished amid the
-labyrinth of small streets which lie at the back of Tottenham
-Court Road. The roughs had also fled at the appearance of
-Peterson, so that he was left in possession of the field of
-battle, and also of the spoils of victory in the shape of this
-battered hat and a most unimpeachable Christmas goose."
-
-"Which surely he restored to their owner?"
-
-"My dear fellow, there lies the problem. It is true that 'For
-Mrs. Henry Baker' was printed upon a small card which was tied to
-the bird's left leg, and it is also true that the initials 'H.
-B.' are legible upon the lining of this hat, but as there are
-some thousands of Bakers, and some hundreds of Henry Bakers in
-this city of ours, it is not easy to restore lost property to any
-one of them."
-
-"What, then, did Peterson do?"
-
-"He brought round both hat and goose to me on Christmas morning,
-knowing that even the smallest problems are of interest to me.
-The goose we retained until this morning, when there were signs
-that, in spite of the slight frost, it would be well that it
-should be eaten without unnecessary delay. Its finder has carried
-it off, therefore, to fulfil the ultimate destiny of a goose,
-while I continue to retain the hat of the unknown gentleman who
-lost his Christmas dinner."
-
-"Did he not advertise?"
-
-"No."
-
-"Then, what clue could you have as to his identity?"
-
-"Only as much as we can deduce."
-
-"From his hat?"
-
-"Precisely."
-
-"But you are joking. What can you gather from this old battered
-felt?"
-
-"Here is my lens. You know my methods. What can you gather
-yourself as to the individuality of the man who has worn this
-article?"
-
-I took the tattered object in my hands and turned it over rather
-ruefully. It was a very ordinary black hat of the usual round
-shape, hard and much the worse for wear. The lining had been of
-red silk, but was a good deal discoloured. There was no maker's
-name; but, as Holmes had remarked, the initials "H. B." were
-scrawled upon one side. It was pierced in the brim for a
-hat-securer, but the elastic was missing. For the rest, it was
-cracked, exceedingly dusty, and spotted in several places,
-although there seemed to have been some attempt to hide the
-discoloured patches by smearing them with ink.
-
-"I can see nothing," said I, handing it back to my friend.
-
-"On the contrary, Watson, you can see everything. You fail,
-however, to reason from what you see. You are too timid in
-drawing your inferences."
-
-"Then, pray tell me what it is that you can infer from this hat?"
-
-He picked it up and gazed at it in the peculiar introspective
-fashion which was characteristic of him. "It is perhaps less
-suggestive than it might have been," he remarked, "and yet there
-are a few inferences which are very distinct, and a few others
-which represent at least a strong balance of probability. That
-the man was highly intellectual is of course obvious upon the
-face of it, and also that he was fairly well-to-do within the
-last three years, although he has now fallen upon evil days. He
-had foresight, but has less now than formerly, pointing to a
-moral retrogression, which, when taken with the decline of his
-fortunes, seems to indicate some evil influence, probably drink,
-at work upon him. This may account also for the obvious fact that
-his wife has ceased to love him."
-
-"My dear Holmes!"
-
-"He has, however, retained some degree of self-respect," he
-continued, disregarding my remonstrance. "He is a man who leads a
-sedentary life, goes out little, is out of training entirely, is
-middle-aged, has grizzled hair which he has had cut within the
-last few days, and which he anoints with lime-cream. These are
-the more patent facts which are to be deduced from his hat. Also,
-by the way, that it is extremely improbable that he has gas laid
-on in his house."
-
-"You are certainly joking, Holmes."
-
-"Not in the least. Is it possible that even now, when I give you
-these results, you are unable to see how they are attained?"
-
-"I have no doubt that I am very stupid, but I must confess that I
-am unable to follow you. For example, how did you deduce that
-this man was intellectual?"
-
-For answer Holmes clapped the hat upon his head. It came right
-over the forehead and settled upon the bridge of his nose. "It is
-a question of cubic capacity," said he; "a man with so large a
-brain must have something in it."
-
-"The decline of his fortunes, then?"
-
-"This hat is three years old. These flat brims curled at the edge
-came in then. It is a hat of the very best quality. Look at the
-band of ribbed silk and the excellent lining. If this man could
-afford to buy so expensive a hat three years ago, and has had no
-hat since, then he has assuredly gone down in the world."
-
-"Well, that is clear enough, certainly. But how about the
-foresight and the moral retrogression?"
-
-Sherlock Holmes laughed. "Here is the foresight," said he putting
-his finger upon the little disc and loop of the hat-securer.
-"They are never sold upon hats. If this man ordered one, it is a
-sign of a certain amount of foresight, since he went out of his
-way to take this precaution against the wind. But since we see
-that he has broken the elastic and has not troubled to replace
-it, it is obvious that he has less foresight now than formerly,
-which is a distinct proof of a weakening nature. On the other
-hand, he has endeavoured to conceal some of these stains upon the
-felt by daubing them with ink, which is a sign that he has not
-entirely lost his self-respect."
-
-"Your reasoning is certainly plausible."
-
-"The further points, that he is middle-aged, that his hair is
-grizzled, that it has been recently cut, and that he uses
-lime-cream, are all to be gathered from a close examination of the
-lower part of the lining. The lens discloses a large number of
-hair-ends, clean cut by the scissors of the barber. They all
-appear to be adhesive, and there is a distinct odour of
-lime-cream. This dust, you will observe, is not the gritty, grey
-dust of the street but the fluffy brown dust of the house,
-showing that it has been hung up indoors most of the time, while
-the marks of moisture upon the inside are proof positive that the
-wearer perspired very freely, and could therefore, hardly be in
-the best of training."
-
-"But his wife--you said that she had ceased to love him."
-
-"This hat has not been brushed for weeks. When I see you, my dear
-Watson, with a week's accumulation of dust upon your hat, and
-when your wife allows you to go out in such a state, I shall fear
-that you also have been unfortunate enough to lose your wife's
-affection."
-
-"But he might be a bachelor."
-
-"Nay, he was bringing home the goose as a peace-offering to his
-wife. Remember the card upon the bird's leg."
-
-"You have an answer to everything. But how on earth do you deduce
-that the gas is not laid on in his house?"
-
-"One tallow stain, or even two, might come by chance; but when I
-see no less than five, I think that there can be little doubt
-that the individual must be brought into frequent contact with
-burning tallow--walks upstairs at night probably with his hat in
-one hand and a guttering candle in the other. Anyhow, he never
-got tallow-stains from a gas-jet. Are you satisfied?"
-
-"Well, it is very ingenious," said I, laughing; "but since, as
-you said just now, there has been no crime committed, and no harm
-done save the loss of a goose, all this seems to be rather a
-waste of energy."
-
-Sherlock Holmes had opened his mouth to reply, when the door flew
-open, and Peterson, the commissionaire, rushed into the apartment
-with flushed cheeks and the face of a man who is dazed with
-astonishment.
-
-"The goose, Mr. Holmes! The goose, sir!" he gasped.
-
-"Eh? What of it, then? Has it returned to life and flapped off
-through the kitchen window?" Holmes twisted himself round upon
-the sofa to get a fairer view of the man's excited face.
-
-"See here, sir! See what my wife found in its crop!" He held out
-his hand and displayed upon the centre of the palm a brilliantly
-scintillating blue stone, rather smaller than a bean in size, but
-of such purity and radiance that it twinkled like an electric
-point in the dark hollow of his hand.
-
-Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
-he, "this is treasure trove indeed. I suppose you know what you
-have got?"
-
-"A diamond, sir? A precious stone. It cuts into glass as though
-it were putty."
-
-"It's more than a precious stone. It is the precious stone."
-
-"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
-
-"Precisely so. I ought to know its size and shape, seeing that I
-have read the advertisement about it in The Times every day
-lately. It is absolutely unique, and its value can only be
-conjectured, but the reward offered of 1000 pounds is certainly
-not within a twentieth part of the market price."
-
-"A thousand pounds! Great Lord of mercy!" The commissionaire
-plumped down into a chair and stared from one to the other of us.
-
-"That is the reward, and I have reason to know that there are
-sentimental considerations in the background which would induce
-the Countess to part with half her fortune if she could but
-recover the gem."
-
-"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
-remarked.
-
-"Precisely so, on December 22nd, just five days ago. John Horner,
-a plumber, was accused of having abstracted it from the lady's
-jewel-case. The evidence against him was so strong that the case
-has been referred to the Assizes. I have some account of the
-matter here, I believe." He rummaged amid his newspapers,
-glancing over the dates, until at last he smoothed one out,
-doubled it over, and read the following paragraph:
-
-"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
-brought up upon the charge of having upon the 22nd inst.,
-abstracted from the jewel-case of the Countess of Morcar the
-valuable gem known as the blue carbuncle. James Ryder,
-upper-attendant at the hotel, gave his evidence to the effect
-that he had shown Horner up to the dressing-room of the Countess
-of Morcar upon the day of the robbery in order that he might
-solder the second bar of the grate, which was loose. He had
-remained with Horner some little time, but had finally been
-called away. On returning, he found that Horner had disappeared,
-that the bureau had been forced open, and that the small morocco
-casket in which, as it afterwards transpired, the Countess was
-accustomed to keep her jewel, was lying empty upon the
-dressing-table. Ryder instantly gave the alarm, and Horner was
-arrested the same evening; but the stone could not be found
-either upon his person or in his rooms. Catherine Cusack, maid to
-the Countess, deposed to having heard Ryder's cry of dismay on
-discovering the robbery, and to having rushed into the room,
-where she found matters as described by the last witness.
-Inspector Bradstreet, B division, gave evidence as to the arrest
-of Horner, who struggled frantically, and protested his innocence
-in the strongest terms. Evidence of a previous conviction for
-robbery having been given against the prisoner, the magistrate
-refused to deal summarily with the offence, but referred it to
-the Assizes. Horner, who had shown signs of intense emotion
-during the proceedings, fainted away at the conclusion and was
-carried out of court."
-
-"Hum! So much for the police-court," said Holmes thoughtfully,
-tossing aside the paper. "The question for us now to solve is the
-sequence of events leading from a rifled jewel-case at one end to
-the crop of a goose in Tottenham Court Road at the other. You
-see, Watson, our little deductions have suddenly assumed a much
-more important and less innocent aspect. Here is the stone; the
-stone came from the goose, and the goose came from Mr. Henry
-Baker, the gentleman with the bad hat and all the other
-characteristics with which I have bored you. So now we must set
-ourselves very seriously to finding this gentleman and
-ascertaining what part he has played in this little mystery. To
-do this, we must try the simplest means first, and these lie
-undoubtedly in an advertisement in all the evening papers. If
-this fail, I shall have recourse to other methods."
-
-"What will you say?"
-
-"Give me a pencil and that slip of paper. Now, then: 'Found at
-the corner of Goodge Street, a goose and a black felt hat. Mr.
-Henry Baker can have the same by applying at 6:30 this evening at
-221B, Baker Street.' That is clear and concise."
-
-"Very. But will he see it?"
-
-"Well, he is sure to keep an eye on the papers, since, to a poor
-man, the loss was a heavy one. He was clearly so scared by his
-mischance in breaking the window and by the approach of Peterson
-that he thought of nothing but flight, but since then he must
-have bitterly regretted the impulse which caused him to drop his
-bird. Then, again, the introduction of his name will cause him to
-see it, for everyone who knows him will direct his attention to
-it. Here you are, Peterson, run down to the advertising agency
-and have this put in the evening papers."
-
-"In which, sir?"
-
-"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
-Standard, Echo, and any others that occur to you."
-
-"Very well, sir. And this stone?"
-
-"Ah, yes, I shall keep the stone. Thank you. And, I say,
-Peterson, just buy a goose on your way back and leave it here
-with me, for we must have one to give to this gentleman in place
-of the one which your family is now devouring."
-
-When the commissionaire had gone, Holmes took up the stone and
-held it against the light. "It's a bonny thing," said he. "Just
-see how it glints and sparkles. Of course it is a nucleus and
-focus of crime. Every good stone is. They are the devil's pet
-baits. In the larger and older jewels every facet may stand for a
-bloody deed. This stone is not yet twenty years old. It was found
-in the banks of the Amoy River in southern China and is remarkable
-in having every characteristic of the carbuncle, save that it is
-blue in shade instead of ruby red. In spite of its youth, it has
-already a sinister history. There have been two murders, a
-vitriol-throwing, a suicide, and several robberies brought about
-for the sake of this forty-grain weight of crystallised charcoal.
-Who would think that so pretty a toy would be a purveyor to the
-gallows and the prison? I'll lock it up in my strong box now and
-drop a line to the Countess to say that we have it."
-
-"Do you think that this man Horner is innocent?"
-
-"I cannot tell."
-
-"Well, then, do you imagine that this other one, Henry Baker, had
-anything to do with the matter?"
-
-"It is, I think, much more likely that Henry Baker is an
-absolutely innocent man, who had no idea that the bird which he
-was carrying was of considerably more value than if it were made
-of solid gold. That, however, I shall determine by a very simple
-test if we have an answer to our advertisement."
-
-"And you can do nothing until then?"
-
-"Nothing."
-
-"In that case I shall continue my professional round. But I shall
-come back in the evening at the hour you have mentioned, for I
-should like to see the solution of so tangled a business."
-
-"Very glad to see you. I dine at seven. There is a woodcock, I
-believe. By the way, in view of recent occurrences, perhaps I
-ought to ask Mrs. Hudson to examine its crop."
-
-I had been delayed at a case, and it was a little after half-past
-six when I found myself in Baker Street once more. As I
-approached the house I saw a tall man in a Scotch bonnet with a
-coat which was buttoned up to his chin waiting outside in the
-bright semicircle which was thrown from the fanlight. Just as I
-arrived the door was opened, and we were shown up together to
-Holmes' room.
-
-"Mr. Henry Baker, I believe," said he, rising from his armchair
-and greeting his visitor with the easy air of geniality which he
-could so readily assume. "Pray take this chair by the fire, Mr.
-Baker. It is a cold night, and I observe that your circulation is
-more adapted for summer than for winter. Ah, Watson, you have
-just come at the right time. Is that your hat, Mr. Baker?"
-
-"Yes, sir, that is undoubtedly my hat."
-
-He was a large man with rounded shoulders, a massive head, and a
-broad, intelligent face, sloping down to a pointed beard of
-grizzled brown. A touch of red in nose and cheeks, with a slight
-tremor of his extended hand, recalled Holmes' surmise as to his
-habits. His rusty black frock-coat was buttoned right up in
-front, with the collar turned up, and his lank wrists protruded
-from his sleeves without a sign of cuff or shirt. He spoke in a
-slow staccato fashion, choosing his words with care, and gave the
-impression generally of a man of learning and letters who had had
-ill-usage at the hands of fortune.
-
-"We have retained these things for some days," said Holmes,
-"because we expected to see an advertisement from you giving your
-address. I am at a loss to know now why you did not advertise."
-
-Our visitor gave a rather shamefaced laugh. "Shillings have not
-been so plentiful with me as they once were," he remarked. "I had
-no doubt that the gang of roughs who assaulted me had carried off
-both my hat and the bird. I did not care to spend more money in a
-hopeless attempt at recovering them."
-
-"Very naturally. By the way, about the bird, we were compelled to
-eat it."
-
-"To eat it!" Our visitor half rose from his chair in his
-excitement.
-
-"Yes, it would have been of no use to anyone had we not done so.
-But I presume that this other goose upon the sideboard, which is
-about the same weight and perfectly fresh, will answer your
-purpose equally well?"
-
-"Oh, certainly, certainly," answered Mr. Baker with a sigh of
-relief.
-
-"Of course, we still have the feathers, legs, crop, and so on of
-your own bird, so if you wish--"
-
-The man burst into a hearty laugh. "They might be useful to me as
-relics of my adventure," said he, "but beyond that I can hardly
-see what use the disjecta membra of my late acquaintance are
-going to be to me. No, sir, I think that, with your permission, I
-will confine my attentions to the excellent bird which I perceive
-upon the sideboard."
-
-Sherlock Holmes glanced sharply across at me with a slight shrug
-of his shoulders.
-
-"There is your hat, then, and there your bird," said he. "By the
-way, would it bore you to tell me where you got the other one
-from? I am somewhat of a fowl fancier, and I have seldom seen a
-better grown goose."
-
-"Certainly, sir," said Baker, who had risen and tucked his newly
-gained property under his arm. "There are a few of us who
-frequent the Alpha Inn, near the Museum--we are to be found in
-the Museum itself during the day, you understand. This year our
-good host, Windigate by name, instituted a goose club, by which,
-on consideration of some few pence every week, we were each to
-receive a bird at Christmas. My pence were duly paid, and the
-rest is familiar to you. I am much indebted to you, sir, for a
-Scotch bonnet is fitted neither to my years nor my gravity." With
-a comical pomposity of manner he bowed solemnly to both of us and
-strode off upon his way.
-
-"So much for Mr. Henry Baker," said Holmes when he had closed the
-door behind him. "It is quite certain that he knows nothing
-whatever about the matter. Are you hungry, Watson?"
-
-"Not particularly."
-
-"Then I suggest that we turn our dinner into a supper and follow
-up this clue while it is still hot."
-
-"By all means."
-
-It was a bitter night, so we drew on our ulsters and wrapped
-cravats about our throats. Outside, the stars were shining coldly
-in a cloudless sky, and the breath of the passers-by blew out
-into smoke like so many pistol shots. Our footfalls rang out
-crisply and loudly as we swung through the doctors' quarter,
-Wimpole Street, Harley Street, and so through Wigmore Street into
-Oxford Street. In a quarter of an hour we were in Bloomsbury at
-the Alpha Inn, which is a small public-house at the corner of one
-of the streets which runs down into Holborn. Holmes pushed open
-the door of the private bar and ordered two glasses of beer from
-the ruddy-faced, white-aproned landlord.
-
-"Your beer should be excellent if it is as good as your geese,"
-said he.
-
-"My geese!" The man seemed surprised.
-
-"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
-who was a member of your goose club."
-
-"Ah! yes, I see. But you see, sir, them's not our geese."
-
-"Indeed! Whose, then?"
-
-"Well, I got the two dozen from a salesman in Covent Garden."
-
-"Indeed? I know some of them. Which was it?"
-
-"Breckinridge is his name."
-
-"Ah! I don't know him. Well, here's your good health landlord,
-and prosperity to your house. Good-night."
-
-"Now for Mr. Breckinridge," he continued, buttoning up his coat
-as we came out into the frosty air. "Remember, Watson that though
-we have so homely a thing as a goose at one end of this chain, we
-have at the other a man who will certainly get seven years' penal
-servitude unless we can establish his innocence. It is possible
-that our inquiry may but confirm his guilt; but, in any case, we
-have a line of investigation which has been missed by the police,
-and which a singular chance has placed in our hands. Let us
-follow it out to the bitter end. Faces to the south, then, and
-quick march!"
-
-We passed across Holborn, down Endell Street, and so through a
-zigzag of slums to Covent Garden Market. One of the largest
-stalls bore the name of Breckinridge upon it, and the proprietor
-a horsey-looking man, with a sharp face and trim side-whiskers was
-helping a boy to put up the shutters.
-
-"Good-evening. It's a cold night," said Holmes.
-
-The salesman nodded and shot a questioning glance at my
-companion.
-
-"Sold out of geese, I see," continued Holmes, pointing at the
-bare slabs of marble.
-
-"Let you have five hundred to-morrow morning."
-
-"That's no good."
-
-"Well, there are some on the stall with the gas-flare."
-
-"Ah, but I was recommended to you."
-
-"Who by?"
-
-"The landlord of the Alpha."
-
-"Oh, yes; I sent him a couple of dozen."
-
-"Fine birds they were, too. Now where did you get them from?"
-
-To my surprise the question provoked a burst of anger from the
-salesman.
-
-"Now, then, mister," said he, with his head cocked and his arms
-akimbo, "what are you driving at? Let's have it straight, now."
-
-"It is straight enough. I should like to know who sold you the
-geese which you supplied to the Alpha."
-
-"Well then, I shan't tell you. So now!"
-
-"Oh, it is a matter of no importance; but I don't know why you
-should be so warm over such a trifle."
-
-"Warm! You'd be as warm, maybe, if you were as pestered as I am.
-When I pay good money for a good article there should be an end
-of the business; but it's 'Where are the geese?' and 'Who did you
-sell the geese to?' and 'What will you take for the geese?' One
-would think they were the only geese in the world, to hear the
-fuss that is made over them."
-
-"Well, I have no connection with any other people who have been
-making inquiries," said Holmes carelessly. "If you won't tell us
-the bet is off, that is all. But I'm always ready to back my
-opinion on a matter of fowls, and I have a fiver on it that the
-bird I ate is country bred."
-
-"Well, then, you've lost your fiver, for it's town bred," snapped
-the salesman.
-
-"It's nothing of the kind."
-
-"I say it is."
-
-"I don't believe it."
-
-"D'you think you know more about fowls than I, who have handled
-them ever since I was a nipper? I tell you, all those birds that
-went to the Alpha were town bred."
-
-"You'll never persuade me to believe that."
-
-"Will you bet, then?"
-
-"It's merely taking your money, for I know that I am right. But
-I'll have a sovereign on with you, just to teach you not to be
-obstinate."
-
-The salesman chuckled grimly. "Bring me the books, Bill," said
-he.
-
-The small boy brought round a small thin volume and a great
-greasy-backed one, laying them out together beneath the hanging
-lamp.
-
-"Now then, Mr. Cocksure," said the salesman, "I thought that I
-was out of geese, but before I finish you'll find that there is
-still one left in my shop. You see this little book?"
-
-"Well?"
-
-"That's the list of the folk from whom I buy. D'you see? Well,
-then, here on this page are the country folk, and the numbers
-after their names are where their accounts are in the big ledger.
-Now, then! You see this other page in red ink? Well, that is a
-list of my town suppliers. Now, look at that third name. Just
-read it out to me."
-
-"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
-
-"Quite so. Now turn that up in the ledger."
-
-Holmes turned to the page indicated. "Here you are, 'Mrs.
-Oakshott, 117, Brixton Road, egg and poultry supplier.'"
-
-"Now, then, what's the last entry?"
-
-"'December 22nd. Twenty-four geese at 7s. 6d.'"
-
-"Quite so. There you are. And underneath?"
-
-"'Sold to Mr. Windigate of the Alpha, at 12s.'"
-
-"What have you to say now?"
-
-Sherlock Holmes looked deeply chagrined. He drew a sovereign from
-his pocket and threw it down upon the slab, turning away with the
-air of a man whose disgust is too deep for words. A few yards off
-he stopped under a lamp-post and laughed in the hearty, noiseless
-fashion which was peculiar to him.
-
-"When you see a man with whiskers of that cut and the 'Pink 'un'
-protruding out of his pocket, you can always draw him by a bet,"
-said he. "I daresay that if I had put 100 pounds down in front of
-him, that man would not have given me such complete information
-as was drawn from him by the idea that he was doing me on a
-wager. Well, Watson, we are, I fancy, nearing the end of our
-quest, and the only point which remains to be determined is
-whether we should go on to this Mrs. Oakshott to-night, or
-whether we should reserve it for to-morrow. It is clear from what
-that surly fellow said that there are others besides ourselves
-who are anxious about the matter, and I should--"
-
-His remarks were suddenly cut short by a loud hubbub which broke
-out from the stall which we had just left. Turning round we saw a
-little rat-faced fellow standing in the centre of the circle of
-yellow light which was thrown by the swinging lamp, while
-Breckinridge, the salesman, framed in the door of his stall, was
-shaking his fists fiercely at the cringing figure.
-
-"I've had enough of you and your geese," he shouted. "I wish you
-were all at the devil together. If you come pestering me any more
-with your silly talk I'll set the dog at you. You bring Mrs.
-Oakshott here and I'll answer her, but what have you to do with
-it? Did I buy the geese off you?"
-
-"No; but one of them was mine all the same," whined the little
-man.
-
-"Well, then, ask Mrs. Oakshott for it."
-
-"She told me to ask you."
-
-"Well, you can ask the King of Proosia, for all I care. I've had
-enough of it. Get out of this!" He rushed fiercely forward, and
-the inquirer flitted away into the darkness.
-
-"Ha! this may save us a visit to Brixton Road," whispered Holmes.
-"Come with me, and we will see what is to be made of this
-fellow." Striding through the scattered knots of people who
-lounged round the flaring stalls, my companion speedily overtook
-the little man and touched him upon the shoulder. He sprang
-round, and I could see in the gas-light that every vestige of
-colour had been driven from his face.
-
-"Who are you, then? What do you want?" he asked in a quavering
-voice.
-
-"You will excuse me," said Holmes blandly, "but I could not help
-overhearing the questions which you put to the salesman just now.
-I think that I could be of assistance to you."
-
-"You? Who are you? How could you know anything of the matter?"
-
-"My name is Sherlock Holmes. It is my business to know what other
-people don't know."
-
-"But you can know nothing of this?"
-
-"Excuse me, I know everything of it. You are endeavouring to
-trace some geese which were sold by Mrs. Oakshott, of Brixton
-Road, to a salesman named Breckinridge, by him in turn to Mr.
-Windigate, of the Alpha, and by him to his club, of which Mr.
-Henry Baker is a member."
-
-"Oh, sir, you are the very man whom I have longed to meet," cried
-the little fellow with outstretched hands and quivering fingers.
-"I can hardly explain to you how interested I am in this matter."
-
-Sherlock Holmes hailed a four-wheeler which was passing. "In that
-case we had better discuss it in a cosy room rather than in this
-wind-swept market-place," said he. "But pray tell me, before we
-go farther, who it is that I have the pleasure of assisting."
-
-The man hesitated for an instant. "My name is John Robinson," he
-answered with a sidelong glance.
-
-"No, no; the real name," said Holmes sweetly. "It is always
-awkward doing business with an alias."
-
-A flush sprang to the white cheeks of the stranger. "Well then,"
-said he, "my real name is James Ryder."
-
-"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
-step into the cab, and I shall soon be able to tell you
-everything which you would wish to know."
-
-The little man stood glancing from one to the other of us with
-half-frightened, half-hopeful eyes, as one who is not sure
-whether he is on the verge of a windfall or of a catastrophe.
-Then he stepped into the cab, and in half an hour we were back in
-the sitting-room at Baker Street. Nothing had been said during
-our drive, but the high, thin breathing of our new companion, and
-the claspings and unclaspings of his hands, spoke of the nervous
-tension within him.
-
-"Here we are!" said Holmes cheerily as we filed into the room.
-"The fire looks very seasonable in this weather. You look cold,
-Mr. Ryder. Pray take the basket-chair. I will just put on my
-slippers before we settle this little matter of yours. Now, then!
-You want to know what became of those geese?"
-
-"Yes, sir."
-
-"Or rather, I fancy, of that goose. It was one bird, I imagine in
-which you were interested--white, with a black bar across the
-tail."
-
-Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
-me where it went to?"
-
-"It came here."
-
-"Here?"
-
-"Yes, and a most remarkable bird it proved. I don't wonder that
-you should take an interest in it. It laid an egg after it was
-dead--the bonniest, brightest little blue egg that ever was seen.
-I have it here in my museum."
-
-Our visitor staggered to his feet and clutched the mantelpiece
-with his right hand. Holmes unlocked his strong-box and held up
-the blue carbuncle, which shone out like a star, with a cold,
-brilliant, many-pointed radiance. Ryder stood glaring with a
-drawn face, uncertain whether to claim or to disown it.
-
-"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
-you'll be into the fire! Give him an arm back into his chair,
-Watson. He's not got blood enough to go in for felony with
-impunity. Give him a dash of brandy. So! Now he looks a little
-more human. What a shrimp it is, to be sure!"
-
-For a moment he had staggered and nearly fallen, but the brandy
-brought a tinge of colour into his cheeks, and he sat staring
-with frightened eyes at his accuser.
-
-"I have almost every link in my hands, and all the proofs which I
-could possibly need, so there is little which you need tell me.
-Still, that little may as well be cleared up to make the case
-complete. You had heard, Ryder, of this blue stone of the
-Countess of Morcar's?"
-
-"It was Catherine Cusack who told me of it," said he in a
-crackling voice.
-
-"I see--her ladyship's waiting-maid. Well, the temptation of
-sudden wealth so easily acquired was too much for you, as it has
-been for better men before you; but you were not very scrupulous
-in the means you used. It seems to me, Ryder, that there is the
-making of a very pretty villain in you. You knew that this man
-Horner, the plumber, had been concerned in some such matter
-before, and that suspicion would rest the more readily upon him.
-What did you do, then? You made some small job in my lady's
-room--you and your confederate Cusack--and you managed that he
-should be the man sent for. Then, when he had left, you rifled
-the jewel-case, raised the alarm, and had this unfortunate man
-arrested. You then--"
-
-Ryder threw himself down suddenly upon the rug and clutched at my
-companion's knees. "For God's sake, have mercy!" he shrieked.
-"Think of my father! Of my mother! It would break their hearts. I
-never went wrong before! I never will again. I swear it. I'll
-swear it on a Bible. Oh, don't bring it into court! For Christ's
-sake, don't!"
-
-"Get back into your chair!" said Holmes sternly. "It is very well
-to cringe and crawl now, but you thought little enough of this
-poor Horner in the dock for a crime of which he knew nothing."
-
-"I will fly, Mr. Holmes. I will leave the country, sir. Then the
-charge against him will break down."
-
-"Hum! We will talk about that. And now let us hear a true account
-of the next act. How came the stone into the goose, and how came
-the goose into the open market? Tell us the truth, for there lies
-your only hope of safety."
-
-Ryder passed his tongue over his parched lips. "I will tell you
-it just as it happened, sir," said he. "When Horner had been
-arrested, it seemed to me that it would be best for me to get
-away with the stone at once, for I did not know at what moment
-the police might not take it into their heads to search me and my
-room. There was no place about the hotel where it would be safe.
-I went out, as if on some commission, and I made for my sister's
-house. She had married a man named Oakshott, and lived in Brixton
-Road, where she fattened fowls for the market. All the way there
-every man I met seemed to me to be a policeman or a detective;
-and, for all that it was a cold night, the sweat was pouring down
-my face before I came to the Brixton Road. My sister asked me
-what was the matter, and why I was so pale; but I told her that I
-had been upset by the jewel robbery at the hotel. Then I went
-into the back yard and smoked a pipe and wondered what it would
-be best to do.
-
-"I had a friend once called Maudsley, who went to the bad, and
-has just been serving his time in Pentonville. One day he had met
-me, and fell into talk about the ways of thieves, and how they
-could get rid of what they stole. I knew that he would be true to
-me, for I knew one or two things about him; so I made up my mind
-to go right on to Kilburn, where he lived, and take him into my
-confidence. He would show me how to turn the stone into money.
-But how to get to him in safety? I thought of the agonies I had
-gone through in coming from the hotel. I might at any moment be
-seized and searched, and there would be the stone in my waistcoat
-pocket. I was leaning against the wall at the time and looking at
-the geese which were waddling about round my feet, and suddenly
-an idea came into my head which showed me how I could beat the
-best detective that ever lived.
-
-"My sister had told me some weeks before that I might have the
-pick of her geese for a Christmas present, and I knew that she
-was always as good as her word. I would take my goose now, and in
-it I would carry my stone to Kilburn. There was a little shed in
-the yard, and behind this I drove one of the birds--a fine big
-one, white, with a barred tail. I caught it, and prying its bill
-open, I thrust the stone down its throat as far as my finger
-could reach. The bird gave a gulp, and I felt the stone pass
-along its gullet and down into its crop. But the creature flapped
-and struggled, and out came my sister to know what was the
-matter. As I turned to speak to her the brute broke loose and
-fluttered off among the others.
-
-"'Whatever were you doing with that bird, Jem?' says she.
-
-"'Well,' said I, 'you said you'd give me one for Christmas, and I
-was feeling which was the fattest.'
-
-"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
-call it. It's the big white one over yonder. There's twenty-six
-of them, which makes one for you, and one for us, and two dozen
-for the market.'
-
-"'Thank you, Maggie,' says I; 'but if it is all the same to you,
-I'd rather have that one I was handling just now.'
-
-"'The other is a good three pound heavier,' said she, 'and we
-fattened it expressly for you.'
-
-"'Never mind. I'll have the other, and I'll take it now,' said I.
-
-"'Oh, just as you like,' said she, a little huffed. 'Which is it
-you want, then?'
-
-"'That white one with the barred tail, right in the middle of the
-flock.'
-
-"'Oh, very well. Kill it and take it with you.'
-
-"Well, I did what she said, Mr. Holmes, and I carried the bird
-all the way to Kilburn. I told my pal what I had done, for he was
-a man that it was easy to tell a thing like that to. He laughed
-until he choked, and we got a knife and opened the goose. My
-heart turned to water, for there was no sign of the stone, and I
-knew that some terrible mistake had occurred. I left the bird,
-rushed back to my sister's, and hurried into the back yard. There
-was not a bird to be seen there.
-
-"'Where are they all, Maggie?' I cried.
-
-"'Gone to the dealer's, Jem.'
-
-"'Which dealer's?'
-
-"'Breckinridge, of Covent Garden.'
-
-"'But was there another with a barred tail?' I asked, 'the same
-as the one I chose?'
-
-"'Yes, Jem; there were two barred-tailed ones, and I could never
-tell them apart.'
-
-"Well, then, of course I saw it all, and I ran off as hard as my
-feet would carry me to this man Breckinridge; but he had sold the
-lot at once, and not one word would he tell me as to where they
-had gone. You heard him yourselves to-night. Well, he has always
-answered me like that. My sister thinks that I am going mad.
-Sometimes I think that I am myself. And now--and now I am myself
-a branded thief, without ever having touched the wealth for which
-I sold my character. God help me! God help me!" He burst into
-convulsive sobbing, with his face buried in his hands.
-
-There was a long silence, broken only by his heavy breathing and
-by the measured tapping of Sherlock Holmes' finger-tips upon the
-edge of the table. Then my friend rose and threw open the door.
-
-"Get out!" said he.
-
-"What, sir! Oh, Heaven bless you!"
-
-"No more words. Get out!"
-
-And no more words were needed. There was a rush, a clatter upon
-the stairs, the bang of a door, and the crisp rattle of running
-footfalls from the street.
-
-"After all, Watson," said Holmes, reaching up his hand for his
-clay pipe, "I am not retained by the police to supply their
-deficiencies. If Horner were in danger it would be another thing;
-but this fellow will not appear against him, and the case must
-collapse. I suppose that I am commuting a felony, but it is just
-possible that I am saving a soul. This fellow will not go wrong
-again; he is too terribly frightened. Send him to gaol now, and
-you make him a gaol-bird for life. Besides, it is the season of
-forgiveness. Chance has put in our way a most singular and
-whimsical problem, and its solution is its own reward. If you
-will have the goodness to touch the bell, Doctor, we will begin
-another investigation, in which, also a bird will be the chief
-feature."
-
-
-
-VIII. THE ADVENTURE OF THE SPECKLED BAND
-
-On glancing over my notes of the seventy odd cases in which I
-have during the last eight years studied the methods of my friend
-Sherlock Holmes, I find many tragic, some comic, a large number
-merely strange, but none commonplace; for, working as he did
-rather for the love of his art than for the acquirement of
-wealth, he refused to associate himself with any investigation
-which did not tend towards the unusual, and even the fantastic.
-Of all these varied cases, however, I cannot recall any which
-presented more singular features than that which was associated
-with the well-known Surrey family of the Roylotts of Stoke Moran.
-The events in question occurred in the early days of my
-association with Holmes, when we were sharing rooms as bachelors
-in Baker Street. It is possible that I might have placed them
-upon record before, but a promise of secrecy was made at the
-time, from which I have only been freed during the last month by
-the untimely death of the lady to whom the pledge was given. It
-is perhaps as well that the facts should now come to light, for I
-have reasons to know that there are widespread rumours as to the
-death of Dr. Grimesby Roylott which tend to make the matter even
-more terrible than the truth.
-
-It was early in April in the year '83 that I woke one morning to
-find Sherlock Holmes standing, fully dressed, by the side of my
-bed. He was a late riser, as a rule, and as the clock on the
-mantelpiece showed me that it was only a quarter-past seven, I
-blinked up at him in some surprise, and perhaps just a little
-resentment, for I was myself regular in my habits.
-
-"Very sorry to knock you up, Watson," said he, "but it's the
-common lot this morning. Mrs. Hudson has been knocked up, she
-retorted upon me, and I on you."
-
-"What is it, then--a fire?"
-
-"No; a client. It seems that a young lady has arrived in a
-considerable state of excitement, who insists upon seeing me. She
-is waiting now in the sitting-room. Now, when young ladies wander
-about the metropolis at this hour of the morning, and knock
-sleepy people up out of their beds, I presume that it is
-something very pressing which they have to communicate. Should it
-prove to be an interesting case, you would, I am sure, wish to
-follow it from the outset. I thought, at any rate, that I should
-call you and give you the chance."
-
-"My dear fellow, I would not miss it for anything."
-
-I had no keener pleasure than in following Holmes in his
-professional investigations, and in admiring the rapid
-deductions, as swift as intuitions, and yet always founded on a
-logical basis with which he unravelled the problems which were
-submitted to him. I rapidly threw on my clothes and was ready in
-a few minutes to accompany my friend down to the sitting-room. A
-lady dressed in black and heavily veiled, who had been sitting in
-the window, rose as we entered.
-
-"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
-Holmes. This is my intimate friend and associate, Dr. Watson,
-before whom you can speak as freely as before myself. Ha! I am
-glad to see that Mrs. Hudson has had the good sense to light the
-fire. Pray draw up to it, and I shall order you a cup of hot
-coffee, for I observe that you are shivering."
-
-"It is not cold which makes me shiver," said the woman in a low
-voice, changing her seat as requested.
-
-"What, then?"
-
-"It is fear, Mr. Holmes. It is terror." She raised her veil as
-she spoke, and we could see that she was indeed in a pitiable
-state of agitation, her face all drawn and grey, with restless
-frightened eyes, like those of some hunted animal. Her features
-and figure were those of a woman of thirty, but her hair was shot
-with premature grey, and her expression was weary and haggard.
-Sherlock Holmes ran her over with one of his quick,
-all-comprehensive glances.
-
-"You must not fear," said he soothingly, bending forward and
-patting her forearm. "We shall soon set matters right, I have no
-doubt. You have come in by train this morning, I see."
-
-"You know me, then?"
-
-"No, but I observe the second half of a return ticket in the palm
-of your left glove. You must have started early, and yet you had
-a good drive in a dog-cart, along heavy roads, before you reached
-the station."
-
-The lady gave a violent start and stared in bewilderment at my
-companion.
-
-"There is no mystery, my dear madam," said he, smiling. "The left
-arm of your jacket is spattered with mud in no less than seven
-places. The marks are perfectly fresh. There is no vehicle save a
-dog-cart which throws up mud in that way, and then only when you
-sit on the left-hand side of the driver."
-
-"Whatever your reasons may be, you are perfectly correct," said
-she. "I started from home before six, reached Leatherhead at
-twenty past, and came in by the first train to Waterloo. Sir, I
-can stand this strain no longer; I shall go mad if it continues.
-I have no one to turn to--none, save only one, who cares for me,
-and he, poor fellow, can be of little aid. I have heard of you,
-Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
-helped in the hour of her sore need. It was from her that I had
-your address. Oh, sir, do you not think that you could help me,
-too, and at least throw a little light through the dense darkness
-which surrounds me? At present it is out of my power to reward
-you for your services, but in a month or six weeks I shall be
-married, with the control of my own income, and then at least you
-shall not find me ungrateful."
-
-Holmes turned to his desk and, unlocking it, drew out a small
-case-book, which he consulted.
-
-"Farintosh," said he. "Ah yes, I recall the case; it was
-concerned with an opal tiara. I think it was before your time,
-Watson. I can only say, madam, that I shall be happy to devote
-the same care to your case as I did to that of your friend. As to
-reward, my profession is its own reward; but you are at liberty
-to defray whatever expenses I may be put to, at the time which
-suits you best. And now I beg that you will lay before us
-everything that may help us in forming an opinion upon the
-matter."
-
-"Alas!" replied our visitor, "the very horror of my situation
-lies in the fact that my fears are so vague, and my suspicions
-depend so entirely upon small points, which might seem trivial to
-another, that even he to whom of all others I have a right to
-look for help and advice looks upon all that I tell him about it
-as the fancies of a nervous woman. He does not say so, but I can
-read it from his soothing answers and averted eyes. But I have
-heard, Mr. Holmes, that you can see deeply into the manifold
-wickedness of the human heart. You may advise me how to walk amid
-the dangers which encompass me."
-
-"I am all attention, madam."
-
-"My name is Helen Stoner, and I am living with my stepfather, who
-is the last survivor of one of the oldest Saxon families in
-England, the Roylotts of Stoke Moran, on the western border of
-Surrey."
-
-Holmes nodded his head. "The name is familiar to me," said he.
-
-"The family was at one time among the richest in England, and the
-estates extended over the borders into Berkshire in the north,
-and Hampshire in the west. In the last century, however, four
-successive heirs were of a dissolute and wasteful disposition,
-and the family ruin was eventually completed by a gambler in the
-days of the Regency. Nothing was left save a few acres of ground,
-and the two-hundred-year-old house, which is itself crushed under
-a heavy mortgage. The last squire dragged out his existence
-there, living the horrible life of an aristocratic pauper; but
-his only son, my stepfather, seeing that he must adapt himself to
-the new conditions, obtained an advance from a relative, which
-enabled him to take a medical degree and went out to Calcutta,
-where, by his professional skill and his force of character, he
-established a large practice. In a fit of anger, however, caused
-by some robberies which had been perpetrated in the house, he
-beat his native butler to death and narrowly escaped a capital
-sentence. As it was, he suffered a long term of imprisonment and
-afterwards returned to England a morose and disappointed man.
-
-"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
-the young widow of Major-General Stoner, of the Bengal Artillery.
-My sister Julia and I were twins, and we were only two years old
-at the time of my mother's re-marriage. She had a considerable
-sum of money--not less than 1000 pounds a year--and this she
-bequeathed to Dr. Roylott entirely while we resided with him,
-with a provision that a certain annual sum should be allowed to
-each of us in the event of our marriage. Shortly after our return
-to England my mother died--she was killed eight years ago in a
-railway accident near Crewe. Dr. Roylott then abandoned his
-attempts to establish himself in practice in London and took us
-to live with him in the old ancestral house at Stoke Moran. The
-money which my mother had left was enough for all our wants, and
-there seemed to be no obstacle to our happiness.
-
-"But a terrible change came over our stepfather about this time.
-Instead of making friends and exchanging visits with our
-neighbours, who had at first been overjoyed to see a Roylott of
-Stoke Moran back in the old family seat, he shut himself up in
-his house and seldom came out save to indulge in ferocious
-quarrels with whoever might cross his path. Violence of temper
-approaching to mania has been hereditary in the men of the
-family, and in my stepfather's case it had, I believe, been
-intensified by his long residence in the tropics. A series of
-disgraceful brawls took place, two of which ended in the
-police-court, until at last he became the terror of the village,
-and the folks would fly at his approach, for he is a man of
-immense strength, and absolutely uncontrollable in his anger.
-
-"Last week he hurled the local blacksmith over a parapet into a
-stream, and it was only by paying over all the money which I
-could gather together that I was able to avert another public
-exposure. He had no friends at all save the wandering gipsies,
-and he would give these vagabonds leave to encamp upon the few
-acres of bramble-covered land which represent the family estate,
-and would accept in return the hospitality of their tents,
-wandering away with them sometimes for weeks on end. He has a
-passion also for Indian animals, which are sent over to him by a
-correspondent, and he has at this moment a cheetah and a baboon,
-which wander freely over his grounds and are feared by the
-villagers almost as much as their master.
-
-"You can imagine from what I say that my poor sister Julia and I
-had no great pleasure in our lives. No servant would stay with
-us, and for a long time we did all the work of the house. She was
-but thirty at the time of her death, and yet her hair had already
-begun to whiten, even as mine has."
-
-"Your sister is dead, then?"
-
-"She died just two years ago, and it is of her death that I wish
-to speak to you. You can understand that, living the life which I
-have described, we were little likely to see anyone of our own
-age and position. We had, however, an aunt, my mother's maiden
-sister, Miss Honoria Westphail, who lives near Harrow, and we
-were occasionally allowed to pay short visits at this lady's
-house. Julia went there at Christmas two years ago, and met there
-a half-pay major of marines, to whom she became engaged. My
-stepfather learned of the engagement when my sister returned and
-offered no objection to the marriage; but within a fortnight of
-the day which had been fixed for the wedding, the terrible event
-occurred which has deprived me of my only companion."
-
-Sherlock Holmes had been leaning back in his chair with his eyes
-closed and his head sunk in a cushion, but he half opened his
-lids now and glanced across at his visitor.
-
-"Pray be precise as to details," said he.
-
-"It is easy for me to be so, for every event of that dreadful
-time is seared into my memory. The manor-house is, as I have
-already said, very old, and only one wing is now inhabited. The
-bedrooms in this wing are on the ground floor, the sitting-rooms
-being in the central block of the buildings. Of these bedrooms
-the first is Dr. Roylott's, the second my sister's, and the third
-my own. There is no communication between them, but they all open
-out into the same corridor. Do I make myself plain?"
-
-"Perfectly so."
-
-"The windows of the three rooms open out upon the lawn. That
-fatal night Dr. Roylott had gone to his room early, though we
-knew that he had not retired to rest, for my sister was troubled
-by the smell of the strong Indian cigars which it was his custom
-to smoke. She left her room, therefore, and came into mine, where
-she sat for some time, chatting about her approaching wedding. At
-eleven o'clock she rose to leave me, but she paused at the door
-and looked back.
-
-"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
-in the dead of the night?'
-
-"'Never,' said I.
-
-"'I suppose that you could not possibly whistle, yourself, in
-your sleep?'
-
-"'Certainly not. But why?'
-
-"'Because during the last few nights I have always, about three
-in the morning, heard a low, clear whistle. I am a light sleeper,
-and it has awakened me. I cannot tell where it came from--perhaps
-from the next room, perhaps from the lawn. I thought that I would
-just ask you whether you had heard it.'
-
-"'No, I have not. It must be those wretched gipsies in the
-plantation.'
-
-"'Very likely. And yet if it were on the lawn, I wonder that you
-did not hear it also.'
-
-"'Ah, but I sleep more heavily than you.'
-
-"'Well, it is of no great consequence, at any rate.' She smiled
-back at me, closed my door, and a few moments later I heard her
-key turn in the lock."
-
-"Indeed," said Holmes. "Was it your custom always to lock
-yourselves in at night?"
-
-"Always."
-
-"And why?"
-
-"I think that I mentioned to you that the doctor kept a cheetah
-and a baboon. We had no feeling of security unless our doors were
-locked."
-
-"Quite so. Pray proceed with your statement."
-
-"I could not sleep that night. A vague feeling of impending
-misfortune impressed me. My sister and I, you will recollect,
-were twins, and you know how subtle are the links which bind two
-souls which are so closely allied. It was a wild night. The wind
-was howling outside, and the rain was beating and splashing
-against the windows. Suddenly, amid all the hubbub of the gale,
-there burst forth the wild scream of a terrified woman. I knew
-that it was my sister's voice. I sprang from my bed, wrapped a
-shawl round me, and rushed into the corridor. As I opened my door
-I seemed to hear a low whistle, such as my sister described, and
-a few moments later a clanging sound, as if a mass of metal had
-fallen. As I ran down the passage, my sister's door was unlocked,
-and revolved slowly upon its hinges. I stared at it
-horror-stricken, not knowing what was about to issue from it. By
-the light of the corridor-lamp I saw my sister appear at the
-opening, her face blanched with terror, her hands groping for
-help, her whole figure swaying to and fro like that of a
-drunkard. I ran to her and threw my arms round her, but at that
-moment her knees seemed to give way and she fell to the ground.
-She writhed as one who is in terrible pain, and her limbs were
-dreadfully convulsed. At first I thought that she had not
-recognised me, but as I bent over her she suddenly shrieked out
-in a voice which I shall never forget, 'Oh, my God! Helen! It was
-the band! The speckled band!' There was something else which she
-would fain have said, and she stabbed with her finger into the
-air in the direction of the doctor's room, but a fresh convulsion
-seized her and choked her words. I rushed out, calling loudly for
-my stepfather, and I met him hastening from his room in his
-dressing-gown. When he reached my sister's side she was
-unconscious, and though he poured brandy down her throat and sent
-for medical aid from the village, all efforts were in vain, for
-she slowly sank and died without having recovered her
-consciousness. Such was the dreadful end of my beloved sister."
-
-"One moment," said Holmes, "are you sure about this whistle and
-metallic sound? Could you swear to it?"
-
-"That was what the county coroner asked me at the inquiry. It is
-my strong impression that I heard it, and yet, among the crash of
-the gale and the creaking of an old house, I may possibly have
-been deceived."
-
-"Was your sister dressed?"
-
-"No, she was in her night-dress. In her right hand was found the
-charred stump of a match, and in her left a match-box."
-
-"Showing that she had struck a light and looked about her when
-the alarm took place. That is important. And what conclusions did
-the coroner come to?"
-
-"He investigated the case with great care, for Dr. Roylott's
-conduct had long been notorious in the county, but he was unable
-to find any satisfactory cause of death. My evidence showed that
-the door had been fastened upon the inner side, and the windows
-were blocked by old-fashioned shutters with broad iron bars,
-which were secured every night. The walls were carefully sounded,
-and were shown to be quite solid all round, and the flooring was
-also thoroughly examined, with the same result. The chimney is
-wide, but is barred up by four large staples. It is certain,
-therefore, that my sister was quite alone when she met her end.
-Besides, there were no marks of any violence upon her."
-
-"How about poison?"
-
-"The doctors examined her for it, but without success."
-
-"What do you think that this unfortunate lady died of, then?"
-
-"It is my belief that she died of pure fear and nervous shock,
-though what it was that frightened her I cannot imagine."
-
-"Were there gipsies in the plantation at the time?"
-
-"Yes, there are nearly always some there."
-
-"Ah, and what did you gather from this allusion to a band--a
-speckled band?"
-
-"Sometimes I have thought that it was merely the wild talk of
-delirium, sometimes that it may have referred to some band of
-people, perhaps to these very gipsies in the plantation. I do not
-know whether the spotted handkerchiefs which so many of them wear
-over their heads might have suggested the strange adjective which
-she used."
-
-Holmes shook his head like a man who is far from being satisfied.
-
-"These are very deep waters," said he; "pray go on with your
-narrative."
-
-"Two years have passed since then, and my life has been until
-lately lonelier than ever. A month ago, however, a dear friend,
-whom I have known for many years, has done me the honour to ask
-my hand in marriage. His name is Armitage--Percy Armitage--the
-second son of Mr. Armitage, of Crane Water, near Reading. My
-stepfather has offered no opposition to the match, and we are to
-be married in the course of the spring. Two days ago some repairs
-were started in the west wing of the building, and my bedroom
-wall has been pierced, so that I have had to move into the
-chamber in which my sister died, and to sleep in the very bed in
-which she slept. Imagine, then, my thrill of terror when last
-night, as I lay awake, thinking over her terrible fate, I
-suddenly heard in the silence of the night the low whistle which
-had been the herald of her own death. I sprang up and lit the
-lamp, but nothing was to be seen in the room. I was too shaken to
-go to bed again, however, so I dressed, and as soon as it was
-daylight I slipped down, got a dog-cart at the Crown Inn, which
-is opposite, and drove to Leatherhead, from whence I have come on
-this morning with the one object of seeing you and asking your
-advice."
-
-"You have done wisely," said my friend. "But have you told me
-all?"
-
-"Yes, all."
-
-"Miss Roylott, you have not. You are screening your stepfather."
-
-"Why, what do you mean?"
-
-For answer Holmes pushed back the frill of black lace which
-fringed the hand that lay upon our visitor's knee. Five little
-livid spots, the marks of four fingers and a thumb, were printed
-upon the white wrist.
-
-"You have been cruelly used," said Holmes.
-
-The lady coloured deeply and covered over her injured wrist. "He
-is a hard man," she said, "and perhaps he hardly knows his own
-strength."
-
-There was a long silence, during which Holmes leaned his chin
-upon his hands and stared into the crackling fire.
-
-"This is a very deep business," he said at last. "There are a
-thousand details which I should desire to know before I decide
-upon our course of action. Yet we have not a moment to lose. If
-we were to come to Stoke Moran to-day, would it be possible for
-us to see over these rooms without the knowledge of your
-stepfather?"
-
-"As it happens, he spoke of coming into town to-day upon some
-most important business. It is probable that he will be away all
-day, and that there would be nothing to disturb you. We have a
-housekeeper now, but she is old and foolish, and I could easily
-get her out of the way."
-
-"Excellent. You are not averse to this trip, Watson?"
-
-"By no means."
-
-"Then we shall both come. What are you going to do yourself?"
-
-"I have one or two things which I would wish to do now that I am
-in town. But I shall return by the twelve o'clock train, so as to
-be there in time for your coming."
-
-"And you may expect us early in the afternoon. I have myself some
-small business matters to attend to. Will you not wait and
-breakfast?"
-
-"No, I must go. My heart is lightened already since I have
-confided my trouble to you. I shall look forward to seeing you
-again this afternoon." She dropped her thick black veil over her
-face and glided from the room.
-
-"And what do you think of it all, Watson?" asked Sherlock Holmes,
-leaning back in his chair.
-
-"It seems to me to be a most dark and sinister business."
-
-"Dark enough and sinister enough."
-
-"Yet if the lady is correct in saying that the flooring and walls
-are sound, and that the door, window, and chimney are impassable,
-then her sister must have been undoubtedly alone when she met her
-mysterious end."
-
-"What becomes, then, of these nocturnal whistles, and what of the
-very peculiar words of the dying woman?"
-
-"I cannot think."
-
-"When you combine the ideas of whistles at night, the presence of
-a band of gipsies who are on intimate terms with this old doctor,
-the fact that we have every reason to believe that the doctor has
-an interest in preventing his stepdaughter's marriage, the dying
-allusion to a band, and, finally, the fact that Miss Helen Stoner
-heard a metallic clang, which might have been caused by one of
-those metal bars that secured the shutters falling back into its
-place, I think that there is good ground to think that the
-mystery may be cleared along those lines."
-
-"But what, then, did the gipsies do?"
-
-"I cannot imagine."
-
-"I see many objections to any such theory."
-
-"And so do I. It is precisely for that reason that we are going
-to Stoke Moran this day. I want to see whether the objections are
-fatal, or if they may be explained away. But what in the name of
-the devil!"
-
-The ejaculation had been drawn from my companion by the fact that
-our door had been suddenly dashed open, and that a huge man had
-framed himself in the aperture. His costume was a peculiar
-mixture of the professional and of the agricultural, having a
-black top-hat, a long frock-coat, and a pair of high gaiters,
-with a hunting-crop swinging in his hand. So tall was he that his
-hat actually brushed the cross bar of the doorway, and his
-breadth seemed to span it across from side to side. A large face,
-seared with a thousand wrinkles, burned yellow with the sun, and
-marked with every evil passion, was turned from one to the other
-of us, while his deep-set, bile-shot eyes, and his high, thin,
-fleshless nose, gave him somewhat the resemblance to a fierce old
-bird of prey.
-
-"Which of you is Holmes?" asked this apparition.
-
-"My name, sir; but you have the advantage of me," said my
-companion quietly.
-
-"I am Dr. Grimesby Roylott, of Stoke Moran."
-
-"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
-
-"I will do nothing of the kind. My stepdaughter has been here. I
-have traced her. What has she been saying to you?"
-
-"It is a little cold for the time of the year," said Holmes.
-
-"What has she been saying to you?" screamed the old man
-furiously.
-
-"But I have heard that the crocuses promise well," continued my
-companion imperturbably.
-
-"Ha! You put me off, do you?" said our new visitor, taking a step
-forward and shaking his hunting-crop. "I know you, you scoundrel!
-I have heard of you before. You are Holmes, the meddler."
-
-My friend smiled.
-
-"Holmes, the busybody!"
-
-His smile broadened.
-
-"Holmes, the Scotland Yard Jack-in-office!"
-
-Holmes chuckled heartily. "Your conversation is most
-entertaining," said he. "When you go out close the door, for
-there is a decided draught."
-
-"I will go when I have said my say. Don't you dare to meddle with
-my affairs. I know that Miss Stoner has been here. I traced her!
-I am a dangerous man to fall foul of! See here." He stepped
-swiftly forward, seized the poker, and bent it into a curve with
-his huge brown hands.
-
-"See that you keep yourself out of my grip," he snarled, and
-hurling the twisted poker into the fireplace he strode out of the
-room.
-
-"He seems a very amiable person," said Holmes, laughing. "I am
-not quite so bulky, but if he had remained I might have shown him
-that my grip was not much more feeble than his own." As he spoke
-he picked up the steel poker and, with a sudden effort,
-straightened it out again.
-
-"Fancy his having the insolence to confound me with the official
-detective force! This incident gives zest to our investigation,
-however, and I only trust that our little friend will not suffer
-from her imprudence in allowing this brute to trace her. And now,
-Watson, we shall order breakfast, and afterwards I shall walk
-down to Doctors' Commons, where I hope to get some data which may
-help us in this matter."
-
-
-It was nearly one o'clock when Sherlock Holmes returned from his
-excursion. He held in his hand a sheet of blue paper, scrawled
-over with notes and figures.
-
-"I have seen the will of the deceased wife," said he. "To
-determine its exact meaning I have been obliged to work out the
-present prices of the investments with which it is concerned. The
-total income, which at the time of the wife's death was little
-short of 1100 pounds, is now, through the fall in agricultural
-prices, not more than 750 pounds. Each daughter can claim an
-income of 250 pounds, in case of marriage. It is evident,
-therefore, that if both girls had married, this beauty would have
-had a mere pittance, while even one of them would cripple him to
-a very serious extent. My morning's work has not been wasted,
-since it has proved that he has the very strongest motives for
-standing in the way of anything of the sort. And now, Watson,
-this is too serious for dawdling, especially as the old man is
-aware that we are interesting ourselves in his affairs; so if you
-are ready, we shall call a cab and drive to Waterloo. I should be
-very much obliged if you would slip your revolver into your
-pocket. An Eley's No. 2 is an excellent argument with gentlemen
-who can twist steel pokers into knots. That and a tooth-brush
-are, I think, all that we need."
-
-At Waterloo we were fortunate in catching a train for
-Leatherhead, where we hired a trap at the station inn and drove
-for four or five miles through the lovely Surrey lanes. It was a
-perfect day, with a bright sun and a few fleecy clouds in the
-heavens. The trees and wayside hedges were just throwing out
-their first green shoots, and the air was full of the pleasant
-smell of the moist earth. To me at least there was a strange
-contrast between the sweet promise of the spring and this
-sinister quest upon which we were engaged. My companion sat in
-the front of the trap, his arms folded, his hat pulled down over
-his eyes, and his chin sunk upon his breast, buried in the
-deepest thought. Suddenly, however, he started, tapped me on the
-shoulder, and pointed over the meadows.
-
-"Look there!" said he.
-
-A heavily timbered park stretched up in a gentle slope,
-thickening into a grove at the highest point. From amid the
-branches there jutted out the grey gables and high roof-tree of a
-very old mansion.
-
-"Stoke Moran?" said he.
-
-"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
-the driver.
-
-"There is some building going on there," said Holmes; "that is
-where we are going."
-
-"There's the village," said the driver, pointing to a cluster of
-roofs some distance to the left; "but if you want to get to the
-house, you'll find it shorter to get over this stile, and so by
-the foot-path over the fields. There it is, where the lady is
-walking."
-
-"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
-his eyes. "Yes, I think we had better do as you suggest."
-
-We got off, paid our fare, and the trap rattled back on its way
-to Leatherhead.
-
-"I thought it as well," said Holmes as we climbed the stile,
-"that this fellow should think we had come here as architects, or
-on some definite business. It may stop his gossip.
-Good-afternoon, Miss Stoner. You see that we have been as good as
-our word."
-
-Our client of the morning had hurried forward to meet us with a
-face which spoke her joy. "I have been waiting so eagerly for
-you," she cried, shaking hands with us warmly. "All has turned
-out splendidly. Dr. Roylott has gone to town, and it is unlikely
-that he will be back before evening."
-
-"We have had the pleasure of making the doctor's acquaintance,"
-said Holmes, and in a few words he sketched out what had
-occurred. Miss Stoner turned white to the lips as she listened.
-
-"Good heavens!" she cried, "he has followed me, then."
-
-"So it appears."
-
-"He is so cunning that I never know when I am safe from him. What
-will he say when he returns?"
-
-"He must guard himself, for he may find that there is someone
-more cunning than himself upon his track. You must lock yourself
-up from him to-night. If he is violent, we shall take you away to
-your aunt's at Harrow. Now, we must make the best use of our
-time, so kindly take us at once to the rooms which we are to
-examine."
-
-The building was of grey, lichen-blotched stone, with a high
-central portion and two curving wings, like the claws of a crab,
-thrown out on each side. In one of these wings the windows were
-broken and blocked with wooden boards, while the roof was partly
-caved in, a picture of ruin. The central portion was in little
-better repair, but the right-hand block was comparatively modern,
-and the blinds in the windows, with the blue smoke curling up
-from the chimneys, showed that this was where the family resided.
-Some scaffolding had been erected against the end wall, and the
-stone-work had been broken into, but there were no signs of any
-workmen at the moment of our visit. Holmes walked slowly up and
-down the ill-trimmed lawn and examined with deep attention the
-outsides of the windows.
-
-"This, I take it, belongs to the room in which you used to sleep,
-the centre one to your sister's, and the one next to the main
-building to Dr. Roylott's chamber?"
-
-"Exactly so. But I am now sleeping in the middle one."
-
-"Pending the alterations, as I understand. By the way, there does
-not seem to be any very pressing need for repairs at that end
-wall."
-
-"There were none. I believe that it was an excuse to move me from
-my room."
-
-"Ah! that is suggestive. Now, on the other side of this narrow
-wing runs the corridor from which these three rooms open. There
-are windows in it, of course?"
-
-"Yes, but very small ones. Too narrow for anyone to pass
-through."
-
-"As you both locked your doors at night, your rooms were
-unapproachable from that side. Now, would you have the kindness
-to go into your room and bar your shutters?"
-
-Miss Stoner did so, and Holmes, after a careful examination
-through the open window, endeavoured in every way to force the
-shutter open, but without success. There was no slit through
-which a knife could be passed to raise the bar. Then with his
-lens he tested the hinges, but they were of solid iron, built
-firmly into the massive masonry. "Hum!" said he, scratching his
-chin in some perplexity, "my theory certainly presents some
-difficulties. No one could pass these shutters if they were
-bolted. Well, we shall see if the inside throws any light upon
-the matter."
-
-A small side door led into the whitewashed corridor from which
-the three bedrooms opened. Holmes refused to examine the third
-chamber, so we passed at once to the second, that in which Miss
-Stoner was now sleeping, and in which her sister had met with her
-fate. It was a homely little room, with a low ceiling and a
-gaping fireplace, after the fashion of old country-houses. A
-brown chest of drawers stood in one corner, a narrow
-white-counterpaned bed in another, and a dressing-table on the
-left-hand side of the window. These articles, with two small
-wicker-work chairs, made up all the furniture in the room save
-for a square of Wilton carpet in the centre. The boards round and
-the panelling of the walls were of brown, worm-eaten oak, so old
-and discoloured that it may have dated from the original building
-of the house. Holmes drew one of the chairs into a corner and sat
-silent, while his eyes travelled round and round and up and down,
-taking in every detail of the apartment.
-
-"Where does that bell communicate with?" he asked at last
-pointing to a thick bell-rope which hung down beside the bed, the
-tassel actually lying upon the pillow.
-
-"It goes to the housekeeper's room."
-
-"It looks newer than the other things?"
-
-"Yes, it was only put there a couple of years ago."
-
-"Your sister asked for it, I suppose?"
-
-"No, I never heard of her using it. We used always to get what we
-wanted for ourselves."
-
-"Indeed, it seemed unnecessary to put so nice a bell-pull there.
-You will excuse me for a few minutes while I satisfy myself as to
-this floor." He threw himself down upon his face with his lens in
-his hand and crawled swiftly backward and forward, examining
-minutely the cracks between the boards. Then he did the same with
-the wood-work with which the chamber was panelled. Finally he
-walked over to the bed and spent some time in staring at it and
-in running his eye up and down the wall. Finally he took the
-bell-rope in his hand and gave it a brisk tug.
-
-"Why, it's a dummy," said he.
-
-"Won't it ring?"
-
-"No, it is not even attached to a wire. This is very interesting.
-You can see now that it is fastened to a hook just above where
-the little opening for the ventilator is."
-
-"How very absurd! I never noticed that before."
-
-"Very strange!" muttered Holmes, pulling at the rope. "There are
-one or two very singular points about this room. For example,
-what a fool a builder must be to open a ventilator into another
-room, when, with the same trouble, he might have communicated
-with the outside air!"
-
-"That is also quite modern," said the lady.
-
-"Done about the same time as the bell-rope?" remarked Holmes.
-
-"Yes, there were several little changes carried out about that
-time."
-
-"They seem to have been of a most interesting character--dummy
-bell-ropes, and ventilators which do not ventilate. With your
-permission, Miss Stoner, we shall now carry our researches into
-the inner apartment."
-
-Dr. Grimesby Roylott's chamber was larger than that of his
-step-daughter, but was as plainly furnished. A camp-bed, a small
-wooden shelf full of books, mostly of a technical character, an
-armchair beside the bed, a plain wooden chair against the wall, a
-round table, and a large iron safe were the principal things
-which met the eye. Holmes walked slowly round and examined each
-and all of them with the keenest interest.
-
-"What's in here?" he asked, tapping the safe.
-
-"My stepfather's business papers."
-
-"Oh! you have seen inside, then?"
-
-"Only once, some years ago. I remember that it was full of
-papers."
-
-"There isn't a cat in it, for example?"
-
-"No. What a strange idea!"
-
-"Well, look at this!" He took up a small saucer of milk which
-stood on the top of it.
-
-"No; we don't keep a cat. But there is a cheetah and a baboon."
-
-"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
-saucer of milk does not go very far in satisfying its wants, I
-daresay. There is one point which I should wish to determine." He
-squatted down in front of the wooden chair and examined the seat
-of it with the greatest attention.
-
-"Thank you. That is quite settled," said he, rising and putting
-his lens in his pocket. "Hullo! Here is something interesting!"
-
-The object which had caught his eye was a small dog lash hung on
-one corner of the bed. The lash, however, was curled upon itself
-and tied so as to make a loop of whipcord.
-
-"What do you make of that, Watson?"
-
-"It's a common enough lash. But I don't know why it should be
-tied."
-
-"That is not quite so common, is it? Ah, me! it's a wicked world,
-and when a clever man turns his brains to crime it is the worst
-of all. I think that I have seen enough now, Miss Stoner, and
-with your permission we shall walk out upon the lawn."
-
-I had never seen my friend's face so grim or his brow so dark as
-it was when we turned from the scene of this investigation. We
-had walked several times up and down the lawn, neither Miss
-Stoner nor myself liking to break in upon his thoughts before he
-roused himself from his reverie.
-
-"It is very essential, Miss Stoner," said he, "that you should
-absolutely follow my advice in every respect."
-
-"I shall most certainly do so."
-
-"The matter is too serious for any hesitation. Your life may
-depend upon your compliance."
-
-"I assure you that I am in your hands."
-
-"In the first place, both my friend and I must spend the night in
-your room."
-
-Both Miss Stoner and I gazed at him in astonishment.
-
-"Yes, it must be so. Let me explain. I believe that that is the
-village inn over there?"
-
-"Yes, that is the Crown."
-
-"Very good. Your windows would be visible from there?"
-
-"Certainly."
-
-"You must confine yourself to your room, on pretence of a
-headache, when your stepfather comes back. Then when you hear him
-retire for the night, you must open the shutters of your window,
-undo the hasp, put your lamp there as a signal to us, and then
-withdraw quietly with everything which you are likely to want
-into the room which you used to occupy. I have no doubt that, in
-spite of the repairs, you could manage there for one night."
-
-"Oh, yes, easily."
-
-"The rest you will leave in our hands."
-
-"But what will you do?"
-
-"We shall spend the night in your room, and we shall investigate
-the cause of this noise which has disturbed you."
-
-"I believe, Mr. Holmes, that you have already made up your mind,"
-said Miss Stoner, laying her hand upon my companion's sleeve.
-
-"Perhaps I have."
-
-"Then, for pity's sake, tell me what was the cause of my sister's
-death."
-
-"I should prefer to have clearer proofs before I speak."
-
-"You can at least tell me whether my own thought is correct, and
-if she died from some sudden fright."
-
-"No, I do not think so. I think that there was probably some more
-tangible cause. And now, Miss Stoner, we must leave you for if
-Dr. Roylott returned and saw us our journey would be in vain.
-Good-bye, and be brave, for if you will do what I have told you,
-you may rest assured that we shall soon drive away the dangers
-that threaten you."
-
-Sherlock Holmes and I had no difficulty in engaging a bedroom and
-sitting-room at the Crown Inn. They were on the upper floor, and
-from our window we could command a view of the avenue gate, and
-of the inhabited wing of Stoke Moran Manor House. At dusk we saw
-Dr. Grimesby Roylott drive past, his huge form looming up beside
-the little figure of the lad who drove him. The boy had some
-slight difficulty in undoing the heavy iron gates, and we heard
-the hoarse roar of the doctor's voice and saw the fury with which
-he shook his clinched fists at him. The trap drove on, and a few
-minutes later we saw a sudden light spring up among the trees as
-the lamp was lit in one of the sitting-rooms.
-
-"Do you know, Watson," said Holmes as we sat together in the
-gathering darkness, "I have really some scruples as to taking you
-to-night. There is a distinct element of danger."
-
-"Can I be of assistance?"
-
-"Your presence might be invaluable."
-
-"Then I shall certainly come."
-
-"It is very kind of you."
-
-"You speak of danger. You have evidently seen more in these rooms
-than was visible to me."
-
-"No, but I fancy that I may have deduced a little more. I imagine
-that you saw all that I did."
-
-"I saw nothing remarkable save the bell-rope, and what purpose
-that could answer I confess is more than I can imagine."
-
-"You saw the ventilator, too?"
-
-"Yes, but I do not think that it is such a very unusual thing to
-have a small opening between two rooms. It was so small that a
-rat could hardly pass through."
-
-"I knew that we should find a ventilator before ever we came to
-Stoke Moran."
-
-"My dear Holmes!"
-
-"Oh, yes, I did. You remember in her statement she said that her
-sister could smell Dr. Roylott's cigar. Now, of course that
-suggested at once that there must be a communication between the
-two rooms. It could only be a small one, or it would have been
-remarked upon at the coroner's inquiry. I deduced a ventilator."
-
-"But what harm can there be in that?"
-
-"Well, there is at least a curious coincidence of dates. A
-ventilator is made, a cord is hung, and a lady who sleeps in the
-bed dies. Does not that strike you?"
-
-"I cannot as yet see any connection."
-
-"Did you observe anything very peculiar about that bed?"
-
-"No."
-
-"It was clamped to the floor. Did you ever see a bed fastened
-like that before?"
-
-"I cannot say that I have."
-
-"The lady could not move her bed. It must always be in the same
-relative position to the ventilator and to the rope--or so we may
-call it, since it was clearly never meant for a bell-pull."
-
-"Holmes," I cried, "I seem to see dimly what you are hinting at.
-We are only just in time to prevent some subtle and horrible
-crime."
-
-"Subtle enough and horrible enough. When a doctor does go wrong
-he is the first of criminals. He has nerve and he has knowledge.
-Palmer and Pritchard were among the heads of their profession.
-This man strikes even deeper, but I think, Watson, that we shall
-be able to strike deeper still. But we shall have horrors enough
-before the night is over; for goodness' sake let us have a quiet
-pipe and turn our minds for a few hours to something more
-cheerful."
-
-
-About nine o'clock the light among the trees was extinguished,
-and all was dark in the direction of the Manor House. Two hours
-passed slowly away, and then, suddenly, just at the stroke of
-eleven, a single bright light shone out right in front of us.
-
-"That is our signal," said Holmes, springing to his feet; "it
-comes from the middle window."
-
-As we passed out he exchanged a few words with the landlord,
-explaining that we were going on a late visit to an acquaintance,
-and that it was possible that we might spend the night there. A
-moment later we were out on the dark road, a chill wind blowing
-in our faces, and one yellow light twinkling in front of us
-through the gloom to guide us on our sombre errand.
-
-There was little difficulty in entering the grounds, for
-unrepaired breaches gaped in the old park wall. Making our way
-among the trees, we reached the lawn, crossed it, and were about
-to enter through the window when out from a clump of laurel
-bushes there darted what seemed to be a hideous and distorted
-child, who threw itself upon the grass with writhing limbs and
-then ran swiftly across the lawn into the darkness.
-
-"My God!" I whispered; "did you see it?"
-
-Holmes was for the moment as startled as I. His hand closed like
-a vice upon my wrist in his agitation. Then he broke into a low
-laugh and put his lips to my ear.
-
-"It is a nice household," he murmured. "That is the baboon."
-
-I had forgotten the strange pets which the doctor affected. There
-was a cheetah, too; perhaps we might find it upon our shoulders
-at any moment. I confess that I felt easier in my mind when,
-after following Holmes' example and slipping off my shoes, I
-found myself inside the bedroom. My companion noiselessly closed
-the shutters, moved the lamp onto the table, and cast his eyes
-round the room. All was as we had seen it in the daytime. Then
-creeping up to me and making a trumpet of his hand, he whispered
-into my ear again so gently that it was all that I could do to
-distinguish the words:
-
-"The least sound would be fatal to our plans."
-
-I nodded to show that I had heard.
-
-"We must sit without light. He would see it through the
-ventilator."
-
-I nodded again.
-
-"Do not go asleep; your very life may depend upon it. Have your
-pistol ready in case we should need it. I will sit on the side of
-the bed, and you in that chair."
-
-I took out my revolver and laid it on the corner of the table.
-
-Holmes had brought up a long thin cane, and this he placed upon
-the bed beside him. By it he laid the box of matches and the
-stump of a candle. Then he turned down the lamp, and we were left
-in darkness.
-
-How shall I ever forget that dreadful vigil? I could not hear a
-sound, not even the drawing of a breath, and yet I knew that my
-companion sat open-eyed, within a few feet of me, in the same
-state of nervous tension in which I was myself. The shutters cut
-off the least ray of light, and we waited in absolute darkness.
-
-From outside came the occasional cry of a night-bird, and once at
-our very window a long drawn catlike whine, which told us that
-the cheetah was indeed at liberty. Far away we could hear the
-deep tones of the parish clock, which boomed out every quarter of
-an hour. How long they seemed, those quarters! Twelve struck, and
-one and two and three, and still we sat waiting silently for
-whatever might befall.
-
-Suddenly there was the momentary gleam of a light up in the
-direction of the ventilator, which vanished immediately, but was
-succeeded by a strong smell of burning oil and heated metal.
-Someone in the next room had lit a dark-lantern. I heard a gentle
-sound of movement, and then all was silent once more, though the
-smell grew stronger. For half an hour I sat with straining ears.
-Then suddenly another sound became audible--a very gentle,
-soothing sound, like that of a small jet of steam escaping
-continually from a kettle. The instant that we heard it, Holmes
-sprang from the bed, struck a match, and lashed furiously with
-his cane at the bell-pull.
-
-"You see it, Watson?" he yelled. "You see it?"
-
-But I saw nothing. At the moment when Holmes struck the light I
-heard a low, clear whistle, but the sudden glare flashing into my
-weary eyes made it impossible for me to tell what it was at which
-my friend lashed so savagely. I could, however, see that his face
-was deadly pale and filled with horror and loathing. He had
-ceased to strike and was gazing up at the ventilator when
-suddenly there broke from the silence of the night the most
-horrible cry to which I have ever listened. It swelled up louder
-and louder, a hoarse yell of pain and fear and anger all mingled
-in the one dreadful shriek. They say that away down in the
-village, and even in the distant parsonage, that cry raised the
-sleepers from their beds. It struck cold to our hearts, and I
-stood gazing at Holmes, and he at me, until the last echoes of it
-had died away into the silence from which it rose.
-
-"What can it mean?" I gasped.
-
-"It means that it is all over," Holmes answered. "And perhaps,
-after all, it is for the best. Take your pistol, and we will
-enter Dr. Roylott's room."
-
-With a grave face he lit the lamp and led the way down the
-corridor. Twice he struck at the chamber door without any reply
-from within. Then he turned the handle and entered, I at his
-heels, with the cocked pistol in my hand.
-
-It was a singular sight which met our eyes. On the table stood a
-dark-lantern with the shutter half open, throwing a brilliant
-beam of light upon the iron safe, the door of which was ajar.
-Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
-clad in a long grey dressing-gown, his bare ankles protruding
-beneath, and his feet thrust into red heelless Turkish slippers.
-Across his lap lay the short stock with the long lash which we
-had noticed during the day. His chin was cocked upward and his
-eyes were fixed in a dreadful, rigid stare at the corner of the
-ceiling. Round his brow he had a peculiar yellow band, with
-brownish speckles, which seemed to be bound tightly round his
-head. As we entered he made neither sound nor motion.
-
-"The band! the speckled band!" whispered Holmes.
-
-I took a step forward. In an instant his strange headgear began
-to move, and there reared itself from among his hair the squat
-diamond-shaped head and puffed neck of a loathsome serpent.
-
-"It is a swamp adder!" cried Holmes; "the deadliest snake in
-India. He has died within ten seconds of being bitten. Violence
-does, in truth, recoil upon the violent, and the schemer falls
-into the pit which he digs for another. Let us thrust this
-creature back into its den, and we can then remove Miss Stoner to
-some place of shelter and let the county police know what has
-happened."
-
-As he spoke he drew the dog-whip swiftly from the dead man's lap,
-and throwing the noose round the reptile's neck he drew it from
-its horrid perch and, carrying it at arm's length, threw it into
-the iron safe, which he closed upon it.
-
-Such are the true facts of the death of Dr. Grimesby Roylott, of
-Stoke Moran. It is not necessary that I should prolong a
-narrative which has already run to too great a length by telling
-how we broke the sad news to the terrified girl, how we conveyed
-her by the morning train to the care of her good aunt at Harrow,
-of how the slow process of official inquiry came to the
-conclusion that the doctor met his fate while indiscreetly
-playing with a dangerous pet. The little which I had yet to learn
-of the case was told me by Sherlock Holmes as we travelled back
-next day.
-
-"I had," said he, "come to an entirely erroneous conclusion which
-shows, my dear Watson, how dangerous it always is to reason from
-insufficient data. The presence of the gipsies, and the use of
-the word 'band,' which was used by the poor girl, no doubt, to
-explain the appearance which she had caught a hurried glimpse of
-by the light of her match, were sufficient to put me upon an
-entirely wrong scent. I can only claim the merit that I instantly
-reconsidered my position when, however, it became clear to me
-that whatever danger threatened an occupant of the room could not
-come either from the window or the door. My attention was
-speedily drawn, as I have already remarked to you, to this
-ventilator, and to the bell-rope which hung down to the bed. The
-discovery that this was a dummy, and that the bed was clamped to
-the floor, instantly gave rise to the suspicion that the rope was
-there as a bridge for something passing through the hole and
-coming to the bed. The idea of a snake instantly occurred to me,
-and when I coupled it with my knowledge that the doctor was
-furnished with a supply of creatures from India, I felt that I
-was probably on the right track. The idea of using a form of
-poison which could not possibly be discovered by any chemical
-test was just such a one as would occur to a clever and ruthless
-man who had had an Eastern training. The rapidity with which such
-a poison would take effect would also, from his point of view, be
-an advantage. It would be a sharp-eyed coroner, indeed, who could
-distinguish the two little dark punctures which would show where
-the poison fangs had done their work. Then I thought of the
-whistle. Of course he must recall the snake before the morning
-light revealed it to the victim. He had trained it, probably by
-the use of the milk which we saw, to return to him when summoned.
-He would put it through this ventilator at the hour that he
-thought best, with the certainty that it would crawl down the
-rope and land on the bed. It might or might not bite the
-occupant, perhaps she might escape every night for a week, but
-sooner or later she must fall a victim.
-
-"I had come to these conclusions before ever I had entered his
-room. An inspection of his chair showed me that he had been in
-the habit of standing on it, which of course would be necessary
-in order that he should reach the ventilator. The sight of the
-safe, the saucer of milk, and the loop of whipcord were enough to
-finally dispel any doubts which may have remained. The metallic
-clang heard by Miss Stoner was obviously caused by her stepfather
-hastily closing the door of his safe upon its terrible occupant.
-Having once made up my mind, you know the steps which I took in
-order to put the matter to the proof. I heard the creature hiss
-as I have no doubt that you did also, and I instantly lit the
-light and attacked it."
-
-"With the result of driving it through the ventilator."
-
-"And also with the result of causing it to turn upon its master
-at the other side. Some of the blows of my cane came home and
-roused its snakish temper, so that it flew upon the first person
-it saw. In this way I am no doubt indirectly responsible for Dr.
-Grimesby Roylott's death, and I cannot say that it is likely to
-weigh very heavily upon my conscience."
-
-
-
-IX. THE ADVENTURE OF THE ENGINEER'S THUMB
-
-Of all the problems which have been submitted to my friend, Mr.
-Sherlock Holmes, for solution during the years of our intimacy,
-there were only two which I was the means of introducing to his
-notice--that of Mr. Hatherley's thumb, and that of Colonel
-Warburton's madness. Of these the latter may have afforded a
-finer field for an acute and original observer, but the other was
-so strange in its inception and so dramatic in its details that
-it may be the more worthy of being placed upon record, even if it
-gave my friend fewer openings for those deductive methods of
-reasoning by which he achieved such remarkable results. The story
-has, I believe, been told more than once in the newspapers, but,
-like all such narratives, its effect is much less striking when
-set forth en bloc in a single half-column of print than when the
-facts slowly evolve before your own eyes, and the mystery clears
-gradually away as each new discovery furnishes a step which leads
-on to the complete truth. At the time the circumstances made a
-deep impression upon me, and the lapse of two years has hardly
-served to weaken the effect.
-
-It was in the summer of '89, not long after my marriage, that the
-events occurred which I am now about to summarise. I had returned
-to civil practice and had finally abandoned Holmes in his Baker
-Street rooms, although I continually visited him and occasionally
-even persuaded him to forgo his Bohemian habits so far as to come
-and visit us. My practice had steadily increased, and as I
-happened to live at no very great distance from Paddington
-Station, I got a few patients from among the officials. One of
-these, whom I had cured of a painful and lingering disease, was
-never weary of advertising my virtues and of endeavouring to send
-me on every sufferer over whom he might have any influence.
-
-One morning, at a little before seven o'clock, I was awakened by
-the maid tapping at the door to announce that two men had come
-from Paddington and were waiting in the consulting-room. I
-dressed hurriedly, for I knew by experience that railway cases
-were seldom trivial, and hastened downstairs. As I descended, my
-old ally, the guard, came out of the room and closed the door
-tightly behind him.
-
-"I've got him here," he whispered, jerking his thumb over his
-shoulder; "he's all right."
-
-"What is it, then?" I asked, for his manner suggested that it was
-some strange creature which he had caged up in my room.
-
-"It's a new patient," he whispered. "I thought I'd bring him
-round myself; then he couldn't slip away. There he is, all safe
-and sound. I must go now, Doctor; I have my dooties, just the
-same as you." And off he went, this trusty tout, without even
-giving me time to thank him.
-
-I entered my consulting-room and found a gentleman seated by the
-table. He was quietly dressed in a suit of heather tweed with a
-soft cloth cap which he had laid down upon my books. Round one of
-his hands he had a handkerchief wrapped, which was mottled all
-over with bloodstains. He was young, not more than
-five-and-twenty, I should say, with a strong, masculine face; but
-he was exceedingly pale and gave me the impression of a man who
-was suffering from some strong agitation, which it took all his
-strength of mind to control.
-
-"I am sorry to knock you up so early, Doctor," said he, "but I
-have had a very serious accident during the night. I came in by
-train this morning, and on inquiring at Paddington as to where I
-might find a doctor, a worthy fellow very kindly escorted me
-here. I gave the maid a card, but I see that she has left it upon
-the side-table."
-
-I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
-engineer, 16A, Victoria Street (3rd floor)." That was the name,
-style, and abode of my morning visitor. "I regret that I have
-kept you waiting," said I, sitting down in my library-chair. "You
-are fresh from a night journey, I understand, which is in itself
-a monotonous occupation."
-
-"Oh, my night could not be called monotonous," said he, and
-laughed. He laughed very heartily, with a high, ringing note,
-leaning back in his chair and shaking his sides. All my medical
-instincts rose up against that laugh.
-
-"Stop it!" I cried; "pull yourself together!" and I poured out
-some water from a caraffe.
-
-It was useless, however. He was off in one of those hysterical
-outbursts which come upon a strong nature when some great crisis
-is over and gone. Presently he came to himself once more, very
-weary and pale-looking.
-
-"I have been making a fool of myself," he gasped.
-
-"Not at all. Drink this." I dashed some brandy into the water,
-and the colour began to come back to his bloodless cheeks.
-
-"That's better!" said he. "And now, Doctor, perhaps you would
-kindly attend to my thumb, or rather to the place where my thumb
-used to be."
-
-He unwound the handkerchief and held out his hand. It gave even
-my hardened nerves a shudder to look at it. There were four
-protruding fingers and a horrid red, spongy surface where the
-thumb should have been. It had been hacked or torn right out from
-the roots.
-
-"Good heavens!" I cried, "this is a terrible injury. It must have
-bled considerably."
-
-"Yes, it did. I fainted when it was done, and I think that I must
-have been senseless for a long time. When I came to I found that
-it was still bleeding, so I tied one end of my handkerchief very
-tightly round the wrist and braced it up with a twig."
-
-"Excellent! You should have been a surgeon."
-
-"It is a question of hydraulics, you see, and came within my own
-province."
-
-"This has been done," said I, examining the wound, "by a very
-heavy and sharp instrument."
-
-"A thing like a cleaver," said he.
-
-"An accident, I presume?"
-
-"By no means."
-
-"What! a murderous attack?"
-
-"Very murderous indeed."
-
-"You horrify me."
-
-I sponged the wound, cleaned it, dressed it, and finally covered
-it over with cotton wadding and carbolised bandages. He lay back
-without wincing, though he bit his lip from time to time.
-
-"How is that?" I asked when I had finished.
-
-"Capital! Between your brandy and your bandage, I feel a new man.
-I was very weak, but I have had a good deal to go through."
-
-"Perhaps you had better not speak of the matter. It is evidently
-trying to your nerves."
-
-"Oh, no, not now. I shall have to tell my tale to the police;
-but, between ourselves, if it were not for the convincing
-evidence of this wound of mine, I should be surprised if they
-believed my statement, for it is a very extraordinary one, and I
-have not much in the way of proof with which to back it up; and,
-even if they believe me, the clues which I can give them are so
-vague that it is a question whether justice will be done."
-
-"Ha!" cried I, "if it is anything in the nature of a problem
-which you desire to see solved, I should strongly recommend you
-to come to my friend, Mr. Sherlock Holmes, before you go to the
-official police."
-
-"Oh, I have heard of that fellow," answered my visitor, "and I
-should be very glad if he would take the matter up, though of
-course I must use the official police as well. Would you give me
-an introduction to him?"
-
-"I'll do better. I'll take you round to him myself."
-
-"I should be immensely obliged to you."
-
-"We'll call a cab and go together. We shall just be in time to
-have a little breakfast with him. Do you feel equal to it?"
-
-"Yes; I shall not feel easy until I have told my story."
-
-"Then my servant will call a cab, and I shall be with you in an
-instant." I rushed upstairs, explained the matter shortly to my
-wife, and in five minutes was inside a hansom, driving with my
-new acquaintance to Baker Street.
-
-Sherlock Holmes was, as I expected, lounging about his
-sitting-room in his dressing-gown, reading the agony column of The
-Times and smoking his before-breakfast pipe, which was composed
-of all the plugs and dottles left from his smokes of the day
-before, all carefully dried and collected on the corner of the
-mantelpiece. He received us in his quietly genial fashion,
-ordered fresh rashers and eggs, and joined us in a hearty meal.
-When it was concluded he settled our new acquaintance upon the
-sofa, placed a pillow beneath his head, and laid a glass of
-brandy and water within his reach.
-
-"It is easy to see that your experience has been no common one,
-Mr. Hatherley," said he. "Pray, lie down there and make yourself
-absolutely at home. Tell us what you can, but stop when you are
-tired and keep up your strength with a little stimulant."
-
-"Thank you," said my patient, "but I have felt another man since
-the doctor bandaged me, and I think that your breakfast has
-completed the cure. I shall take up as little of your valuable
-time as possible, so I shall start at once upon my peculiar
-experiences."
-
-Holmes sat in his big armchair with the weary, heavy-lidded
-expression which veiled his keen and eager nature, while I sat
-opposite to him, and we listened in silence to the strange story
-which our visitor detailed to us.
-
-"You must know," said he, "that I am an orphan and a bachelor,
-residing alone in lodgings in London. By profession I am a
-hydraulic engineer, and I have had considerable experience of my
-work during the seven years that I was apprenticed to Venner &
-Matheson, the well-known firm, of Greenwich. Two years ago,
-having served my time, and having also come into a fair sum of
-money through my poor father's death, I determined to start in
-business for myself and took professional chambers in Victoria
-Street.
-
-"I suppose that everyone finds his first independent start in
-business a dreary experience. To me it has been exceptionally so.
-During two years I have had three consultations and one small
-job, and that is absolutely all that my profession has brought
-me. My gross takings amount to 27 pounds 10s. Every day, from
-nine in the morning until four in the afternoon, I waited in my
-little den, until at last my heart began to sink, and I came to
-believe that I should never have any practice at all.
-
-"Yesterday, however, just as I was thinking of leaving the
-office, my clerk entered to say there was a gentleman waiting who
-wished to see me upon business. He brought up a card, too, with
-the name of 'Colonel Lysander Stark' engraved upon it. Close at
-his heels came the colonel himself, a man rather over the middle
-size, but of an exceeding thinness. I do not think that I have
-ever seen so thin a man. His whole face sharpened away into nose
-and chin, and the skin of his cheeks was drawn quite tense over
-his outstanding bones. Yet this emaciation seemed to be his
-natural habit, and due to no disease, for his eye was bright, his
-step brisk, and his bearing assured. He was plainly but neatly
-dressed, and his age, I should judge, would be nearer forty than
-thirty.
-
-"'Mr. Hatherley?' said he, with something of a German accent.
-'You have been recommended to me, Mr. Hatherley, as being a man
-who is not only proficient in his profession but is also discreet
-and capable of preserving a secret.'
-
-"I bowed, feeling as flattered as any young man would at such an
-address. 'May I ask who it was who gave me so good a character?'
-
-"'Well, perhaps it is better that I should not tell you that just
-at this moment. I have it from the same source that you are both
-an orphan and a bachelor and are residing alone in London.'
-
-"'That is quite correct,' I answered; 'but you will excuse me if
-I say that I cannot see how all this bears upon my professional
-qualifications. I understand that it was on a professional matter
-that you wished to speak to me?'
-
-"'Undoubtedly so. But you will find that all I say is really to
-the point. I have a professional commission for you, but absolute
-secrecy is quite essential--absolute secrecy, you understand, and
-of course we may expect that more from a man who is alone than
-from one who lives in the bosom of his family.'
-
-"'If I promise to keep a secret,' said I, 'you may absolutely
-depend upon my doing so.'
-
-"He looked very hard at me as I spoke, and it seemed to me that I
-had never seen so suspicious and questioning an eye.
-
-"'Do you promise, then?' said he at last.
-
-"'Yes, I promise.'
-
-"'Absolute and complete silence before, during, and after? No
-reference to the matter at all, either in word or writing?'
-
-"'I have already given you my word.'
-
-"'Very good.' He suddenly sprang up, and darting like lightning
-across the room he flung open the door. The passage outside was
-empty.
-
-"'That's all right,' said he, coming back. 'I know that clerks are
-sometimes curious as to their master's affairs. Now we can talk
-in safety.' He drew up his chair very close to mine and began to
-stare at me again with the same questioning and thoughtful look.
-
-"A feeling of repulsion, and of something akin to fear had begun
-to rise within me at the strange antics of this fleshless man.
-Even my dread of losing a client could not restrain me from
-showing my impatience.
-
-"'I beg that you will state your business, sir,' said I; 'my time
-is of value.' Heaven forgive me for that last sentence, but the
-words came to my lips.
-
-"'How would fifty guineas for a night's work suit you?' he asked.
-
-"'Most admirably.'
-
-"'I say a night's work, but an hour's would be nearer the mark. I
-simply want your opinion about a hydraulic stamping machine which
-has got out of gear. If you show us what is wrong we shall soon
-set it right ourselves. What do you think of such a commission as
-that?'
-
-"'The work appears to be light and the pay munificent.'
-
-"'Precisely so. We shall want you to come to-night by the last
-train.'
-
-"'Where to?'
-
-"'To Eyford, in Berkshire. It is a little place near the borders
-of Oxfordshire, and within seven miles of Reading. There is a
-train from Paddington which would bring you there at about
-11:15.'
-
-"'Very good.'
-
-"'I shall come down in a carriage to meet you.'
-
-"'There is a drive, then?'
-
-"'Yes, our little place is quite out in the country. It is a good
-seven miles from Eyford Station.'
-
-"'Then we can hardly get there before midnight. I suppose there
-would be no chance of a train back. I should be compelled to stop
-the night.'
-
-"'Yes, we could easily give you a shake-down.'
-
-"'That is very awkward. Could I not come at some more convenient
-hour?'
-
-"'We have judged it best that you should come late. It is to
-recompense you for any inconvenience that we are paying to you, a
-young and unknown man, a fee which would buy an opinion from the
-very heads of your profession. Still, of course, if you would
-like to draw out of the business, there is plenty of time to do
-so.'
-
-"I thought of the fifty guineas, and of how very useful they
-would be to me. 'Not at all,' said I, 'I shall be very happy to
-accommodate myself to your wishes. I should like, however, to
-understand a little more clearly what it is that you wish me to
-do.'
-
-"'Quite so. It is very natural that the pledge of secrecy which
-we have exacted from you should have aroused your curiosity. I
-have no wish to commit you to anything without your having it all
-laid before you. I suppose that we are absolutely safe from
-eavesdroppers?'
-
-"'Entirely.'
-
-"'Then the matter stands thus. You are probably aware that
-fuller's-earth is a valuable product, and that it is only found
-in one or two places in England?'
-
-"'I have heard so.'
-
-"'Some little time ago I bought a small place--a very small
-place--within ten miles of Reading. I was fortunate enough to
-discover that there was a deposit of fuller's-earth in one of my
-fields. On examining it, however, I found that this deposit was a
-comparatively small one, and that it formed a link between two
-very much larger ones upon the right and left--both of them,
-however, in the grounds of my neighbours. These good people were
-absolutely ignorant that their land contained that which was
-quite as valuable as a gold-mine. Naturally, it was to my
-interest to buy their land before they discovered its true value,
-but unfortunately I had no capital by which I could do this. I
-took a few of my friends into the secret, however, and they
-suggested that we should quietly and secretly work our own little
-deposit and that in this way we should earn the money which would
-enable us to buy the neighbouring fields. This we have now been
-doing for some time, and in order to help us in our operations we
-erected a hydraulic press. This press, as I have already
-explained, has got out of order, and we wish your advice upon the
-subject. We guard our secret very jealously, however, and if it
-once became known that we had hydraulic engineers coming to our
-little house, it would soon rouse inquiry, and then, if the facts
-came out, it would be good-bye to any chance of getting these
-fields and carrying out our plans. That is why I have made you
-promise me that you will not tell a human being that you are
-going to Eyford to-night. I hope that I make it all plain?'
-
-"'I quite follow you,' said I. 'The only point which I could not
-quite understand was what use you could make of a hydraulic press
-in excavating fuller's-earth, which, as I understand, is dug out
-like gravel from a pit.'
-
-"'Ah!' said he carelessly, 'we have our own process. We compress
-the earth into bricks, so as to remove them without revealing
-what they are. But that is a mere detail. I have taken you fully
-into my confidence now, Mr. Hatherley, and I have shown you how I
-trust you.' He rose as he spoke. 'I shall expect you, then, at
-Eyford at 11:15.'
-
-"'I shall certainly be there.'
-
-"'And not a word to a soul.' He looked at me with a last long,
-questioning gaze, and then, pressing my hand in a cold, dank
-grasp, he hurried from the room.
-
-"Well, when I came to think it all over in cool blood I was very
-much astonished, as you may both think, at this sudden commission
-which had been intrusted to me. On the one hand, of course, I was
-glad, for the fee was at least tenfold what I should have asked
-had I set a price upon my own services, and it was possible that
-this order might lead to other ones. On the other hand, the face
-and manner of my patron had made an unpleasant impression upon
-me, and I could not think that his explanation of the
-fuller's-earth was sufficient to explain the necessity for my
-coming at midnight, and his extreme anxiety lest I should tell
-anyone of my errand. However, I threw all fears to the winds, ate
-a hearty supper, drove to Paddington, and started off, having
-obeyed to the letter the injunction as to holding my tongue.
-
-"At Reading I had to change not only my carriage but my station.
-However, I was in time for the last train to Eyford, and I
-reached the little dim-lit station after eleven o'clock. I was the
-only passenger who got out there, and there was no one upon the
-platform save a single sleepy porter with a lantern. As I passed
-out through the wicket gate, however, I found my acquaintance of
-the morning waiting in the shadow upon the other side. Without a
-word he grasped my arm and hurried me into a carriage, the door
-of which was standing open. He drew up the windows on either
-side, tapped on the wood-work, and away we went as fast as the
-horse could go."
-
-"One horse?" interjected Holmes.
-
-"Yes, only one."
-
-"Did you observe the colour?"
-
-"Yes, I saw it by the side-lights when I was stepping into the
-carriage. It was a chestnut."
-
-"Tired-looking or fresh?"
-
-"Oh, fresh and glossy."
-
-"Thank you. I am sorry to have interrupted you. Pray continue
-your most interesting statement."
-
-"Away we went then, and we drove for at least an hour. Colonel
-Lysander Stark had said that it was only seven miles, but I
-should think, from the rate that we seemed to go, and from the
-time that we took, that it must have been nearer twelve. He sat
-at my side in silence all the time, and I was aware, more than
-once when I glanced in his direction, that he was looking at me
-with great intensity. The country roads seem to be not very good
-in that part of the world, for we lurched and jolted terribly. I
-tried to look out of the windows to see something of where we
-were, but they were made of frosted glass, and I could make out
-nothing save the occasional bright blur of a passing light. Now
-and then I hazarded some remark to break the monotony of the
-journey, but the colonel answered only in monosyllables, and the
-conversation soon flagged. At last, however, the bumping of the
-road was exchanged for the crisp smoothness of a gravel-drive,
-and the carriage came to a stand. Colonel Lysander Stark sprang
-out, and, as I followed after him, pulled me swiftly into a porch
-which gaped in front of us. We stepped, as it were, right out of
-the carriage and into the hall, so that I failed to catch the
-most fleeting glance of the front of the house. The instant that
-I had crossed the threshold the door slammed heavily behind us,
-and I heard faintly the rattle of the wheels as the carriage
-drove away.
-
-"It was pitch dark inside the house, and the colonel fumbled
-about looking for matches and muttering under his breath.
-Suddenly a door opened at the other end of the passage, and a
-long, golden bar of light shot out in our direction. It grew
-broader, and a woman appeared with a lamp in her hand, which she
-held above her head, pushing her face forward and peering at us.
-I could see that she was pretty, and from the gloss with which
-the light shone upon her dark dress I knew that it was a rich
-material. She spoke a few words in a foreign tongue in a tone as
-though asking a question, and when my companion answered in a
-gruff monosyllable she gave such a start that the lamp nearly
-fell from her hand. Colonel Stark went up to her, whispered
-something in her ear, and then, pushing her back into the room
-from whence she had come, he walked towards me again with the
-lamp in his hand.
-
-"'Perhaps you will have the kindness to wait in this room for a
-few minutes,' said he, throwing open another door. It was a
-quiet, little, plainly furnished room, with a round table in the
-centre, on which several German books were scattered. Colonel
-Stark laid down the lamp on the top of a harmonium beside the
-door. 'I shall not keep you waiting an instant,' said he, and
-vanished into the darkness.
-
-"I glanced at the books upon the table, and in spite of my
-ignorance of German I could see that two of them were treatises
-on science, the others being volumes of poetry. Then I walked
-across to the window, hoping that I might catch some glimpse of
-the country-side, but an oak shutter, heavily barred, was folded
-across it. It was a wonderfully silent house. There was an old
-clock ticking loudly somewhere in the passage, but otherwise
-everything was deadly still. A vague feeling of uneasiness began
-to steal over me. Who were these German people, and what were
-they doing living in this strange, out-of-the-way place? And
-where was the place? I was ten miles or so from Eyford, that was
-all I knew, but whether north, south, east, or west I had no
-idea. For that matter, Reading, and possibly other large towns,
-were within that radius, so the place might not be so secluded,
-after all. Yet it was quite certain, from the absolute stillness,
-that we were in the country. I paced up and down the room,
-humming a tune under my breath to keep up my spirits and feeling
-that I was thoroughly earning my fifty-guinea fee.
-
-"Suddenly, without any preliminary sound in the midst of the
-utter stillness, the door of my room swung slowly open. The woman
-was standing in the aperture, the darkness of the hall behind
-her, the yellow light from my lamp beating upon her eager and
-beautiful face. I could see at a glance that she was sick with
-fear, and the sight sent a chill to my own heart. She held up one
-shaking finger to warn me to be silent, and she shot a few
-whispered words of broken English at me, her eyes glancing back,
-like those of a frightened horse, into the gloom behind her.
-
-"'I would go,' said she, trying hard, as it seemed to me, to
-speak calmly; 'I would go. I should not stay here. There is no
-good for you to do.'
-
-"'But, madam,' said I, 'I have not yet done what I came for. I
-cannot possibly leave until I have seen the machine.'
-
-"'It is not worth your while to wait,' she went on. 'You can pass
-through the door; no one hinders.' And then, seeing that I smiled
-and shook my head, she suddenly threw aside her constraint and
-made a step forward, with her hands wrung together. 'For the love
-of Heaven!' she whispered, 'get away from here before it is too
-late!'
-
-"But I am somewhat headstrong by nature, and the more ready to
-engage in an affair when there is some obstacle in the way. I
-thought of my fifty-guinea fee, of my wearisome journey, and of
-the unpleasant night which seemed to be before me. Was it all to
-go for nothing? Why should I slink away without having carried
-out my commission, and without the payment which was my due? This
-woman might, for all I knew, be a monomaniac. With a stout
-bearing, therefore, though her manner had shaken me more than I
-cared to confess, I still shook my head and declared my intention
-of remaining where I was. She was about to renew her entreaties
-when a door slammed overhead, and the sound of several footsteps
-was heard upon the stairs. She listened for an instant, threw up
-her hands with a despairing gesture, and vanished as suddenly and
-as noiselessly as she had come.
-
-"The newcomers were Colonel Lysander Stark and a short thick man
-with a chinchilla beard growing out of the creases of his double
-chin, who was introduced to me as Mr. Ferguson.
-
-"'This is my secretary and manager,' said the colonel. 'By the
-way, I was under the impression that I left this door shut just
-now. I fear that you have felt the draught.'
-
-"'On the contrary,' said I, 'I opened the door myself because I
-felt the room to be a little close.'
-
-"He shot one of his suspicious looks at me. 'Perhaps we had
-better proceed to business, then,' said he. 'Mr. Ferguson and I
-will take you up to see the machine.'
-
-"'I had better put my hat on, I suppose.'
-
-"'Oh, no, it is in the house.'
-
-"'What, you dig fuller's-earth in the house?'
-
-"'No, no. This is only where we compress it. But never mind that.
-All we wish you to do is to examine the machine and to let us
-know what is wrong with it.'
-
-"We went upstairs together, the colonel first with the lamp, the
-fat manager and I behind him. It was a labyrinth of an old house,
-with corridors, passages, narrow winding staircases, and little
-low doors, the thresholds of which were hollowed out by the
-generations who had crossed them. There were no carpets and no
-signs of any furniture above the ground floor, while the plaster
-was peeling off the walls, and the damp was breaking through in
-green, unhealthy blotches. I tried to put on as unconcerned an
-air as possible, but I had not forgotten the warnings of the
-lady, even though I disregarded them, and I kept a keen eye upon
-my two companions. Ferguson appeared to be a morose and silent
-man, but I could see from the little that he said that he was at
-least a fellow-countryman.
-
-"Colonel Lysander Stark stopped at last before a low door, which
-he unlocked. Within was a small, square room, in which the three
-of us could hardly get at one time. Ferguson remained outside,
-and the colonel ushered me in.
-
-"'We are now,' said he, 'actually within the hydraulic press, and
-it would be a particularly unpleasant thing for us if anyone were
-to turn it on. The ceiling of this small chamber is really the
-end of the descending piston, and it comes down with the force of
-many tons upon this metal floor. There are small lateral columns
-of water outside which receive the force, and which transmit and
-multiply it in the manner which is familiar to you. The machine
-goes readily enough, but there is some stiffness in the working
-of it, and it has lost a little of its force. Perhaps you will
-have the goodness to look it over and to show us how we can set
-it right.'
-
-"I took the lamp from him, and I examined the machine very
-thoroughly. It was indeed a gigantic one, and capable of
-exercising enormous pressure. When I passed outside, however, and
-pressed down the levers which controlled it, I knew at once by
-the whishing sound that there was a slight leakage, which allowed
-a regurgitation of water through one of the side cylinders. An
-examination showed that one of the india-rubber bands which was
-round the head of a driving-rod had shrunk so as not quite to
-fill the socket along which it worked. This was clearly the cause
-of the loss of power, and I pointed it out to my companions, who
-followed my remarks very carefully and asked several practical
-questions as to how they should proceed to set it right. When I
-had made it clear to them, I returned to the main chamber of the
-machine and took a good look at it to satisfy my own curiosity.
-It was obvious at a glance that the story of the fuller's-earth
-was the merest fabrication, for it would be absurd to suppose
-that so powerful an engine could be designed for so inadequate a
-purpose. The walls were of wood, but the floor consisted of a
-large iron trough, and when I came to examine it I could see a
-crust of metallic deposit all over it. I had stooped and was
-scraping at this to see exactly what it was when I heard a
-muttered exclamation in German and saw the cadaverous face of the
-colonel looking down at me.
-
-"'What are you doing there?' he asked.
-
-"I felt angry at having been tricked by so elaborate a story as
-that which he had told me. 'I was admiring your fuller's-earth,'
-said I; 'I think that I should be better able to advise you as to
-your machine if I knew what the exact purpose was for which it
-was used.'
-
-"The instant that I uttered the words I regretted the rashness of
-my speech. His face set hard, and a baleful light sprang up in
-his grey eyes.
-
-"'Very well,' said he, 'you shall know all about the machine.' He
-took a step backward, slammed the little door, and turned the key
-in the lock. I rushed towards it and pulled at the handle, but it
-was quite secure, and did not give in the least to my kicks and
-shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
-
-"And then suddenly in the silence I heard a sound which sent my
-heart into my mouth. It was the clank of the levers and the swish
-of the leaking cylinder. He had set the engine at work. The lamp
-still stood upon the floor where I had placed it when examining
-the trough. By its light I saw that the black ceiling was coming
-down upon me, slowly, jerkily, but, as none knew better than
-myself, with a force which must within a minute grind me to a
-shapeless pulp. I threw myself, screaming, against the door, and
-dragged with my nails at the lock. I implored the colonel to let
-me out, but the remorseless clanking of the levers drowned my
-cries. The ceiling was only a foot or two above my head, and with
-my hand upraised I could feel its hard, rough surface. Then it
-flashed through my mind that the pain of my death would depend
-very much upon the position in which I met it. If I lay on my
-face the weight would come upon my spine, and I shuddered to
-think of that dreadful snap. Easier the other way, perhaps; and
-yet, had I the nerve to lie and look up at that deadly black
-shadow wavering down upon me? Already I was unable to stand
-erect, when my eye caught something which brought a gush of hope
-back to my heart.
-
-"I have said that though the floor and ceiling were of iron, the
-walls were of wood. As I gave a last hurried glance around, I saw
-a thin line of yellow light between two of the boards, which
-broadened and broadened as a small panel was pushed backward. For
-an instant I could hardly believe that here was indeed a door
-which led away from death. The next instant I threw myself
-through, and lay half-fainting upon the other side. The panel had
-closed again behind me, but the crash of the lamp, and a few
-moments afterwards the clang of the two slabs of metal, told me
-how narrow had been my escape.
-
-"I was recalled to myself by a frantic plucking at my wrist, and
-I found myself lying upon the stone floor of a narrow corridor,
-while a woman bent over me and tugged at me with her left hand,
-while she held a candle in her right. It was the same good friend
-whose warning I had so foolishly rejected.
-
-"'Come! come!' she cried breathlessly. 'They will be here in a
-moment. They will see that you are not there. Oh, do not waste
-the so-precious time, but come!'
-
-"This time, at least, I did not scorn her advice. I staggered to
-my feet and ran with her along the corridor and down a winding
-stair. The latter led to another broad passage, and just as we
-reached it we heard the sound of running feet and the shouting of
-two voices, one answering the other from the floor on which  we
-were and from the one beneath. My guide stopped and looked about
-her like one  who is at her wit's end. Then she threw open a door
-which led into a bedroom, through the window of which the moon
-was shining brightly.
-
-"'It is your only chance,' said she. 'It is high, but it may be
-that you can jump it.'
-
-"As she spoke a light sprang into view at the further end of the
-passage, and I saw the lean figure of Colonel Lysander Stark
-rushing forward with a lantern in one hand and a weapon like a
-butcher's cleaver in the other. I rushed across the bedroom,
-flung open the window, and looked out. How quiet and sweet and
-wholesome the garden looked in the moonlight, and it could not be
-more than thirty feet down. I clambered out upon the sill, but I
-hesitated to jump until I should have heard what passed between
-my saviour and the ruffian who pursued me. If she were ill-used,
-then at any risks I was determined to go back to her assistance.
-The thought had hardly flashed through my mind before he was at
-the door, pushing his way past her; but she threw her arms round
-him and tried to hold him back.
-
-"'Fritz! Fritz!' she cried in English, 'remember your promise
-after the last time. You said it should not be again. He will be
-silent! Oh, he will be silent!'
-
-"'You are mad, Elise!' he shouted, struggling to break away from
-her. 'You will be the ruin of us. He has seen too much. Let me
-pass, I say!' He dashed her to one side, and, rushing to the
-window, cut at me with his heavy weapon. I had let myself go, and
-was hanging by the hands to the sill, when his blow fell. I was
-conscious of a dull pain, my grip loosened, and I fell into the
-garden below.
-
-"I was shaken but not hurt by the fall; so I picked myself up and
-rushed off among the bushes as hard as I could run, for I
-understood that I was far from being out of danger yet. Suddenly,
-however, as I ran, a deadly dizziness and sickness came over me.
-I glanced down at my hand, which was throbbing painfully, and
-then, for the first time, saw that my thumb had been cut off and
-that the blood was pouring from my wound. I endeavoured to tie my
-handkerchief round it, but there came a sudden buzzing in my
-ears, and next moment I fell in a dead faint among the
-rose-bushes.
-
-"How long I remained unconscious I cannot tell. It must have been
-a very long time, for the moon had sunk, and a bright morning was
-breaking when I came to myself. My clothes were all sodden with
-dew, and my coat-sleeve was drenched with blood from my wounded
-thumb. The smarting of it recalled in an instant all the
-particulars of my night's adventure, and I sprang to my feet with
-the feeling that I might hardly yet be safe from my pursuers. But
-to my astonishment, when I came to look round me, neither house
-nor garden were to be seen. I had been lying in an angle of the
-hedge close by the highroad, and just a little lower down was a
-long building, which proved, upon my approaching it, to be the
-very station at which I had arrived upon the previous night. Were
-it not for the ugly wound upon my hand, all that had passed
-during those dreadful hours might have been an evil dream.
-
-"Half dazed, I went into the station and asked about the morning
-train. There would be one to Reading in less than an hour. The
-same porter was on duty, I found, as had been there when I
-arrived. I inquired of him whether he had ever heard of Colonel
-Lysander Stark. The name was strange to him. Had he observed a
-carriage the night before waiting for me? No, he had not. Was
-there a police-station anywhere near? There was one about three
-miles off.
-
-"It was too far for me to go, weak and ill as I was. I determined
-to wait until I got back to town before telling my story to the
-police. It was a little past six when I arrived, so I went first
-to have my wound dressed, and then the doctor was kind enough to
-bring me along here. I put the case into your hands and shall do
-exactly what you advise."
-
-We both sat in silence for some little time after listening to
-this extraordinary narrative. Then Sherlock Holmes pulled down
-from the shelf one of the ponderous commonplace books in which he
-placed his cuttings.
-
-"Here is an advertisement which will interest you," said he. "It
-appeared in all the papers about a year ago. Listen to this:
-'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
-twenty-six, a hydraulic engineer. Left his lodgings at ten
-o'clock at night, and has not been heard of since. Was
-dressed in,' etc., etc. Ha! That represents the last time that
-the colonel needed to have his machine overhauled, I fancy."
-
-"Good heavens!" cried my patient. "Then that explains what the
-girl said."
-
-"Undoubtedly. It is quite clear that the colonel was a cool and
-desperate man, who was absolutely determined that nothing should
-stand in the way of his little game, like those out-and-out
-pirates who will leave no survivor from a captured ship. Well,
-every moment now is precious, so if you feel equal to it we shall
-go down to Scotland Yard at once as a preliminary to starting for
-Eyford."
-
-Some three hours or so afterwards we were all in the train
-together, bound from Reading to the little Berkshire village.
-There were Sherlock Holmes, the hydraulic engineer, Inspector
-Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
-Bradstreet had spread an ordnance map of the county out upon the
-seat and was busy with his compasses drawing a circle with Eyford
-for its centre.
-
-"There you are," said he. "That circle is drawn at a radius of
-ten miles from the village. The place we want must be somewhere
-near that line. You said ten miles, I think, sir."
-
-"It was an hour's good drive."
-
-"And you think that they brought you back all that way when you
-were unconscious?"
-
-"They must have done so. I have a confused memory, too, of having
-been lifted and conveyed somewhere."
-
-"What I cannot understand," said I, "is why they should have
-spared you when they found you lying fainting in the garden.
-Perhaps the villain was softened by the woman's entreaties."
-
-"I hardly think that likely. I never saw a more inexorable face
-in my life."
-
-"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
-have drawn my circle, and I only wish I knew at what point upon
-it the folk that we are in search of are to be found."
-
-"I think I could lay my finger on it," said Holmes quietly.
-
-"Really, now!" cried the inspector, "you have formed your
-opinion! Come, now, we shall see who agrees with you. I say it is
-south, for the country is more deserted there."
-
-"And I say east," said my patient.
-
-"I am for west," remarked the plain-clothes man. "There are
-several quiet little villages up there."
-
-"And I am for north," said I, "because there are no hills there,
-and our friend says that he did not notice the carriage go up
-any."
-
-"Come," cried the inspector, laughing; "it's a very pretty
-diversity of opinion. We have boxed the compass among us. Who do
-you give your casting vote to?"
-
-"You are all wrong."
-
-"But we can't all be."
-
-"Oh, yes, you can. This is my point." He placed his finger in the
-centre of the circle. "This is where we shall find them."
-
-"But the twelve-mile drive?" gasped Hatherley.
-
-"Six out and six back. Nothing simpler. You say yourself that the
-horse was fresh and glossy when you got in. How could it be that
-if it had gone twelve miles over heavy roads?"
-
-"Indeed, it is a likely ruse enough," observed Bradstreet
-thoughtfully. "Of course there can be no doubt as to the nature
-of this gang."
-
-"None at all," said Holmes. "They are coiners on a large scale,
-and have used the machine to form the amalgam which has taken the
-place of silver."
-
-"We have known for some time that a clever gang was at work,"
-said the inspector. "They have been turning out half-crowns by
-the thousand. We even traced them as far as Reading, but could
-get no farther, for they had covered their traces in a way that
-showed that they were very old hands. But now, thanks to this
-lucky chance, I think that we have got them right enough."
-
-But the inspector was mistaken, for those criminals were not
-destined to fall into the hands of justice. As we rolled into
-Eyford Station we saw a gigantic column of smoke which streamed
-up from behind a small clump of trees in the neighbourhood and
-hung like an immense ostrich feather over the landscape.
-
-"A house on fire?" asked Bradstreet as the train steamed off
-again on its way.
-
-"Yes, sir!" said the station-master.
-
-"When did it break out?"
-
-"I hear that it was during the night, sir, but it has got worse,
-and the whole place is in a blaze."
-
-"Whose house is it?"
-
-"Dr. Becher's."
-
-"Tell me," broke in the engineer, "is Dr. Becher a German, very
-thin, with a long, sharp nose?"
-
-The station-master laughed heartily. "No, sir, Dr. Becher is an
-Englishman, and there isn't a man in the parish who has a
-better-lined waistcoat. But he has a gentleman staying with him,
-a patient, as I understand, who is a foreigner, and he looks as
-if a little good Berkshire beef would do him no harm."
-
-The station-master had not finished his speech before we were all
-hastening in the direction of the fire. The road topped a low
-hill, and there was a great widespread whitewashed building in
-front of us, spouting fire at every chink and window, while in
-the garden in front three fire-engines were vainly striving to
-keep the flames under.
-
-"That's it!" cried Hatherley, in intense excitement. "There is
-the gravel-drive, and there are the rose-bushes where I lay. That
-second window is the one that I jumped from."
-
-"Well, at least," said Holmes, "you have had your revenge upon
-them. There can be no question that it was your oil-lamp which,
-when it was crushed in the press, set fire to the wooden walls,
-though no doubt they were too excited in the chase after you to
-observe it at the time. Now keep your eyes open in this crowd for
-your friends of last night, though I very much fear that they are
-a good hundred miles off by now."
-
-And Holmes' fears came to be realised, for from that day to this
-no word has ever been heard either of the beautiful woman, the
-sinister German, or the morose Englishman. Early that morning a
-peasant had met a cart containing several people and some very
-bulky boxes driving rapidly in the direction of Reading, but
-there all traces of the fugitives disappeared, and even Holmes'
-ingenuity failed ever to discover the least clue as to their
-whereabouts.
-
-The firemen had been much perturbed at the strange arrangements
-which they had found within, and still more so by discovering a
-newly severed human thumb upon a window-sill of the second floor.
-About sunset, however, their efforts were at last successful, and
-they subdued the flames, but not before the roof had fallen in,
-and the whole place been reduced to such absolute ruin that, save
-some twisted cylinders and iron piping, not a trace remained of
-the machinery which had cost our unfortunate acquaintance so
-dearly. Large masses of nickel and of tin were discovered stored
-in an out-house, but no coins were to be found, which may have
-explained the presence of those bulky boxes which have been
-already referred to.
-
-How our hydraulic engineer had been conveyed from the garden to
-the spot where he recovered his senses might have remained
-forever a mystery were it not for the soft mould, which told us a
-very plain tale. He had evidently been carried down by two
-persons, one of whom had remarkably small feet and the other
-unusually large ones. On the whole, it was most probable that the
-silent Englishman, being less bold or less murderous than his
-companion, had assisted the woman to bear the unconscious man out
-of the way of danger.
-
-"Well," said our engineer ruefully as we took our seats to return
-once more to London, "it has been a pretty business for me! I
-have lost my thumb and I have lost a fifty-guinea fee, and what
-have I gained?"
-
-"Experience," said Holmes, laughing. "Indirectly it may be of
-value, you know; you have only to put it into words to gain the
-reputation of being excellent company for the remainder of your
-existence."
-
-
-
-X. THE ADVENTURE OF THE NOBLE BACHELOR
-
-The Lord St. Simon marriage, and its curious termination, have
-long ceased to be a subject of interest in those exalted circles
-in which the unfortunate bridegroom moves. Fresh scandals have
-eclipsed it, and their more piquant details have drawn the
-gossips away from this four-year-old drama. As I have reason to
-believe, however, that the full facts have never been revealed to
-the general public, and as my friend Sherlock Holmes had a
-considerable share in clearing the matter up, I feel that no
-memoir of him would be complete without some little sketch of
-this remarkable episode.
-
-It was a few weeks before my own marriage, during the days when I
-was still sharing rooms with Holmes in Baker Street, that he came
-home from an afternoon stroll to find a letter on the table
-waiting for him. I had remained indoors all day, for the weather
-had taken a sudden turn to rain, with high autumnal winds, and
-the Jezail bullet which I had brought back in one of my limbs as
-a relic of my Afghan campaign throbbed with dull persistence.
-With my body in one easy-chair and my legs upon another, I had
-surrounded myself with a cloud of newspapers until at last,
-saturated with the news of the day, I tossed them all aside and
-lay listless, watching the huge crest and monogram upon the
-envelope upon the table and wondering lazily who my friend's
-noble correspondent could be.
-
-"Here is a very fashionable epistle," I remarked as he entered.
-"Your morning letters, if I remember right, were from a
-fish-monger and a tide-waiter."
-
-"Yes, my correspondence has certainly the charm of variety," he
-answered, smiling, "and the humbler are usually the more
-interesting. This looks like one of those unwelcome social
-summonses which call upon a man either to be bored or to lie."
-
-He broke the seal and glanced over the contents.
-
-"Oh, come, it may prove to be something of interest, after all."
-
-"Not social, then?"
-
-"No, distinctly professional."
-
-"And from a noble client?"
-
-"One of the highest in England."
-
-"My dear fellow, I congratulate you."
-
-"I assure you, Watson, without affectation, that the status of my
-client is a matter of less moment to me than the interest of his
-case. It is just possible, however, that that also may not be
-wanting in this new investigation. You have been reading the
-papers diligently of late, have you not?"
-
-"It looks like it," said I ruefully, pointing to a huge bundle in
-the corner. "I have had nothing else to do."
-
-"It is fortunate, for you will perhaps be able to post me up. I
-read nothing except the criminal news and the agony column. The
-latter is always instructive. But if you have followed recent
-events so closely you must have read about Lord St. Simon and his
-wedding?"
-
-"Oh, yes, with the deepest interest."
-
-"That is well. The letter which I hold in my hand is from Lord
-St. Simon. I will read it to you, and in return you must turn
-over these papers and let me have whatever bears upon the matter.
-This is what he says:
-
-"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
-may place implicit reliance upon your judgment and discretion. I
-have determined, therefore, to call upon you and to consult you
-in reference to the very painful event which has occurred in
-connection with my wedding. Mr. Lestrade, of Scotland Yard, is
-acting already in the matter, but he assures me that he sees no
-objection to your co-operation, and that he even thinks that
-it might be of some assistance. I will call at four o'clock in
-the afternoon, and, should you have any other engagement at that
-time, I hope that you will postpone it, as this matter is of
-paramount importance. Yours faithfully, ST. SIMON.'
-
-"It is dated from Grosvenor Mansions, written with a quill pen,
-and the noble lord has had the misfortune to get a smear of ink
-upon the outer side of his right little finger," remarked Holmes
-as he folded up the epistle.
-
-"He says four o'clock. It is three now. He will be here in an
-hour."
-
-"Then I have just time, with your assistance, to get clear upon
-the subject. Turn over those papers and arrange the extracts in
-their order of time, while I take a glance as to who our client
-is." He picked a red-covered volume from a line of books of
-reference beside the mantelpiece. "Here he is," said he, sitting
-down and flattening it out upon his knee. "'Lord Robert Walsingham
-de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
-Azure, three caltrops in chief over a fess sable. Born in 1846.'
-He's forty-one years of age, which is mature for marriage. Was
-Under-Secretary for the colonies in a late administration. The
-Duke, his father, was at one time Secretary for Foreign Affairs.
-They inherit Plantagenet blood by direct descent, and Tudor on
-the distaff side. Ha! Well, there is nothing very instructive in
-all this. I think that I must turn to you Watson, for something
-more solid."
-
-"I have very little difficulty in finding what I want," said I,
-"for the facts are quite recent, and the matter struck me as
-remarkable. I feared to refer them to you, however, as I knew
-that you had an inquiry on hand and that you disliked the
-intrusion of other matters."
-
-"Oh, you mean the little problem of the Grosvenor Square
-furniture van. That is quite cleared up now--though, indeed, it
-was obvious from the first. Pray give me the results of your
-newspaper selections."
-
-"Here is the first notice which I can find. It is in the personal
-column of the Morning Post, and dates, as you see, some weeks
-back: 'A marriage has been arranged,' it says, 'and will, if
-rumour is correct, very shortly take place, between Lord Robert
-St. Simon, second son of the Duke of Balmoral, and Miss Hatty
-Doran, the only daughter of Aloysius Doran. Esq., of San
-Francisco, Cal., U.S.A.' That is all."
-
-"Terse and to the point," remarked Holmes, stretching his long,
-thin legs towards the fire.
-
-"There was a paragraph amplifying this in one of the society
-papers of the same week. Ah, here it is: 'There will soon be a
-call for protection in the marriage market, for the present
-free-trade principle appears to tell heavily against our home
-product. One by one the management of the noble houses of Great
-Britain is passing into the hands of our fair cousins from across
-the Atlantic. An important addition has been made during the last
-week to the list of the prizes which have been borne away by
-these charming invaders. Lord St. Simon, who has shown himself
-for over twenty years proof against the little god's arrows, has
-now definitely announced his approaching marriage with Miss Hatty
-Doran, the fascinating daughter of a California millionaire. Miss
-Doran, whose graceful figure and striking face attracted much
-attention at the Westbury House festivities, is an only child,
-and it is currently reported that her dowry will run to
-considerably over the six figures, with expectancies for the
-future. As it is an open secret that the Duke of Balmoral has
-been compelled to sell his pictures within the last few years,
-and as Lord St. Simon has no property of his own save the small
-estate of Birchmoor, it is obvious that the Californian heiress
-is not the only gainer by an alliance which will enable her to
-make the easy and common transition from a Republican lady to a
-British peeress.'"
-
-"Anything else?" asked Holmes, yawning.
-
-"Oh, yes; plenty. Then there is another note in the Morning Post
-to say that the marriage would be an absolutely quiet one, that it
-would be at St. George's, Hanover Square, that only half a dozen
-intimate friends would be invited, and that the party would
-return to the furnished house at Lancaster Gate which has been
-taken by Mr. Aloysius Doran. Two days later--that is, on
-Wednesday last--there is a curt announcement that the wedding had
-taken place, and that the honeymoon would be passed at Lord
-Backwater's place, near Petersfield. Those are all the notices
-which appeared before the disappearance of the bride."
-
-"Before the what?" asked Holmes with a start.
-
-"The vanishing of the lady."
-
-"When did she vanish, then?"
-
-"At the wedding breakfast."
-
-"Indeed. This is more interesting than it promised to be; quite
-dramatic, in fact."
-
-"Yes; it struck me as being a little out of the common."
-
-"They often vanish before the ceremony, and occasionally during
-the honeymoon; but I cannot call to mind anything quite so prompt
-as this. Pray let me have the details."
-
-"I warn you that they are very incomplete."
-
-"Perhaps we may make them less so."
-
-"Such as they are, they are set forth in a single article of a
-morning paper of yesterday, which I will read to you. It is
-headed, 'Singular Occurrence at a Fashionable Wedding':
-
-"'The family of Lord Robert St. Simon has been thrown into the
-greatest consternation by the strange and painful episodes which
-have taken place in connection with his wedding. The ceremony, as
-shortly announced in the papers of yesterday, occurred on the
-previous morning; but it is only now that it has been possible to
-confirm the strange rumours which have been so persistently
-floating about. In spite of the attempts of the friends to hush
-the matter up, so much public attention has now been drawn to it
-that no good purpose can be served by affecting to disregard what
-is a common subject for conversation.
-
-"'The ceremony, which was performed at St. George's, Hanover
-Square, was a very quiet one, no one being present save the
-father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
-Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
-younger brother and sister of the bridegroom), and Lady Alicia
-Whittington. The whole party proceeded afterwards to the house of
-Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
-prepared. It appears that some little trouble was caused by a
-woman, whose name has not been ascertained, who endeavoured to
-force her way into the house after the bridal party, alleging
-that she had some claim upon Lord St. Simon. It was only after a
-painful and prolonged scene that she was ejected by the butler
-and the footman. The bride, who had fortunately entered the house
-before this unpleasant interruption, had sat down to breakfast
-with the rest, when she complained of a sudden indisposition and
-retired to her room. Her prolonged absence having caused some
-comment, her father followed her, but learned from her maid that
-she had only come up to her chamber for an instant, caught up an
-ulster and bonnet, and hurried down to the passage. One of the
-footmen declared that he had seen a lady leave the house thus
-apparelled, but had refused to credit that it was his mistress,
-believing her to be with the company. On ascertaining that his
-daughter had disappeared, Mr. Aloysius Doran, in conjunction with
-the bridegroom, instantly put themselves in communication with
-the police, and very energetic inquiries are being made, which
-will probably result in a speedy clearing up of this very
-singular business. Up to a late hour last night, however, nothing
-had transpired as to the whereabouts of the missing lady. There
-are rumours of foul play in the matter, and it is said that the
-police have caused the arrest of the woman who had caused the
-original disturbance, in the belief that, from jealousy or some
-other motive, she may have been concerned in the strange
-disappearance of the bride.'"
-
-"And is that all?"
-
-"Only one little item in another of the morning papers, but it is
-a suggestive one."
-
-"And it is--"
-
-"That Miss Flora Millar, the lady who had caused the disturbance,
-has actually been arrested. It appears that she was formerly a
-danseuse at the Allegro, and that she has known the bridegroom
-for some years. There are no further particulars, and the whole
-case is in your hands now--so far as it has been set forth in the
-public press."
-
-"And an exceedingly interesting case it appears to be. I would
-not have missed it for worlds. But there is a ring at the bell,
-Watson, and as the clock makes it a few minutes after four, I
-have no doubt that this will prove to be our noble client. Do not
-dream of going, Watson, for I very much prefer having a witness,
-if only as a check to my own memory."
-
-"Lord Robert St. Simon," announced our page-boy, throwing open
-the door. A gentleman entered, with a pleasant, cultured face,
-high-nosed and pale, with something perhaps of petulance about
-the mouth, and with the steady, well-opened eye of a man whose
-pleasant lot it had ever been to command and to be obeyed. His
-manner was brisk, and yet his general appearance gave an undue
-impression of age, for he had a slight forward stoop and a little
-bend of the knees as he walked. His hair, too, as he swept off
-his very curly-brimmed hat, was grizzled round the edges and thin
-upon the top. As to his dress, it was careful to the verge of
-foppishness, with high collar, black frock-coat, white waistcoat,
-yellow gloves, patent-leather shoes, and light-coloured gaiters.
-He advanced slowly into the room, turning his head from left to
-right, and swinging in his right hand the cord which held his
-golden eyeglasses.
-
-"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
-take the basket-chair. This is my friend and colleague, Dr.
-Watson. Draw up a little to the fire, and we will talk this
-matter over."
-
-"A most painful matter to me, as you can most readily imagine,
-Mr. Holmes. I have been cut to the quick. I understand that you
-have already managed several delicate cases of this sort, sir,
-though I presume that they were hardly from the same class of
-society."
-
-"No, I am descending."
-
-"I beg pardon."
-
-"My last client of the sort was a king."
-
-"Oh, really! I had no idea. And which king?"
-
-"The King of Scandinavia."
-
-"What! Had he lost his wife?"
-
-"You can understand," said Holmes suavely, "that I extend to the
-affairs of my other clients the same secrecy which I promise to
-you in yours."
-
-"Of course! Very right! very right! I'm sure I beg pardon. As to
-my own case, I am ready to give you any information which may
-assist you in forming an opinion."
-
-"Thank you. I have already learned all that is in the public
-prints, nothing more. I presume that I may take it as correct--this
-article, for example, as to the disappearance of the bride."
-
-Lord St. Simon glanced over it. "Yes, it is correct, as far as it
-goes."
-
-"But it needs a great deal of supplementing before anyone could
-offer an opinion. I think that I may arrive at my facts most
-directly by questioning you."
-
-"Pray do so."
-
-"When did you first meet Miss Hatty Doran?"
-
-"In San Francisco, a year ago."
-
-"You were travelling in the States?"
-
-"Yes."
-
-"Did you become engaged then?"
-
-"No."
-
-"But you were on a friendly footing?"
-
-"I was amused by her society, and she could see that I was
-amused."
-
-"Her father is very rich?"
-
-"He is said to be the richest man on the Pacific slope."
-
-"And how did he make his money?"
-
-"In mining. He had nothing a few years ago. Then he struck gold,
-invested it, and came up by leaps and bounds."
-
-"Now, what is your own impression as to the young lady's--your
-wife's character?"
-
-The nobleman swung his glasses a little faster and stared down
-into the fire. "You see, Mr. Holmes," said he, "my wife was
-twenty before her father became a rich man. During that time she
-ran free in a mining camp and wandered through woods or
-mountains, so that her education has come from Nature rather than
-from the schoolmaster. She is what we call in England a tomboy,
-with a strong nature, wild and free, unfettered by any sort of
-traditions. She is impetuous--volcanic, I was about to say. She
-is swift in making up her mind and fearless in carrying out her
-resolutions. On the other hand, I would not have given her the
-name which I have the honour to bear"--he gave a little stately
-cough--"had not I thought her to be at bottom a noble woman. I
-believe that she is capable of heroic self-sacrifice and that
-anything dishonourable would be repugnant to her."
-
-"Have you her photograph?"
-
-"I brought this with me." He opened a locket and showed us the
-full face of a very lovely woman. It was not a photograph but an
-ivory miniature, and the artist had brought out the full effect
-of the lustrous black hair, the large dark eyes, and the
-exquisite mouth. Holmes gazed long and earnestly at it. Then he
-closed the locket and handed it back to Lord St. Simon.
-
-"The young lady came to London, then, and you renewed your
-acquaintance?"
-
-"Yes, her father brought her over for this last London season. I
-met her several times, became engaged to her, and have now
-married her."
-
-"She brought, I understand, a considerable dowry?"
-
-"A fair dowry. Not more than is usual in my family."
-
-"And this, of course, remains to you, since the marriage is a
-fait accompli?"
-
-"I really have made no inquiries on the subject."
-
-"Very naturally not. Did you see Miss Doran on the day before the
-wedding?"
-
-"Yes."
-
-"Was she in good spirits?"
-
-"Never better. She kept talking of what we should do in our
-future lives."
-
-"Indeed! That is very interesting. And on the morning of the
-wedding?"
-
-"She was as bright as possible--at least until after the
-ceremony."
-
-"And did you observe any change in her then?"
-
-"Well, to tell the truth, I saw then the first signs that I had
-ever seen that her temper was just a little sharp. The incident
-however, was too trivial to relate and can have no possible
-bearing upon the case."
-
-"Pray let us have it, for all that."
-
-"Oh, it is childish. She dropped her bouquet as we went towards
-the vestry. She was passing the front pew at the time, and it
-fell over into the pew. There was a moment's delay, but the
-gentleman in the pew handed it up to her again, and it did not
-appear to be the worse for the fall. Yet when I spoke to her of
-the matter, she answered me abruptly; and in the carriage, on our
-way home, she seemed absurdly agitated over this trifling cause."
-
-"Indeed! You say that there was a gentleman in the pew. Some of
-the general public were present, then?"
-
-"Oh, yes. It is impossible to exclude them when the church is
-open."
-
-"This gentleman was not one of your wife's friends?"
-
-"No, no; I call him a gentleman by courtesy, but he was quite a
-common-looking person. I hardly noticed his appearance. But
-really I think that we are wandering rather far from the point."
-
-"Lady St. Simon, then, returned from the wedding in a less
-cheerful frame of mind than she had gone to it. What did she do
-on re-entering her father's house?"
-
-"I saw her in conversation with her maid."
-
-"And who is her maid?"
-
-"Alice is her name. She is an American and came from California
-with her."
-
-"A confidential servant?"
-
-"A little too much so. It seemed to me that her mistress allowed
-her to take great liberties. Still, of course, in America they
-look upon these things in a different way."
-
-"How long did she speak to this Alice?"
-
-"Oh, a few minutes. I had something else to think of."
-
-"You did not overhear what they said?"
-
-"Lady St. Simon said something about 'jumping a claim.' She was
-accustomed to use slang of the kind. I have no idea what she
-meant."
-
-"American slang is very expressive sometimes. And what did your
-wife do when she finished speaking to her maid?"
-
-"She walked into the breakfast-room."
-
-"On your arm?"
-
-"No, alone. She was very independent in little matters like that.
-Then, after we had sat down for ten minutes or so, she rose
-hurriedly, muttered some words of apology, and left the room. She
-never came back."
-
-"But this maid, Alice, as I understand, deposes that she went to
-her room, covered her bride's dress with a long ulster, put on a
-bonnet, and went out."
-
-"Quite so. And she was afterwards seen walking into Hyde Park in
-company with Flora Millar, a woman who is now in custody, and who
-had already made a disturbance at Mr. Doran's house that
-morning."
-
-"Ah, yes. I should like a few particulars as to this young lady,
-and your relations to her."
-
-Lord St. Simon shrugged his shoulders and raised his eyebrows.
-"We have been on a friendly footing for some years--I may say on
-a very friendly footing. She used to be at the Allegro. I have
-not treated her ungenerously, and she had no just cause of
-complaint against me, but you know what women are, Mr. Holmes.
-Flora was a dear little thing, but exceedingly hot-headed and
-devotedly attached to me. She wrote me dreadful letters when she
-heard that I was about to be married, and, to tell the truth, the
-reason why I had the marriage celebrated so quietly was that I
-feared lest there might be a scandal in the church. She came to
-Mr. Doran's door just after we returned, and she endeavoured to
-push her way in, uttering very abusive expressions towards my
-wife, and even threatening her, but I had foreseen the
-possibility of something of the sort, and I had two police
-fellows there in private clothes, who soon pushed her out again.
-She was quiet when she saw that there was no good in making a
-row."
-
-"Did your wife hear all this?"
-
-"No, thank goodness, she did not."
-
-"And she was seen walking with this very woman afterwards?"
-
-"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
-so serious. It is thought that Flora decoyed my wife out and laid
-some terrible trap for her."
-
-"Well, it is a possible supposition."
-
-"You think so, too?"
-
-"I did not say a probable one. But you do not yourself look upon
-this as likely?"
-
-"I do not think Flora would hurt a fly."
-
-"Still, jealousy is a strange transformer of characters. Pray
-what is your own theory as to what took place?"
-
-"Well, really, I came to seek a theory, not to propound one. I
-have given you all the facts. Since you ask me, however, I may
-say that it has occurred to me as possible that the excitement of
-this affair, the consciousness that she had made so immense a
-social stride, had the effect of causing some little nervous
-disturbance in my wife."
-
-"In short, that she had become suddenly deranged?"
-
-"Well, really, when I consider that she has turned her back--I
-will not say upon me, but upon so much that many have aspired to
-without success--I can hardly explain it in any other fashion."
-
-"Well, certainly that is also a conceivable hypothesis," said
-Holmes, smiling. "And now, Lord St. Simon, I think that I have
-nearly all my data. May I ask whether you were seated at the
-breakfast-table so that you could see out of the window?"
-
-"We could see the other side of the road and the Park."
-
-"Quite so. Then I do not think that I need to detain you longer.
-I shall communicate with you."
-
-"Should you be fortunate enough to solve this problem," said our
-client, rising.
-
-"I have solved it."
-
-"Eh? What was that?"
-
-"I say that I have solved it."
-
-"Where, then, is my wife?"
-
-"That is a detail which I shall speedily supply."
-
-Lord St. Simon shook his head. "I am afraid that it will take
-wiser heads than yours or mine," he remarked, and bowing in a
-stately, old-fashioned manner he departed.
-
-"It is very good of Lord St. Simon to honour my head by putting
-it on a level with his own," said Sherlock Holmes, laughing. "I
-think that I shall have a whisky and soda and a cigar after all
-this cross-questioning. I had formed my conclusions as to the
-case before our client came into the room."
-
-"My dear Holmes!"
-
-"I have notes of several similar cases, though none, as I
-remarked before, which were quite as prompt. My whole examination
-served to turn my conjecture into a certainty. Circumstantial
-evidence is occasionally very convincing, as when you find a
-trout in the milk, to quote Thoreau's example."
-
-"But I have heard all that you have heard."
-
-"Without, however, the knowledge of pre-existing cases which
-serves me so well. There was a parallel instance in Aberdeen some
-years back, and something on very much the same lines at Munich
-the year after the Franco-Prussian War. It is one of these
-cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
-You will find an extra tumbler upon the sideboard, and there are
-cigars in the box."
-
-The official detective was attired in a pea-jacket and cravat,
-which gave him a decidedly nautical appearance, and he carried a
-black canvas bag in his hand. With a short greeting he seated
-himself and lit the cigar which had been offered to him.
-
-"What's up, then?" asked Holmes with a twinkle in his eye. "You
-look dissatisfied."
-
-"And I feel dissatisfied. It is this infernal St. Simon marriage
-case. I can make neither head nor tail of the business."
-
-"Really! You surprise me."
-
-"Who ever heard of such a mixed affair? Every clue seems to slip
-through my fingers. I have been at work upon it all day."
-
-"And very wet it seems to have made you," said Holmes laying his
-hand upon the arm of the pea-jacket.
-
-"Yes, I have been dragging the Serpentine."
-
-"In heaven's name, what for?"
-
-"In search of the body of Lady St. Simon."
-
-Sherlock Holmes leaned back in his chair and laughed heartily.
-
-"Have you dragged the basin of Trafalgar Square fountain?" he
-asked.
-
-"Why? What do you mean?"
-
-"Because you have just as good a chance of finding this lady in
-the one as in the other."
-
-Lestrade shot an angry glance at my companion. "I suppose you
-know all about it," he snarled.
-
-"Well, I have only just heard the facts, but my mind is made up."
-
-"Oh, indeed! Then you think that the Serpentine plays no part in
-the matter?"
-
-"I think it very unlikely."
-
-"Then perhaps you will kindly explain how it is that we found
-this in it?" He opened his bag as he spoke, and tumbled onto the
-floor a wedding-dress of watered silk, a pair of white satin
-shoes and a bride's wreath and veil, all discoloured and soaked
-in water. "There," said he, putting a new wedding-ring upon the
-top of the pile. "There is a little nut for you to crack, Master
-Holmes."
-
-"Oh, indeed!" said my friend, blowing blue rings into the air.
-"You dragged them from the Serpentine?"
-
-"No. They were found floating near the margin by a park-keeper.
-They have been identified as her clothes, and it seemed to me
-that if the clothes were there the body would not be far off."
-
-"By the same brilliant reasoning, every man's body is to be found
-in the neighbourhood of his wardrobe. And pray what did you hope
-to arrive at through this?"
-
-"At some evidence implicating Flora Millar in the disappearance."
-
-"I am afraid that you will find it difficult."
-
-"Are you, indeed, now?" cried Lestrade with some bitterness. "I
-am afraid, Holmes, that you are not very practical with your
-deductions and your inferences. You have made two blunders in as
-many minutes. This dress does implicate Miss Flora Millar."
-
-"And how?"
-
-"In the dress is a pocket. In the pocket is a card-case. In the
-card-case is a note. And here is the very note." He slapped it
-down upon the table in front of him. "Listen to this: 'You will
-see me when all is ready. Come at once. F.H.M.' Now my theory all
-along has been that Lady St. Simon was decoyed away by Flora
-Millar, and that she, with confederates, no doubt, was
-responsible for her disappearance. Here, signed with her
-initials, is the very note which was no doubt quietly slipped
-into her hand at the door and which lured her within their
-reach."
-
-"Very good, Lestrade," said Holmes, laughing. "You really are
-very fine indeed. Let me see it." He took up the paper in a
-listless way, but his attention instantly became riveted, and he
-gave a little cry of satisfaction. "This is indeed important,"
-said he.
-
-"Ha! you find it so?"
-
-"Extremely so. I congratulate you warmly."
-
-Lestrade rose in his triumph and bent his head to look. "Why," he
-shrieked, "you're looking at the wrong side!"
-
-"On the contrary, this is the right side."
-
-"The right side? You're mad! Here is the note written in pencil
-over here."
-
-"And over here is what appears to be the fragment of a hotel
-bill, which interests me deeply."
-
-"There's nothing in it. I looked at it before," said Lestrade.
-"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
-6d., glass sherry, 8d.' I see nothing in that."
-
-"Very likely not. It is most important, all the same. As to the
-note, it is important also, or at least the initials are, so I
-congratulate you again."
-
-"I've wasted time enough," said Lestrade, rising. "I believe in
-hard work and not in sitting by the fire spinning fine theories.
-Good-day, Mr. Holmes, and we shall see which gets to the bottom
-of the matter first." He gathered up the garments, thrust them
-into the bag, and made for the door.
-
-"Just one hint to you, Lestrade," drawled Holmes before his rival
-vanished; "I will tell you the true solution of the matter. Lady
-St. Simon is a myth. There is not, and there never has been, any
-such person."
-
-Lestrade looked sadly at my companion. Then he turned to me,
-tapped his forehead three times, shook his head solemnly, and
-hurried away.
-
-He had hardly shut the door behind him when Holmes rose to put on
-his overcoat. "There is something in what the fellow says about
-outdoor work," he remarked, "so I think, Watson, that I must
-leave you to your papers for a little."
-
-It was after five o'clock when Sherlock Holmes left me, but I had
-no time to be lonely, for within an hour there arrived a
-confectioner's man with a very large flat box. This he unpacked
-with the help of a youth whom he had brought with him, and
-presently, to my very great astonishment, a quite epicurean
-little cold supper began to be laid out upon our humble
-lodging-house mahogany. There were a couple of brace of cold
-woodcock, a pheasant, a pâté de foie gras pie with a group of
-ancient and cobwebby bottles. Having laid out all these luxuries,
-my two visitors vanished away, like the genii of the Arabian
-Nights, with no explanation save that the things had been paid
-for and were ordered to this address.
-
-Just before nine o'clock Sherlock Holmes stepped briskly into the
-room. His features were gravely set, but there was a light in his
-eye which made me think that he had not been disappointed in his
-conclusions.
-
-"They have laid the supper, then," he said, rubbing his hands.
-
-"You seem to expect company. They have laid for five."
-
-"Yes, I fancy we may have some company dropping in," said he. "I
-am surprised that Lord St. Simon has not already arrived. Ha! I
-fancy that I hear his step now upon the stairs."
-
-It was indeed our visitor of the afternoon who came bustling in,
-dangling his glasses more vigorously than ever, and with a very
-perturbed expression upon his aristocratic features.
-
-"My messenger reached you, then?" asked Holmes.
-
-"Yes, and I confess that the contents startled me beyond measure.
-Have you good authority for what you say?"
-
-"The best possible."
-
-Lord St. Simon sank into a chair and passed his hand over his
-forehead.
-
-"What will the Duke say," he murmured, "when he hears that one of
-the family has been subjected to such humiliation?"
-
-"It is the purest accident. I cannot allow that there is any
-humiliation."
-
-"Ah, you look on these things from another standpoint."
-
-"I fail to see that anyone is to blame. I can hardly see how the
-lady could have acted otherwise, though her abrupt method of
-doing it was undoubtedly to be regretted. Having no mother, she
-had no one to advise her at such a crisis."
-
-"It was a slight, sir, a public slight," said Lord St. Simon,
-tapping his fingers upon the table.
-
-"You must make allowance for this poor girl, placed in so
-unprecedented a position."
-
-"I will make no allowance. I am very angry indeed, and I have
-been shamefully used."
-
-"I think that I heard a ring," said Holmes. "Yes, there are steps
-on the landing. If I cannot persuade you to take a lenient view
-of the matter, Lord St. Simon, I have brought an advocate here
-who may be more successful." He opened the door and ushered in a
-lady and gentleman. "Lord St. Simon," said he "allow me to
-introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
-think, you have already met."
-
-At the sight of these newcomers our client had sprung from his
-seat and stood very erect, with his eyes cast down and his hand
-thrust into the breast of his frock-coat, a picture of offended
-dignity. The lady had taken a quick step forward and had held out
-her hand to him, but he still refused to raise his eyes. It was
-as well for his resolution, perhaps, for her pleading face was
-one which it was hard to resist.
-
-"You're angry, Robert," said she. "Well, I guess you have every
-cause to be."
-
-"Pray make no apology to me," said Lord St. Simon bitterly.
-
-"Oh, yes, I know that I have treated you real bad and that I
-should have spoken to you before I went; but I was kind of
-rattled, and from the time when I saw Frank here again I just
-didn't know what I was doing or saying. I only wonder I didn't
-fall down and do a faint right there before the altar."
-
-"Perhaps, Mrs. Moulton, you would like my friend and me to leave
-the room while you explain this matter?"
-
-"If I may give an opinion," remarked the strange gentleman,
-"we've had just a little too much secrecy over this business
-already. For my part, I should like all Europe and America to
-hear the rights of it." He was a small, wiry, sunburnt man,
-clean-shaven, with a sharp face and alert manner.
-
-"Then I'll tell our story right away," said the lady. "Frank here
-and I met in '84, in McQuire's camp, near the Rockies, where pa
-was working a claim. We were engaged to each other, Frank and I;
-but then one day father struck a rich pocket and made a pile,
-while poor Frank here had a claim that petered out and came to
-nothing. The richer pa grew the poorer was Frank; so at last pa
-wouldn't hear of our engagement lasting any longer, and he took
-me away to 'Frisco. Frank wouldn't throw up his hand, though; so
-he followed me there, and he saw me without pa knowing anything
-about it. It would only have made him mad to know, so we just
-fixed it all up for ourselves. Frank said that he would go and
-make his pile, too, and never come back to claim me until he had
-as much as pa. So then I promised to wait for him to the end of
-time and pledged myself not to marry anyone else while he lived.
-'Why shouldn't we be married right away, then,' said he, 'and
-then I will feel sure of you; and I won't claim to be your
-husband until I come back?' Well, we talked it over, and he had
-fixed it all up so nicely, with a clergyman all ready in waiting,
-that we just did it right there; and then Frank went off to seek
-his fortune, and I went back to pa.
-
-"The next I heard of Frank was that he was in Montana, and then
-he went prospecting in Arizona, and then I heard of him from New
-Mexico. After that came a long newspaper story about how a
-miners' camp had been attacked by Apache Indians, and there was
-my Frank's name among the killed. I fainted dead away, and I was
-very sick for months after. Pa thought I had a decline and took
-me to half the doctors in 'Frisco. Not a word of news came for a
-year and more, so that I never doubted that Frank was really
-dead. Then Lord St. Simon came to 'Frisco, and we came to London,
-and a marriage was arranged, and pa was very pleased, but I felt
-all the time that no man on this earth would ever take the place
-in my heart that had been given to my poor Frank.
-
-"Still, if I had married Lord St. Simon, of course I'd have done
-my duty by him. We can't command our love, but we can our
-actions. I went to the altar with him with the intention to make
-him just as good a wife as it was in me to be. But you may
-imagine what I felt when, just as I came to the altar rails, I
-glanced back and saw Frank standing and looking at me out of the
-first pew. I thought it was his ghost at first; but when I looked
-again there he was still, with a kind of question in his eyes, as
-if to ask me whether I were glad or sorry to see him. I wonder I
-didn't drop. I know that everything was turning round, and the
-words of the clergyman were just like the buzz of a bee in my
-ear. I didn't know what to do. Should I stop the service and make
-a scene in the church? I glanced at him again, and he seemed to
-know what I was thinking, for he raised his finger to his lips to
-tell me to be still. Then I saw him scribble on a piece of paper,
-and I knew that he was writing me a note. As I passed his pew on
-the way out I dropped my bouquet over to him, and he slipped the
-note into my hand when he returned me the flowers. It was only a
-line asking me to join him when he made the sign to me to do so.
-Of course I never doubted for a moment that my first duty was now
-to him, and I determined to do just whatever he might direct.
-
-"When I got back I told my maid, who had known him in California,
-and had always been his friend. I ordered her to say nothing, but
-to get a few things packed and my ulster ready. I know I ought to
-have spoken to Lord St. Simon, but it was dreadful hard before
-his mother and all those great people. I just made up my mind to
-run away and explain afterwards. I hadn't been at the table ten
-minutes before I saw Frank out of the window at the other side of
-the road. He beckoned to me and then began walking into the Park.
-I slipped out, put on my things, and followed him. Some woman
-came talking something or other about Lord St. Simon to
-me--seemed to me from the little I heard as if he had a little
-secret of his own before marriage also--but I managed to get away
-from her and soon overtook Frank. We got into a cab together, and
-away we drove to some lodgings he had taken in Gordon Square, and
-that was my true wedding after all those years of waiting. Frank
-had been a prisoner among the Apaches, had escaped, came on to
-'Frisco, found that I had given him up for dead and had gone to
-England, followed me there, and had come upon me at last on the
-very morning of my second wedding."
-
-"I saw it in a paper," explained the American. "It gave the name
-and the church but not where the lady lived."
-
-"Then we had a talk as to what we should do, and Frank was all
-for openness, but I was so ashamed of it all that I felt as if I
-should like to vanish away and never see any of them again--just
-sending a line to pa, perhaps, to show him that I was alive. It
-was awful to me to think of all those lords and ladies sitting
-round that breakfast-table and waiting for me to come back. So
-Frank took my wedding-clothes and things and made a bundle of
-them, so that I should not be traced, and dropped them away
-somewhere where no one could find them. It is likely that we
-should have gone on to Paris to-morrow, only that this good
-gentleman, Mr. Holmes, came round to us this evening, though how
-he found us is more than I can think, and he showed us very
-clearly and kindly that I was wrong and that Frank was right, and
-that we should be putting ourselves in the wrong if we were so
-secret. Then he offered to give us a chance of talking to Lord
-St. Simon alone, and so we came right away round to his rooms at
-once. Now, Robert, you have heard it all, and I am very sorry if
-I have given you pain, and I hope that you do not think very
-meanly of me."
-
-Lord St. Simon had by no means relaxed his rigid attitude, but
-had listened with a frowning brow and a compressed lip to this
-long narrative.
-
-"Excuse me," he said, "but it is not my custom to discuss my most
-intimate personal affairs in this public manner."
-
-"Then you won't forgive me? You won't shake hands before I go?"
-
-"Oh, certainly, if it would give you any pleasure." He put out
-his hand and coldly grasped that which she extended to him.
-
-"I had hoped," suggested Holmes, "that you would have joined us
-in a friendly supper."
-
-"I think that there you ask a little too much," responded his
-Lordship. "I may be forced to acquiesce in these recent
-developments, but I can hardly be expected to make merry over
-them. I think that with your permission I will now wish you all a
-very good-night." He included us all in a sweeping bow and
-stalked out of the room.
-
-"Then I trust that you at least will honour me with your
-company," said Sherlock Holmes. "It is always a joy to meet an
-American, Mr. Moulton, for I am one of those who believe that the
-folly of a monarch and the blundering of a minister in far-gone
-years will not prevent our children from being some day citizens
-of the same world-wide country under a flag which shall be a
-quartering of the Union Jack with the Stars and Stripes."
-
-"The case has been an interesting one," remarked Holmes when our
-visitors had left us, "because it serves to show very clearly how
-simple the explanation may be of an affair which at first sight
-seems to be almost inexplicable. Nothing could be more natural
-than the sequence of events as narrated by this lady, and nothing
-stranger than the result when viewed, for instance, by Mr.
-Lestrade of Scotland Yard."
-
-"You were not yourself at fault at all, then?"
-
-"From the first, two facts were very obvious to me, the one that
-the lady had been quite willing to undergo the wedding ceremony,
-the other that she had repented of it within a few minutes of
-returning home. Obviously something had occurred during the
-morning, then, to cause her to change her mind. What could that
-something be? She could not have spoken to anyone when she was
-out, for she had been in the company of the bridegroom. Had she
-seen someone, then? If she had, it must be someone from America
-because she had spent so short a time in this country that she
-could hardly have allowed anyone to acquire so deep an influence
-over her that the mere sight of him would induce her to change
-her plans so completely. You see we have already arrived, by a
-process of exclusion, at the idea that she might have seen an
-American. Then who could this American be, and why should he
-possess so much influence over her? It might be a lover; it might
-be a husband. Her young womanhood had, I knew, been spent in
-rough scenes and under strange conditions. So far I had got
-before I ever heard Lord St. Simon's narrative. When he told us
-of a man in a pew, of the change in the bride's manner, of so
-transparent a device for obtaining a note as the dropping of a
-bouquet, of her resort to her confidential maid, and of her very
-significant allusion to claim-jumping--which in miners' parlance
-means taking possession of that which another person has a prior
-claim to--the whole situation became absolutely clear. She had
-gone off with a man, and the man was either a lover or was a
-previous husband--the chances being in favour of the latter."
-
-"And how in the world did you find them?"
-
-"It might have been difficult, but friend Lestrade held
-information in his hands the value of which he did not himself
-know. The initials were, of course, of the highest importance,
-but more valuable still was it to know that within a week he had
-settled his bill at one of the most select London hotels."
-
-"How did you deduce the select?"
-
-"By the select prices. Eight shillings for a bed and eightpence
-for a glass of sherry pointed to one of the most expensive
-hotels. There are not many in London which charge at that rate.
-In the second one which I visited in Northumberland Avenue, I
-learned by an inspection of the book that Francis H. Moulton, an
-American gentleman, had left only the day before, and on looking
-over the entries against him, I came upon the very items which I
-had seen in the duplicate bill. His letters were to be forwarded
-to 226 Gordon Square; so thither I travelled, and being fortunate
-enough to find the loving couple at home, I ventured to give them
-some paternal advice and to point out to them that it would be
-better in every way that they should make their position a little
-clearer both to the general public and to Lord St. Simon in
-particular. I invited them to meet him here, and, as you see, I
-made him keep the appointment."
-
-"But with no very good result," I remarked. "His conduct was
-certainly not very gracious."
-
-"Ah, Watson," said Holmes, smiling, "perhaps you would not be
-very gracious either, if, after all the trouble of wooing and
-wedding, you found yourself deprived in an instant of wife and of
-fortune. I think that we may judge Lord St. Simon very mercifully
-and thank our stars that we are never likely to find ourselves in
-the same position. Draw your chair up and hand me my violin, for
-the only problem we have still to solve is how to while away
-these bleak autumnal evenings."
-
-
-
-XI. THE ADVENTURE OF THE BERYL CORONET
-
-"Holmes," said I as I stood one morning in our bow-window looking
-down the street, "here is a madman coming along. It seems rather
-sad that his relatives should allow him to come out alone."
-
-My friend rose lazily from his armchair and stood with his hands
-in the pockets of his dressing-gown, looking over my shoulder. It
-was a bright, crisp February morning, and the snow of the day
-before still lay deep upon the ground, shimmering brightly in the
-wintry sun. Down the centre of Baker Street it had been ploughed
-into a brown crumbly band by the traffic, but at either side and
-on the heaped-up edges of the foot-paths it still lay as white as
-when it fell. The grey pavement had been cleaned and scraped, but
-was still dangerously slippery, so that there were fewer
-passengers than usual. Indeed, from the direction of the
-Metropolitan Station no one was coming save the single gentleman
-whose eccentric conduct had drawn my attention.
-
-He was a man of about fifty, tall, portly, and imposing, with a
-massive, strongly marked face and a commanding figure. He was
-dressed in a sombre yet rich style, in black frock-coat, shining
-hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
-his actions were in absurd contrast to the dignity of his dress
-and features, for he was running hard, with occasional little
-springs, such as a weary man gives who is little accustomed to
-set any tax upon his legs. As he ran he jerked his hands up and
-down, waggled his head, and writhed his face into the most
-extraordinary contortions.
-
-"What on earth can be the matter with him?" I asked. "He is
-looking up at the numbers of the houses."
-
-"I believe that he is coming here," said Holmes, rubbing his
-hands.
-
-"Here?"
-
-"Yes; I rather think he is coming to consult me professionally. I
-think that I recognise the symptoms. Ha! did I not tell you?" As
-he spoke, the man, puffing and blowing, rushed at our door and
-pulled at our bell until the whole house resounded with the
-clanging.
-
-A few moments later he was in our room, still puffing, still
-gesticulating, but with so fixed a look of grief and despair in
-his eyes that our smiles were turned in an instant to horror and
-pity. For a while he could not get his words out, but swayed his
-body and plucked at his hair like one who has been driven to the
-extreme limits of his reason. Then, suddenly springing to his
-feet, he beat his head against the wall with such force that we
-both rushed upon him and tore him away to the centre of the room.
-Sherlock Holmes pushed him down into the easy-chair and, sitting
-beside him, patted his hand and chatted with him in the easy,
-soothing tones which he knew so well how to employ.
-
-"You have come to me to tell your story, have you not?" said he.
-"You are fatigued with your haste. Pray wait until you have
-recovered yourself, and then I shall be most happy to look into
-any little problem which you may submit to me."
-
-The man sat for a minute or more with a heaving chest, fighting
-against his emotion. Then he passed his handkerchief over his
-brow, set his lips tight, and turned his face towards us.
-
-"No doubt you think me mad?" said he.
-
-"I see that you have had some great trouble," responded Holmes.
-
-"God knows I have!--a trouble which is enough to unseat my
-reason, so sudden and so terrible is it. Public disgrace I might
-have faced, although I am a man whose character has never yet
-borne a stain. Private affliction also is the lot of every man;
-but the two coming together, and in so frightful a form, have
-been enough to shake my very soul. Besides, it is not I alone.
-The very noblest in the land may suffer unless some way be found
-out of this horrible affair."
-
-"Pray compose yourself, sir," said Holmes, "and let me have a
-clear account of who you are and what it is that has befallen
-you."
-
-"My name," answered our visitor, "is probably familiar to your
-ears. I am Alexander Holder, of the banking firm of Holder &
-Stevenson, of Threadneedle Street."
-
-The name was indeed well known to us as belonging to the senior
-partner in the second largest private banking concern in the City
-of London. What could have happened, then, to bring one of the
-foremost citizens of London to this most pitiable pass? We
-waited, all curiosity, until with another effort he braced
-himself to tell his story.
-
-"I feel that time is of value," said he; "that is why I hastened
-here when the police inspector suggested that I should secure
-your co-operation. I came to Baker Street by the Underground and
-hurried from there on foot, for the cabs go slowly through this
-snow. That is why I was so out of breath, for I am a man who
-takes very little exercise. I feel better now, and I will put the
-facts before you as shortly and yet as clearly as I can.
-
-"It is, of course, well known to you that in a successful banking
-business as much depends upon our being able to find remunerative
-investments for our funds as upon our increasing our connection
-and the number of our depositors. One of our most lucrative means
-of laying out money is in the shape of loans, where the security
-is unimpeachable. We have done a good deal in this direction
-during the last few years, and there are many noble families to
-whom we have advanced large sums upon the security of their
-pictures, libraries, or plate.
-
-"Yesterday morning I was seated in my office at the bank when a
-card was brought in to me by one of the clerks. I started when I
-saw the name, for it was that of none other than--well, perhaps
-even to you I had better say no more than that it was a name
-which is a household word all over the earth--one of the highest,
-noblest, most exalted names in England. I was overwhelmed by the
-honour and attempted, when he entered, to say so, but he plunged
-at once into business with the air of a man who wishes to hurry
-quickly through a disagreeable task.
-
-"'Mr. Holder,' said he, 'I have been informed that you are in the
-habit of advancing money.'
-
-"'The firm does so when the security is good.' I answered.
-
-"'It is absolutely essential to me,' said he, 'that I should have
-50,000 pounds at once. I could, of course, borrow so trifling a
-sum ten times over from my friends, but I much prefer to make it
-a matter of business and to carry out that business myself. In my
-position you can readily understand that it is unwise to place
-one's self under obligations.'
-
-"'For how long, may I ask, do you want this sum?' I asked.
-
-"'Next Monday I have a large sum due to me, and I shall then most
-certainly repay what you advance, with whatever interest you
-think it right to charge. But it is very essential to me that the
-money should be paid at once.'
-
-"'I should be happy to advance it without further parley from my
-own private purse,' said I, 'were it not that the strain would be
-rather more than it could bear. If, on the other hand, I am to do
-it in the name of the firm, then in justice to my partner I must
-insist that, even in your case, every businesslike precaution
-should be taken.'
-
-"'I should much prefer to have it so,' said he, raising up a
-square, black morocco case which he had laid beside his chair.
-'You have doubtless heard of the Beryl Coronet?'
-
-"'One of the most precious public possessions of the empire,'
-said I.
-
-"'Precisely.' He opened the case, and there, imbedded in soft,
-flesh-coloured velvet, lay the magnificent piece of jewellery
-which he had named. 'There are thirty-nine enormous beryls,' said
-he, 'and the price of the gold chasing is incalculable. The
-lowest estimate would put the worth of the coronet at double the
-sum which I have asked. I am prepared to leave it with you as my
-security.'
-
-"I took the precious case into my hands and looked in some
-perplexity from it to my illustrious client.
-
-"'You doubt its value?' he asked.
-
-"'Not at all. I only doubt--'
-
-"'The propriety of my leaving it. You may set your mind at rest
-about that. I should not dream of doing so were it not absolutely
-certain that I should be able in four days to reclaim it. It is a
-pure matter of form. Is the security sufficient?'
-
-"'Ample.'
-
-"'You understand, Mr. Holder, that I am giving you a strong proof
-of the confidence which I have in you, founded upon all that I
-have heard of you. I rely upon you not only to be discreet and to
-refrain from all gossip upon the matter but, above all, to
-preserve this coronet with every possible precaution because I
-need not say that a great public scandal would be caused if any
-harm were to befall it. Any injury to it would be almost as
-serious as its complete loss, for there are no beryls in the
-world to match these, and it would be impossible to replace them.
-I leave it with you, however, with every confidence, and I shall
-call for it in person on Monday morning.'
-
-"Seeing that my client was anxious to leave, I said no more but,
-calling for my cashier, I ordered him to pay over fifty 1000
-pound notes. When I was alone once more, however, with the
-precious case lying upon the table in front of me, I could not
-but think with some misgivings of the immense responsibility
-which it entailed upon me. There could be no doubt that, as it
-was a national possession, a horrible scandal would ensue if any
-misfortune should occur to it. I already regretted having ever
-consented to take charge of it. However, it was too late to alter
-the matter now, so I locked it up in my private safe and turned
-once more to my work.
-
-"When evening came I felt that it would be an imprudence to leave
-so precious a thing in the office behind me. Bankers' safes had
-been forced before now, and why should not mine be? If so, how
-terrible would be the position in which I should find myself! I
-determined, therefore, that for the next few days I would always
-carry the case backward and forward with me, so that it might
-never be really out of my reach. With this intention, I called a
-cab and drove out to my house at Streatham, carrying the jewel
-with me. I did not breathe freely until I had taken it upstairs
-and locked it in the bureau of my dressing-room.
-
-"And now a word as to my household, Mr. Holmes, for I wish you to
-thoroughly understand the situation. My groom and my page sleep
-out of the house, and may be set aside altogether. I have three
-maid-servants who have been with me a number of years and whose
-absolute reliability is quite above suspicion. Another, Lucy
-Parr, the second waiting-maid, has only been in my service a few
-months. She came with an excellent character, however, and has
-always given me satisfaction. She is a very pretty girl and has
-attracted admirers who have occasionally hung about the place.
-That is the only drawback which we have found to her, but we
-believe her to be a thoroughly good girl in every way.
-
-"So much for the servants. My family itself is so small that it
-will not take me long to describe it. I am a widower and have an
-only son, Arthur. He has been a disappointment to me, Mr.
-Holmes--a grievous disappointment. I have no doubt that I am
-myself to blame. People tell me that I have spoiled him. Very
-likely I have. When my dear wife died I felt that he was all I
-had to love. I could not bear to see the smile fade even for a
-moment from his face. I have never denied him a wish. Perhaps it
-would have been better for both of us had I been sterner, but I
-meant it for the best.
-
-"It was naturally my intention that he should succeed me in my
-business, but he was not of a business turn. He was wild,
-wayward, and, to speak the truth, I could not trust him in the
-handling of large sums of money. When he was young he became a
-member of an aristocratic club, and there, having charming
-manners, he was soon the intimate of a number of men with long
-purses and expensive habits. He learned to play heavily at cards
-and to squander money on the turf, until he had again and again
-to come to me and implore me to give him an advance upon his
-allowance, that he might settle his debts of honour. He tried
-more than once to break away from the dangerous company which he
-was keeping, but each time the influence of his friend, Sir
-George Burnwell, was enough to draw him back again.
-
-"And, indeed, I could not wonder that such a man as Sir George
-Burnwell should gain an influence over him, for he has frequently
-brought him to my house, and I have found myself that I could
-hardly resist the fascination of his manner. He is older than
-Arthur, a man of the world to his finger-tips, one who had been
-everywhere, seen everything, a brilliant talker, and a man of
-great personal beauty. Yet when I think of him in cold blood, far
-away from the glamour of his presence, I am convinced from his
-cynical speech and the look which I have caught in his eyes that
-he is one who should be deeply distrusted. So I think, and so,
-too, thinks my little Mary, who has a woman's quick insight into
-character.
-
-"And now there is only she to be described. She is my niece; but
-when my brother died five years ago and left her alone in the
-world I adopted her, and have looked upon her ever since as my
-daughter. She is a sunbeam in my house--sweet, loving, beautiful,
-a wonderful manager and housekeeper, yet as tender and quiet and
-gentle as a woman could be. She is my right hand. I do not know
-what I could do without her. In only one matter has she ever gone
-against my wishes. Twice my boy has asked her to marry him, for
-he loves her devotedly, but each time she has refused him. I
-think that if anyone could have drawn him into the right path it
-would have been she, and that his marriage might have changed his
-whole life; but now, alas! it is too late--forever too late!
-
-"Now, Mr. Holmes, you know the people who live under my roof, and
-I shall continue with my miserable story.
-
-"When we were taking coffee in the drawing-room that night after
-dinner, I told Arthur and Mary my experience, and of the precious
-treasure which we had under our roof, suppressing only the name
-of my client. Lucy Parr, who had brought in the coffee, had, I am
-sure, left the room; but I cannot swear that the door was closed.
-Mary and Arthur were much interested and wished to see the famous
-coronet, but I thought it better not to disturb it.
-
-"'Where have you put it?' asked Arthur.
-
-"'In my own bureau.'
-
-"'Well, I hope to goodness the house won't be burgled during the
-night.' said he.
-
-"'It is locked up,' I answered.
-
-"'Oh, any old key will fit that bureau. When I was a youngster I
-have opened it myself with the key of the box-room cupboard.'
-
-"He often had a wild way of talking, so that I thought little of
-what he said. He followed me to my room, however, that night with
-a very grave face.
-
-"'Look here, dad,' said he with his eyes cast down, 'can you let
-me have 200 pounds?'
-
-"'No, I cannot!' I answered sharply. 'I have been far too
-generous with you in money matters.'
-
-"'You have been very kind,' said he, 'but I must have this money,
-or else I can never show my face inside the club again.'
-
-"'And a very good thing, too!' I cried.
-
-"'Yes, but you would not have me leave it a dishonoured man,'
-said he. 'I could not bear the disgrace. I must raise the money
-in some way, and if you will not let me have it, then I must try
-other means.'
-
-"I was very angry, for this was the third demand during the
-month. 'You shall not have a farthing from me,' I cried, on which
-he bowed and left the room without another word.
-
-"When he was gone I unlocked my bureau, made sure that my
-treasure was safe, and locked it again. Then I started to go
-round the house to see that all was secure--a duty which I
-usually leave to Mary but which I thought it well to perform
-myself that night. As I came down the stairs I saw Mary herself
-at the side window of the hall, which she closed and fastened as
-I approached.
-
-"'Tell me, dad,' said she, looking, I thought, a little
-disturbed, 'did you give Lucy, the maid, leave to go out
-to-night?'
-
-"'Certainly not.'
-
-"'She came in just now by the back door. I have no doubt that she
-has only been to the side gate to see someone, but I think that
-it is hardly safe and should be stopped.'
-
-"'You must speak to her in the morning, or I will if you prefer
-it. Are you sure that everything is fastened?'
-
-"'Quite sure, dad.'
-
-"'Then, good-night.' I kissed her and went up to my bedroom
-again, where I was soon asleep.
-
-"I am endeavouring to tell you everything, Mr. Holmes, which may
-have any bearing upon the case, but I beg that you will question
-me upon any point which I do not make clear."
-
-"On the contrary, your statement is singularly lucid."
-
-"I come to a part of my story now in which I should wish to be
-particularly so. I am not a very heavy sleeper, and the anxiety
-in my mind tended, no doubt, to make me even less so than usual.
-About two in the morning, then, I was awakened by some sound in
-the house. It had ceased ere I was wide awake, but it had left an
-impression behind it as though a window had gently closed
-somewhere. I lay listening with all my ears. Suddenly, to my
-horror, there was a distinct sound of footsteps moving softly in
-the next room. I slipped out of bed, all palpitating with fear,
-and peeped round the corner of my dressing-room door.
-
-"'Arthur!' I screamed, 'you villain! you thief! How dare you
-touch that coronet?'
-
-"The gas was half up, as I had left it, and my unhappy boy,
-dressed only in his shirt and trousers, was standing beside the
-light, holding the coronet in his hands. He appeared to be
-wrenching at it, or bending it with all his strength. At my cry
-he dropped it from his grasp and turned as pale as death. I
-snatched it up and examined it. One of the gold corners, with
-three of the beryls in it, was missing.
-
-"'You blackguard!' I shouted, beside myself with rage. 'You have
-destroyed it! You have dishonoured me forever! Where are the
-jewels which you have stolen?'
-
-"'Stolen!' he cried.
-
-"'Yes, thief!' I roared, shaking him by the shoulder.
-
-"'There are none missing. There cannot be any missing,' said he.
-
-"'There are three missing. And you know where they are. Must I
-call you a liar as well as a thief? Did I not see you trying to
-tear off another piece?'
-
-"'You have called me names enough,' said he, 'I will not stand it
-any longer. I shall not say another word about this business,
-since you have chosen to insult me. I will leave your house in
-the morning and make my own way in the world.'
-
-"'You shall leave it in the hands of the police!' I cried
-half-mad with grief and rage. 'I shall have this matter probed to
-the bottom.'
-
-"'You shall learn nothing from me,' said he with a passion such
-as I should not have thought was in his nature. 'If you choose to
-call the police, let the police find what they can.'
-
-"By this time the whole house was astir, for I had raised my
-voice in my anger. Mary was the first to rush into my room, and,
-at the sight of the coronet and of Arthur's face, she read the
-whole story and, with a scream, fell down senseless on the
-ground. I sent the house-maid for the police and put the
-investigation into their hands at once. When the inspector and a
-constable entered the house, Arthur, who had stood sullenly with
-his arms folded, asked me whether it was my intention to charge
-him with theft. I answered that it had ceased to be a private
-matter, but had become a public one, since the ruined coronet was
-national property. I was determined that the law should have its
-way in everything.
-
-"'At least,' said he, 'you will not have me arrested at once. It
-would be to your advantage as well as mine if I might leave the
-house for five minutes.'
-
-"'That you may get away, or perhaps that you may conceal what you
-have stolen,' said I. And then, realising the dreadful position
-in which I was placed, I implored him to remember that not only
-my honour but that of one who was far greater than I was at
-stake; and that he threatened to raise a scandal which would
-convulse the nation. He might avert it all if he would but tell
-me what he had done with the three missing stones.
-
-"'You may as well face the matter,' said I; 'you have been caught
-in the act, and no confession could make your guilt more heinous.
-If you but make such reparation as is in your power, by telling
-us where the beryls are, all shall be forgiven and forgotten.'
-
-"'Keep your forgiveness for those who ask for it,' he answered,
-turning away from me with a sneer. I saw that he was too hardened
-for any words of mine to influence him. There was but one way for
-it. I called in the inspector and gave him into custody. A search
-was made at once not only of his person but of his room and of
-every portion of the house where he could possibly have concealed
-the gems; but no trace of them could be found, nor would the
-wretched boy open his mouth for all our persuasions and our
-threats. This morning he was removed to a cell, and I, after
-going through all the police formalities, have hurried round to
-you to implore you to use your skill in unravelling the matter.
-The police have openly confessed that they can at present make
-nothing of it. You may go to any expense which you think
-necessary. I have already offered a reward of 1000 pounds. My
-God, what shall I do! I have lost my honour, my gems, and my son
-in one night. Oh, what shall I do!"
-
-He put a hand on either side of his head and rocked himself to
-and fro, droning to himself like a child whose grief has got
-beyond words.
-
-Sherlock Holmes sat silent for some few minutes, with his brows
-knitted and his eyes fixed upon the fire.
-
-"Do you receive much company?" he asked.
-
-"None save my partner with his family and an occasional friend of
-Arthur's. Sir George Burnwell has been several times lately. No
-one else, I think."
-
-"Do you go out much in society?"
-
-"Arthur does. Mary and I stay at home. We neither of us care for
-it."
-
-"That is unusual in a young girl."
-
-"She is of a quiet nature. Besides, she is not so very young. She
-is four-and-twenty."
-
-"This matter, from what you say, seems to have been a shock to
-her also."
-
-"Terrible! She is even more affected than I."
-
-"You have neither of you any doubt as to your son's guilt?"
-
-"How can we have when I saw him with my own eyes with the coronet
-in his hands."
-
-"I hardly consider that a conclusive proof. Was the remainder of
-the coronet at all injured?"
-
-"Yes, it was twisted."
-
-"Do you not think, then, that he might have been trying to
-straighten it?"
-
-"God bless you! You are doing what you can for him and for me.
-But it is too heavy a task. What was he doing there at all? If
-his purpose were innocent, why did he not say so?"
-
-"Precisely. And if it were guilty, why did he not invent a lie?
-His silence appears to me to cut both ways. There are several
-singular points about the case. What did the police think of the
-noise which awoke you from your sleep?"
-
-"They considered that it might be caused by Arthur's closing his
-bedroom door."
-
-"A likely story! As if a man bent on felony would slam his door
-so as to wake a household. What did they say, then, of the
-disappearance of these gems?"
-
-"They are still sounding the planking and probing the furniture
-in the hope of finding them."
-
-"Have they thought of looking outside the house?"
-
-"Yes, they have shown extraordinary energy. The whole garden has
-already been minutely examined."
-
-"Now, my dear sir," said Holmes, "is it not obvious to you now
-that this matter really strikes very much deeper than either you
-or the police were at first inclined to think? It appeared to you
-to be a simple case; to me it seems exceedingly complex. Consider
-what is involved by your theory. You suppose that your son came
-down from his bed, went, at great risk, to your dressing-room,
-opened your bureau, took out your coronet, broke off by main
-force a small portion of it, went off to some other place,
-concealed three gems out of the thirty-nine, with such skill that
-nobody can find them, and then returned with the other thirty-six
-into the room in which he exposed himself to the greatest danger
-of being discovered. I ask you now, is such a theory tenable?"
-
-"But what other is there?" cried the banker with a gesture of
-despair. "If his motives were innocent, why does he not explain
-them?"
-
-"It is our task to find that out," replied Holmes; "so now, if
-you please, Mr. Holder, we will set off for Streatham together,
-and devote an hour to glancing a little more closely into
-details."
-
-My friend insisted upon my accompanying them in their expedition,
-which I was eager enough to do, for my curiosity and sympathy
-were deeply stirred by the story to which we had listened. I
-confess that the guilt of the banker's son appeared to me to be
-as obvious as it did to his unhappy father, but still I had such
-faith in Holmes' judgment that I felt that there must be some
-grounds for hope as long as he was dissatisfied with the accepted
-explanation. He hardly spoke a word the whole way out to the
-southern suburb, but sat with his chin upon his breast and his
-hat drawn over his eyes, sunk in the deepest thought. Our client
-appeared to have taken fresh heart at the little glimpse of hope
-which had been presented to him, and he even broke into a
-desultory chat with me over his business affairs. A short railway
-journey and a shorter walk brought us to Fairbank, the modest
-residence of the great financier.
-
-Fairbank was a good-sized square house of white stone, standing
-back a little from the road. A double carriage-sweep, with a
-snow-clad lawn, stretched down in front to two large iron gates
-which closed the entrance. On the right side was a small wooden
-thicket, which led into a narrow path between two neat hedges
-stretching from the road to the kitchen door, and forming the
-tradesmen's entrance. On the left ran a lane which led to the
-stables, and was not itself within the grounds at all, being a
-public, though little used, thoroughfare. Holmes left us standing
-at the door and walked slowly all round the house, across the
-front, down the tradesmen's path, and so round by the garden
-behind into the stable lane. So long was he that Mr. Holder and I
-went into the dining-room and waited by the fire until he should
-return. We were sitting there in silence when the door opened and
-a young lady came in. She was rather above the middle height,
-slim, with dark hair and eyes, which seemed the darker against
-the absolute pallor of her skin. I do not think that I have ever
-seen such deadly paleness in a woman's face. Her lips, too, were
-bloodless, but her eyes were flushed with crying. As she swept
-silently into the room she impressed me with a greater sense of
-grief than the banker had done in the morning, and it was the
-more striking in her as she was evidently a woman of strong
-character, with immense capacity for self-restraint. Disregarding
-my presence, she went straight to her uncle and passed her hand
-over his head with a sweet womanly caress.
-
-"You have given orders that Arthur should be liberated, have you
-not, dad?" she asked.
-
-"No, no, my girl, the matter must be probed to the bottom."
-
-"But I am so sure that he is innocent. You know what woman's
-instincts are. I know that he has done no harm and that you will
-be sorry for having acted so harshly."
-
-"Why is he silent, then, if he is innocent?"
-
-"Who knows? Perhaps because he was so angry that you should
-suspect him."
-
-"How could I help suspecting him, when I actually saw him with
-the coronet in his hand?"
-
-"Oh, but he had only picked it up to look at it. Oh, do, do take
-my word for it that he is innocent. Let the matter drop and say
-no more. It is so dreadful to think of our dear Arthur in
-prison!"
-
-"I shall never let it drop until the gems are found--never, Mary!
-Your affection for Arthur blinds you as to the awful consequences
-to me. Far from hushing the thing up, I have brought a gentleman
-down from London to inquire more deeply into it."
-
-"This gentleman?" she asked, facing round to me.
-
-"No, his friend. He wished us to leave him alone. He is round in
-the stable lane now."
-
-"The stable lane?" She raised her dark eyebrows. "What can he
-hope to find there? Ah! this, I suppose, is he. I trust, sir,
-that you will succeed in proving, what I feel sure is the truth,
-that my cousin Arthur is innocent of this crime."
-
-"I fully share your opinion, and I trust, with you, that we may
-prove it," returned Holmes, going back to the mat to knock the
-snow from his shoes. "I believe I have the honour of addressing
-Miss Mary Holder. Might I ask you a question or two?"
-
-"Pray do, sir, if it may help to clear this horrible affair up."
-
-"You heard nothing yourself last night?"
-
-"Nothing, until my uncle here began to speak loudly. I heard
-that, and I came down."
-
-"You shut up the windows and doors the night before. Did you
-fasten all the windows?"
-
-"Yes."
-
-"Were they all fastened this morning?"
-
-"Yes."
-
-"You have a maid who has a sweetheart? I think that you remarked
-to your uncle last night that she had been out to see him?"
-
-"Yes, and she was the girl who waited in the drawing-room, and
-who may have heard uncle's remarks about the coronet."
-
-"I see. You infer that she may have gone out to tell her
-sweetheart, and that the two may have planned the robbery."
-
-"But what is the good of all these vague theories," cried the
-banker impatiently, "when I have told you that I saw Arthur with
-the coronet in his hands?"
-
-"Wait a little, Mr. Holder. We must come back to that. About this
-girl, Miss Holder. You saw her return by the kitchen door, I
-presume?"
-
-"Yes; when I went to see if the door was fastened for the night I
-met her slipping in. I saw the man, too, in the gloom."
-
-"Do you know him?"
-
-"Oh, yes! he is the green-grocer who brings our vegetables round.
-His name is Francis Prosper."
-
-"He stood," said Holmes, "to the left of the door--that is to
-say, farther up the path than is necessary to reach the door?"
-
-"Yes, he did."
-
-"And he is a man with a wooden leg?"
-
-Something like fear sprang up in the young lady's expressive
-black eyes. "Why, you are like a magician," said she. "How do you
-know that?" She smiled, but there was no answering smile in
-Holmes' thin, eager face.
-
-"I should be very glad now to go upstairs," said he. "I shall
-probably wish to go over the outside of the house again. Perhaps
-I had better take a look at the lower windows before I go up."
-
-He walked swiftly round from one to the other, pausing only at
-the large one which looked from the hall onto the stable lane.
-This he opened and made a very careful examination of the sill
-with his powerful magnifying lens. "Now we shall go upstairs,"
-said he at last.
-
-The banker's dressing-room was a plainly furnished little
-chamber, with a grey carpet, a large bureau, and a long mirror.
-Holmes went to the bureau first and looked hard at the lock.
-
-"Which key was used to open it?" he asked.
-
-"That which my son himself indicated--that of the cupboard of the
-lumber-room."
-
-"Have you it here?"
-
-"That is it on the dressing-table."
-
-Sherlock Holmes took it up and opened the bureau.
-
-"It is a noiseless lock," said he. "It is no wonder that it did
-not wake you. This case, I presume, contains the coronet. We must
-have a look at it." He opened the case, and taking out the diadem
-he laid it upon the table. It was a magnificent specimen of the
-jeweller's art, and the thirty-six stones were the finest that I
-have ever seen. At one side of the coronet was a cracked edge,
-where a corner holding three gems had been torn away.
-
-"Now, Mr. Holder," said Holmes, "here is the corner which
-corresponds to that which has been so unfortunately lost. Might I
-beg that you will break it off."
-
-The banker recoiled in horror. "I should not dream of trying,"
-said he.
-
-"Then I will." Holmes suddenly bent his strength upon it, but
-without result. "I feel it give a little," said he; "but, though
-I am exceptionally strong in the fingers, it would take me all my
-time to break it. An ordinary man could not do it. Now, what do
-you think would happen if I did break it, Mr. Holder? There would
-be a noise like a pistol shot. Do you tell me that all this
-happened within a few yards of your bed and that you heard
-nothing of it?"
-
-"I do not know what to think. It is all dark to me."
-
-"But perhaps it may grow lighter as we go. What do you think,
-Miss Holder?"
-
-"I confess that I still share my uncle's perplexity."
-
-"Your son had no shoes or slippers on when you saw him?"
-
-"He had nothing on save only his trousers and shirt."
-
-"Thank you. We have certainly been favoured with extraordinary
-luck during this inquiry, and it will be entirely our own fault
-if we do not succeed in clearing the matter up. With your
-permission, Mr. Holder, I shall now continue my investigations
-outside."
-
-He went alone, at his own request, for he explained that any
-unnecessary footmarks might make his task more difficult. For an
-hour or more he was at work, returning at last with his feet
-heavy with snow and his features as inscrutable as ever.
-
-"I think that I have seen now all that there is to see, Mr.
-Holder," said he; "I can serve you best by returning to my
-rooms."
-
-"But the gems, Mr. Holmes. Where are they?"
-
-"I cannot tell."
-
-The banker wrung his hands. "I shall never see them again!" he
-cried. "And my son? You give me hopes?"
-
-"My opinion is in no way altered."
-
-"Then, for God's sake, what was this dark business which was
-acted in my house last night?"
-
-"If you can call upon me at my Baker Street rooms to-morrow
-morning between nine and ten I shall be happy to do what I can to
-make it clearer. I understand that you give me carte blanche to
-act for you, provided only that I get back the gems, and that you
-place no limit on the sum I may draw."
-
-"I would give my fortune to have them back."
-
-"Very good. I shall look into the matter between this and then.
-Good-bye; it is just possible that I may have to come over here
-again before evening."
-
-It was obvious to me that my companion's mind was now made up
-about the case, although what his conclusions were was more than
-I could even dimly imagine. Several times during our homeward
-journey I endeavoured to sound him upon the point, but he always
-glided away to some other topic, until at last I gave it over in
-despair. It was not yet three when we found ourselves in our
-rooms once more. He hurried to his chamber and was down again in
-a few minutes dressed as a common loafer. With his collar turned
-up, his shiny, seedy coat, his red cravat, and his worn boots, he
-was a perfect sample of the class.
-
-"I think that this should do," said he, glancing into the glass
-above the fireplace. "I only wish that you could come with me,
-Watson, but I fear that it won't do. I may be on the trail in
-this matter, or I may be following a will-o'-the-wisp, but I
-shall soon know which it is. I hope that I may be back in a few
-hours." He cut a slice of beef from the joint upon the sideboard,
-sandwiched it between two rounds of bread, and thrusting this
-rude meal into his pocket he started off upon his expedition.
-
-I had just finished my tea when he returned, evidently in
-excellent spirits, swinging an old elastic-sided boot in his
-hand. He chucked it down into a corner and helped himself to a
-cup of tea.
-
-"I only looked in as I passed," said he. "I am going right on."
-
-"Where to?"
-
-"Oh, to the other side of the West End. It may be some time
-before I get back. Don't wait up for me in case I should be
-late."
-
-"How are you getting on?"
-
-"Oh, so so. Nothing to complain of. I have been out to Streatham
-since I saw you last, but I did not call at the house. It is a
-very sweet little problem, and I would not have missed it for a
-good deal. However, I must not sit gossiping here, but must get
-these disreputable clothes off and return to my highly
-respectable self."
-
-I could see by his manner that he had stronger reasons for
-satisfaction than his words alone would imply. His eyes twinkled,
-and there was even a touch of colour upon his sallow cheeks. He
-hastened upstairs, and a few minutes later I heard the slam of
-the hall door, which told me that he was off once more upon his
-congenial hunt.
-
-I waited until midnight, but there was no sign of his return, so
-I retired to my room. It was no uncommon thing for him to be away
-for days and nights on end when he was hot upon a scent, so that
-his lateness caused me no surprise. I do not know at what hour he
-came in, but when I came down to breakfast in the morning there
-he was with a cup of coffee in one hand and the paper in the
-other, as fresh and trim as possible.
-
-"You will excuse my beginning without you, Watson," said he, "but
-you remember that our client has rather an early appointment this
-morning."
-
-"Why, it is after nine now," I answered. "I should not be
-surprised if that were he. I thought I heard a ring."
-
-It was, indeed, our friend the financier. I was shocked by the
-change which had come over him, for his face which was naturally
-of a broad and massive mould, was now pinched and fallen in,
-while his hair seemed to me at least a shade whiter. He entered
-with a weariness and lethargy which was even more painful than
-his violence of the morning before, and he dropped heavily into
-the armchair which I pushed forward for him.
-
-"I do not know what I have done to be so severely tried," said
-he. "Only two days ago I was a happy and prosperous man, without
-a care in the world. Now I am left to a lonely and dishonoured
-age. One sorrow comes close upon the heels of another. My niece,
-Mary, has deserted me."
-
-"Deserted you?"
-
-"Yes. Her bed this morning had not been slept in, her room was
-empty, and a note for me lay upon the hall table. I had said to
-her last night, in sorrow and not in anger, that if she had
-married my boy all might have been well with him. Perhaps it was
-thoughtless of me to say so. It is to that remark that she refers
-in this note:
-
-"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
-and that if I had acted differently this terrible misfortune
-might never have occurred. I cannot, with this thought in my
-mind, ever again be happy under your roof, and I feel that I must
-leave you forever. Do not worry about my future, for that is
-provided for; and, above all, do not search for me, for it will
-be fruitless labour and an ill-service to me. In life or in
-death, I am ever your loving,--MARY.'
-
-"What could she mean by that note, Mr. Holmes? Do you think it
-points to suicide?"
-
-"No, no, nothing of the kind. It is perhaps the best possible
-solution. I trust, Mr. Holder, that you are nearing the end of
-your troubles."
-
-"Ha! You say so! You have heard something, Mr. Holmes; you have
-learned something! Where are the gems?"
-
-"You would not think 1000 pounds apiece an excessive sum for
-them?"
-
-"I would pay ten."
-
-"That would be unnecessary. Three thousand will cover the matter.
-And there is a little reward, I fancy. Have you your check-book?
-Here is a pen. Better make it out for 4000 pounds."
-
-With a dazed face the banker made out the required check. Holmes
-walked over to his desk, took out a little triangular piece of
-gold with three gems in it, and threw it down upon the table.
-
-With a shriek of joy our client clutched it up.
-
-"You have it!" he gasped. "I am saved! I am saved!"
-
-The reaction of joy was as passionate as his grief had been, and
-he hugged his recovered gems to his bosom.
-
-"There is one other thing you owe, Mr. Holder," said Sherlock
-Holmes rather sternly.
-
-"Owe!" He caught up a pen. "Name the sum, and I will pay it."
-
-"No, the debt is not to me. You owe a very humble apology to that
-noble lad, your son, who has carried himself in this matter as I
-should be proud to see my own son do, should I ever chance to
-have one."
-
-"Then it was not Arthur who took them?"
-
-"I told you yesterday, and I repeat to-day, that it was not."
-
-"You are sure of it! Then let us hurry to him at once to let him
-know that the truth is known."
-
-"He knows it already. When I had cleared it all up I had an
-interview with him, and finding that he would not tell me the
-story, I told it to him, on which he had to confess that I was
-right and to add the very few details which were not yet quite
-clear to me. Your news of this morning, however, may open his
-lips."
-
-"For heaven's sake, tell me, then, what is this extraordinary
-mystery!"
-
-"I will do so, and I will show you the steps by which I reached
-it. And let me say to you, first, that which it is hardest for me
-to say and for you to hear: there has been an understanding
-between Sir George Burnwell and your niece Mary. They have now
-fled together."
-
-"My Mary? Impossible!"
-
-"It is unfortunately more than possible; it is certain. Neither
-you nor your son knew the true character of this man when you
-admitted him into your family circle. He is one of the most
-dangerous men in England--a ruined gambler, an absolutely
-desperate villain, a man without heart or conscience. Your niece
-knew nothing of such men. When he breathed his vows to her, as he
-had done to a hundred before her, she flattered herself that she
-alone had touched his heart. The devil knows best what he said,
-but at least she became his tool and was in the habit of seeing
-him nearly every evening."
-
-"I cannot, and I will not, believe it!" cried the banker with an
-ashen face.
-
-"I will tell you, then, what occurred in your house last night.
-Your niece, when you had, as she thought, gone to your room,
-slipped down and talked to her lover through the window which
-leads into the stable lane. His footmarks had pressed right
-through the snow, so long had he stood there. She told him of the
-coronet. His wicked lust for gold kindled at the news, and he
-bent her to his will. I have no doubt that she loved you, but
-there are women in whom the love of a lover extinguishes all
-other loves, and I think that she must have been one. She had
-hardly listened to his instructions when she saw you coming
-downstairs, on which she closed the window rapidly and told you
-about one of the servants' escapade with her wooden-legged lover,
-which was all perfectly true.
-
-"Your boy, Arthur, went to bed after his interview with you but
-he slept badly on account of his uneasiness about his club debts.
-In the middle of the night he heard a soft tread pass his door,
-so he rose and, looking out, was surprised to see his cousin
-walking very stealthily along the passage until she disappeared
-into your dressing-room. Petrified with astonishment, the lad
-slipped on some clothes and waited there in the dark to see what
-would come of this strange affair. Presently she emerged from the
-room again, and in the light of the passage-lamp your son saw
-that she carried the precious coronet in her hands. She passed
-down the stairs, and he, thrilling with horror, ran along and
-slipped behind the curtain near your door, whence he could see
-what passed in the hall beneath. He saw her stealthily open the
-window, hand out the coronet to someone in the gloom, and then
-closing it once more hurry back to her room, passing quite close
-to where he stood hid behind the curtain.
-
-"As long as she was on the scene he could not take any action
-without a horrible exposure of the woman whom he loved. But the
-instant that she was gone he realised how crushing a misfortune
-this would be for you, and how all-important it was to set it
-right. He rushed down, just as he was, in his bare feet, opened
-the window, sprang out into the snow, and ran down the lane,
-where he could see a dark figure in the moonlight. Sir George
-Burnwell tried to get away, but Arthur caught him, and there was
-a struggle between them, your lad tugging at one side of the
-coronet, and his opponent at the other. In the scuffle, your son
-struck Sir George and cut him over the eye. Then something
-suddenly snapped, and your son, finding that he had the coronet
-in his hands, rushed back, closed the window, ascended to your
-room, and had just observed that the coronet had been twisted in
-the struggle and was endeavouring to straighten it when you
-appeared upon the scene."
-
-"Is it possible?" gasped the banker.
-
-"You then roused his anger by calling him names at a moment when
-he felt that he had deserved your warmest thanks. He could not
-explain the true state of affairs without betraying one who
-certainly deserved little enough consideration at his hands. He
-took the more chivalrous view, however, and preserved her
-secret."
-
-"And that was why she shrieked and fainted when she saw the
-coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
-been! And his asking to be allowed to go out for five minutes!
-The dear fellow wanted to see if the missing piece were at the
-scene of the struggle. How cruelly I have misjudged him!"
-
-"When I arrived at the house," continued Holmes, "I at once went
-very carefully round it to observe if there were any traces in
-the snow which might help me. I knew that none had fallen since
-the evening before, and also that there had been a strong frost
-to preserve impressions. I passed along the tradesmen's path, but
-found it all trampled down and indistinguishable. Just beyond it,
-however, at the far side of the kitchen door, a woman had stood
-and talked with a man, whose round impressions on one side showed
-that he had a wooden leg. I could even tell that they had been
-disturbed, for the woman had run back swiftly to the door, as was
-shown by the deep toe and light heel marks, while Wooden-leg had
-waited a little, and then had gone away. I thought at the time
-that this might be the maid and her sweetheart, of whom you had
-already spoken to me, and inquiry showed it was so. I passed
-round the garden without seeing anything more than random tracks,
-which I took to be the police; but when I got into the stable
-lane a very long and complex story was written in the snow in
-front of me.
-
-"There was a double line of tracks of a booted man, and a second
-double line which I saw with delight belonged to a man with naked
-feet. I was at once convinced from what you had told me that the
-latter was your son. The first had walked both ways, but the
-other had run swiftly, and as his tread was marked in places over
-the depression of the boot, it was obvious that he had passed
-after the other. I followed them up and found they led to the
-hall window, where Boots had worn all the snow away while
-waiting. Then I walked to the other end, which was a hundred
-yards or more down the lane. I saw where Boots had faced round,
-where the snow was cut up as though there had been a struggle,
-and, finally, where a few drops of blood had fallen, to show me
-that I was not mistaken. Boots had then run down the lane, and
-another little smudge of blood showed that it was he who had been
-hurt. When he came to the highroad at the other end, I found that
-the pavement had been cleared, so there was an end to that clue.
-
-"On entering the house, however, I examined, as you remember, the
-sill and framework of the hall window with my lens, and I could
-at once see that someone had passed out. I could distinguish the
-outline of an instep where the wet foot had been placed in coming
-in. I was then beginning to be able to form an opinion as to what
-had occurred. A man had waited outside the window; someone had
-brought the gems; the deed had been overseen by your son; he had
-pursued the thief; had struggled with him; they had each tugged
-at the coronet, their united strength causing injuries which
-neither alone could have effected. He had returned with the
-prize, but had left a fragment in the grasp of his opponent. So
-far I was clear. The question now was, who was the man and who
-was it brought him the coronet?
-
-"It is an old maxim of mine that when you have excluded the
-impossible, whatever remains, however improbable, must be the
-truth. Now, I knew that it was not you who had brought it down,
-so there only remained your niece and the maids. But if it were
-the maids, why should your son allow himself to be accused in
-their place? There could be no possible reason. As he loved his
-cousin, however, there was an excellent explanation why he should
-retain her secret--the more so as the secret was a disgraceful
-one. When I remembered that you had seen her at that window, and
-how she had fainted on seeing the coronet again, my conjecture
-became a certainty.
-
-"And who could it be who was her confederate? A lover evidently,
-for who else could outweigh the love and gratitude which she must
-feel to you? I knew that you went out little, and that your
-circle of friends was a very limited one. But among them was Sir
-George Burnwell. I had heard of him before as being a man of evil
-reputation among women. It must have been he who wore those boots
-and retained the missing gems. Even though he knew that Arthur
-had discovered him, he might still flatter himself that he was
-safe, for the lad could not say a word without compromising his
-own family.
-
-"Well, your own good sense will suggest what measures I took
-next. I went in the shape of a loafer to Sir George's house,
-managed to pick up an acquaintance with his valet, learned that
-his master had cut his head the night before, and, finally, at
-the expense of six shillings, made all sure by buying a pair of
-his cast-off shoes. With these I journeyed down to Streatham and
-saw that they exactly fitted the tracks."
-
-"I saw an ill-dressed vagabond in the lane yesterday evening,"
-said Mr. Holder.
-
-"Precisely. It was I. I found that I had my man, so I came home
-and changed my clothes. It was a delicate part which I had to
-play then, for I saw that a prosecution must be avoided to avert
-scandal, and I knew that so astute a villain would see that our
-hands were tied in the matter. I went and saw him. At first, of
-course, he denied everything. But when I gave him every
-particular that had occurred, he tried to bluster and took down a
-life-preserver from the wall. I knew my man, however, and I
-clapped a pistol to his head before he could strike. Then he
-became a little more reasonable. I told him that we would give
-him a price for the stones he held--1000 pounds apiece. That
-brought out the first signs of grief that he had shown. 'Why,
-dash it all!' said he, 'I've let them go at six hundred for the
-three!' I soon managed to get the address of the receiver who had
-them, on promising him that there would be no prosecution. Off I
-set to him, and after much chaffering I got our stones at 1000
-pounds apiece. Then I looked in upon your son, told him that all
-was right, and eventually got to my bed about two o'clock, after
-what I may call a really hard day's work."
-
-"A day which has saved England from a great public scandal," said
-the banker, rising. "Sir, I cannot find words to thank you, but
-you shall not find me ungrateful for what you have done. Your
-skill has indeed exceeded all that I have heard of it. And now I
-must fly to my dear boy to apologise to him for the wrong which I
-have done him. As to what you tell me of poor Mary, it goes to my
-very heart. Not even your skill can inform me where she is now."
-
-"I think that we may safely say," returned Holmes, "that she is
-wherever Sir George Burnwell is. It is equally certain, too, that
-whatever her sins are, they will soon receive a more than
-sufficient punishment."
-
-
-
-XII. THE ADVENTURE OF THE COPPER BEECHES
-
-"To the man who loves art for its own sake," remarked Sherlock
-Holmes, tossing aside the advertisement sheet of the Daily
-Telegraph, "it is frequently in its least important and lowliest
-manifestations that the keenest pleasure is to be derived. It is
-pleasant to me to observe, Watson, that you have so far grasped
-this truth that in these little records of our cases which you
-have been good enough to draw up, and, I am bound to say,
-occasionally to embellish, you have given prominence not so much
-to the many causes célèbres and sensational trials in which I
-have figured but rather to those incidents which may have been
-trivial in themselves, but which have given room for those
-faculties of deduction and of logical synthesis which I have made
-my special province."
-
-"And yet," said I, smiling, "I cannot quite hold myself absolved
-from the charge of sensationalism which has been urged against my
-records."
-
-"You have erred, perhaps," he observed, taking up a glowing
-cinder with the tongs and lighting with it the long cherry-wood
-pipe which was wont to replace his clay when he was in a
-disputatious rather than a meditative mood--"you have erred
-perhaps in attempting to put colour and life into each of your
-statements instead of confining yourself to the task of placing
-upon record that severe reasoning from cause to effect which is
-really the only notable feature about the thing."
-
-"It seems to me that I have done you full justice in the matter,"
-I remarked with some coldness, for I was repelled by the egotism
-which I had more than once observed to be a strong factor in my
-friend's singular character.
-
-"No, it is not selfishness or conceit," said he, answering, as
-was his wont, my thoughts rather than my words. "If I claim full
-justice for my art, it is because it is an impersonal thing--a
-thing beyond myself. Crime is common. Logic is rare. Therefore it
-is upon the logic rather than upon the crime that you should
-dwell. You have degraded what should have been a course of
-lectures into a series of tales."
-
-It was a cold morning of the early spring, and we sat after
-breakfast on either side of a cheery fire in the old room at
-Baker Street. A thick fog rolled down between the lines of
-dun-coloured houses, and the opposing windows loomed like dark,
-shapeless blurs through the heavy yellow wreaths. Our gas was lit
-and shone on the white cloth and glimmer of china and metal, for
-the table had not been cleared yet. Sherlock Holmes had been
-silent all the morning, dipping continuously into the
-advertisement columns of a succession of papers until at last,
-having apparently given up his search, he had emerged in no very
-sweet temper to lecture me upon my literary shortcomings.
-
-"At the same time," he remarked after a pause, during which he
-had sat puffing at his long pipe and gazing down into the fire,
-"you can hardly be open to a charge of sensationalism, for out of
-these cases which you have been so kind as to interest yourself
-in, a fair proportion do not treat of crime, in its legal sense,
-at all. The small matter in which I endeavoured to help the King
-of Bohemia, the singular experience of Miss Mary Sutherland, the
-problem connected with the man with the twisted lip, and the
-incident of the noble bachelor, were all matters which are
-outside the pale of the law. But in avoiding the sensational, I
-fear that you may have bordered on the trivial."
-
-"The end may have been so," I answered, "but the methods I hold
-to have been novel and of interest."
-
-"Pshaw, my dear fellow, what do the public, the great unobservant
-public, who could hardly tell a weaver by his tooth or a
-compositor by his left thumb, care about the finer shades of
-analysis and deduction! But, indeed, if you are trivial, I cannot
-blame you, for the days of the great cases are past. Man, or at
-least criminal man, has lost all enterprise and originality. As
-to my own little practice, it seems to be degenerating into an
-agency for recovering lost lead pencils and giving advice to
-young ladies from boarding-schools. I think that I have touched
-bottom at last, however. This note I had this morning marks my
-zero-point, I fancy. Read it!" He tossed a crumpled letter across
-to me.
-
-It was dated from Montague Place upon the preceding evening, and
-ran thus:
-
-"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
-I should or should not accept a situation which has been offered
-to me as governess. I shall call at half-past ten to-morrow if I
-do not inconvenience you. Yours faithfully,
-                                               "VIOLET HUNTER."
-
-"Do you know the young lady?" I asked.
-
-"Not I."
-
-"It is half-past ten now."
-
-"Yes, and I have no doubt that is her ring."
-
-"It may turn out to be of more interest than you think. You
-remember that the affair of the blue carbuncle, which appeared to
-be a mere whim at first, developed into a serious investigation.
-It may be so in this case, also."
-
-"Well, let us hope so. But our doubts will very soon be solved,
-for here, unless I am much mistaken, is the person in question."
-
-As he spoke the door opened and a young lady entered the room.
-She was plainly but neatly dressed, with a bright, quick face,
-freckled like a plover's egg, and with the brisk manner of a
-woman who has had her own way to make in the world.
-
-"You will excuse my troubling you, I am sure," said she, as my
-companion rose to greet her, "but I have had a very strange
-experience, and as I have no parents or relations of any sort
-from whom I could ask advice, I thought that perhaps you would be
-kind enough to tell me what I should do."
-
-"Pray take a seat, Miss Hunter. I shall be happy to do anything
-that I can to serve you."
-
-I could see that Holmes was favourably impressed by the manner
-and speech of his new client. He looked her over in his searching
-fashion, and then composed himself, with his lids drooping and
-his finger-tips together, to listen to her story.
-
-"I have been a governess for five years," said she, "in the
-family of Colonel Spence Munro, but two months ago the colonel
-received an appointment at Halifax, in Nova Scotia, and took his
-children over to America with him, so that I found myself without
-a situation. I advertised, and I answered advertisements, but
-without success. At last the little money which I had saved began
-to run short, and I was at my wit's end as to what I should do.
-
-"There is a well-known agency for governesses in the West End
-called Westaway's, and there I used to call about once a week in
-order to see whether anything had turned up which might suit me.
-Westaway was the name of the founder of the business, but it is
-really managed by Miss Stoper. She sits in her own little office,
-and the ladies who are seeking employment wait in an anteroom,
-and are then shown in one by one, when she consults her ledgers
-and sees whether she has anything which would suit them.
-
-"Well, when I called last week I was shown into the little office
-as usual, but I found that Miss Stoper was not alone. A
-prodigiously stout man with a very smiling face and a great heavy
-chin which rolled down in fold upon fold over his throat sat at
-her elbow with a pair of glasses on his nose, looking very
-earnestly at the ladies who entered. As I came in he gave quite a
-jump in his chair and turned quickly to Miss Stoper.
-
-"'That will do,' said he; 'I could not ask for anything better.
-Capital! capital!' He seemed quite enthusiastic and rubbed his
-hands together in the most genial fashion. He was such a
-comfortable-looking man that it was quite a pleasure to look at
-him.
-
-"'You are looking for a situation, miss?' he asked.
-
-"'Yes, sir.'
-
-"'As governess?'
-
-"'Yes, sir.'
-
-"'And what salary do you ask?'
-
-"'I had 4 pounds a month in my last place with Colonel Spence
-Munro.'
-
-"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
-fat hands out into the air like a man who is in a boiling
-passion. 'How could anyone offer so pitiful a sum to a lady with
-such attractions and accomplishments?'
-
-"'My accomplishments, sir, may be less than you imagine,' said I.
-'A little French, a little German, music, and drawing--'
-
-"'Tut, tut!' he cried. 'This is all quite beside the question.
-The point is, have you or have you not the bearing and deportment
-of a lady? There it is in a nutshell. If you have not, you are
-not fitted for the rearing of a child who may some day play a
-considerable part in the history of the country. But if you have
-why, then, how could any gentleman ask you to condescend to
-accept anything under the three figures? Your salary with me,
-madam, would commence at 100 pounds a year.'
-
-"You may imagine, Mr. Holmes, that to me, destitute as I was,
-such an offer seemed almost too good to be true. The gentleman,
-however, seeing perhaps the look of incredulity upon my face,
-opened a pocket-book and took out a note.
-
-"'It is also my custom,' said he, smiling in the most pleasant
-fashion until his eyes were just two little shining slits amid
-the white creases of his face, 'to advance to my young ladies
-half their salary beforehand, so that they may meet any little
-expenses of their journey and their wardrobe.'
-
-"It seemed to me that I had never met so fascinating and so
-thoughtful a man. As I was already in debt to my tradesmen, the
-advance was a great convenience, and yet there was something
-unnatural about the whole transaction which made me wish to know
-a little more before I quite committed myself.
-
-"'May I ask where you live, sir?' said I.
-
-"'Hampshire. Charming rural place. The Copper Beeches, five miles
-on the far side of Winchester. It is the most lovely country, my
-dear young lady, and the dearest old country-house.'
-
-"'And my duties, sir? I should be glad to know what they would
-be.'
-
-"'One child--one dear little romper just six years old. Oh, if
-you could see him killing cockroaches with a slipper! Smack!
-smack! smack! Three gone before you could wink!' He leaned back
-in his chair and laughed his eyes into his head again.
-
-"I was a little startled at the nature of the child's amusement,
-but the father's laughter made me think that perhaps he was
-joking.
-
-"'My sole duties, then,' I asked, 'are to take charge of a single
-child?'
-
-"'No, no, not the sole, not the sole, my dear young lady,' he
-cried. 'Your duty would be, as I am sure your good sense would
-suggest, to obey any little commands my wife might give, provided
-always that they were such commands as a lady might with
-propriety obey. You see no difficulty, heh?'
-
-"'I should be happy to make myself useful.'
-
-"'Quite so. In dress now, for example. We are faddy people, you
-know--faddy but kind-hearted. If you were asked to wear any dress
-which we might give you, you would not object to our little whim.
-Heh?'
-
-"'No,' said I, considerably astonished at his words.
-
-"'Or to sit here, or sit there, that would not be offensive to
-you?'
-
-"'Oh, no.'
-
-"'Or to cut your hair quite short before you come to us?'
-
-"I could hardly believe my ears. As you may observe, Mr. Holmes,
-my hair is somewhat luxuriant, and of a rather peculiar tint of
-chestnut. It has been considered artistic. I could not dream of
-sacrificing it in this offhand fashion.
-
-"'I am afraid that that is quite impossible,' said I. He had been
-watching me eagerly out of his small eyes, and I could see a
-shadow pass over his face as I spoke.
-
-"'I am afraid that it is quite essential,' said he. 'It is a
-little fancy of my wife's, and ladies' fancies, you know, madam,
-ladies' fancies must be consulted. And so you won't cut your
-hair?'
-
-"'No, sir, I really could not,' I answered firmly.
-
-"'Ah, very well; then that quite settles the matter. It is a
-pity, because in other respects you would really have done very
-nicely. In that case, Miss Stoper, I had best inspect a few more
-of your young ladies.'
-
-"The manageress had sat all this while busy with her papers
-without a word to either of us, but she glanced at me now with so
-much annoyance upon her face that I could not help suspecting
-that she had lost a handsome commission through my refusal.
-
-"'Do you desire your name to be kept upon the books?' she asked.
-
-"'If you please, Miss Stoper.'
-
-"'Well, really, it seems rather useless, since you refuse the
-most excellent offers in this fashion,' said she sharply. 'You
-can hardly expect us to exert ourselves to find another such
-opening for you. Good-day to you, Miss Hunter.' She struck a gong
-upon the table, and I was shown out by the page.
-
-"Well, Mr. Holmes, when I got back to my lodgings and found
-little enough in the cupboard, and two or three bills upon the
-table, I began to ask myself whether I had not done a very
-foolish thing. After all, if these people had strange fads and
-expected obedience on the most extraordinary matters, they were
-at least ready to pay for their eccentricity. Very few
-governesses in England are getting 100 pounds a year. Besides,
-what use was my hair to me? Many people are improved by wearing
-it short and perhaps I should be among the number. Next day I was
-inclined to think that I had made a mistake, and by the day after
-I was sure of it. I had almost overcome my pride so far as to go
-back to the agency and inquire whether the place was still open
-when I received this letter from the gentleman himself. I have it
-here and I will read it to you:
-
-                       "'The Copper Beeches, near Winchester.
-"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
-address, and I write from here to ask you whether you have
-reconsidered your decision. My wife is very anxious that you
-should come, for she has been much attracted by my description of
-you. We are willing to give 30 pounds a quarter, or 120 pounds a
-year, so as to recompense you for any little inconvenience which
-our fads may cause you. They are not very exacting, after all. My
-wife is fond of a particular shade of electric blue and would
-like you to wear such a dress indoors in the morning. You need
-not, however, go to the expense of purchasing one, as we have one
-belonging to my dear daughter Alice (now in Philadelphia), which
-would, I should think, fit you very well. Then, as to sitting
-here or there, or amusing yourself in any manner indicated, that
-need cause you no inconvenience. As regards your hair, it is no
-doubt a pity, especially as I could not help remarking its beauty
-during our short interview, but I am afraid that I must remain
-firm upon this point, and I only hope that the increased salary
-may recompense you for the loss. Your duties, as far as the child
-is concerned, are very light. Now do try to come, and I shall
-meet you with the dog-cart at Winchester. Let me know your train.
-Yours faithfully, JEPHRO RUCASTLE.'
-
-"That is the letter which I have just received, Mr. Holmes, and
-my mind is made up that I will accept it. I thought, however,
-that before taking the final step I should like to submit the
-whole matter to your consideration."
-
-"Well, Miss Hunter, if your mind is made up, that settles the
-question," said Holmes, smiling.
-
-"But you would not advise me to refuse?"
-
-"I confess that it is not the situation which I should like to
-see a sister of mine apply for."
-
-"What is the meaning of it all, Mr. Holmes?"
-
-"Ah, I have no data. I cannot tell. Perhaps you have yourself
-formed some opinion?"
-
-"Well, there seems to me to be only one possible solution. Mr.
-Rucastle seemed to be a very kind, good-natured man. Is it not
-possible that his wife is a lunatic, that he desires to keep the
-matter quiet for fear she should be taken to an asylum, and that
-he humours her fancies in every way in order to prevent an
-outbreak?"
-
-"That is a possible solution--in fact, as matters stand, it is
-the most probable one. But in any case it does not seem to be a
-nice household for a young lady."
-
-"But the money, Mr. Holmes, the money!"
-
-"Well, yes, of course the pay is good--too good. That is what
-makes me uneasy. Why should they give you 120 pounds a year, when
-they could have their pick for 40 pounds? There must be some
-strong reason behind."
-
-"I thought that if I told you the circumstances you would
-understand afterwards if I wanted your help. I should feel so
-much stronger if I felt that you were at the back of me."
-
-"Oh, you may carry that feeling away with you. I assure you that
-your little problem promises to be the most interesting which has
-come my way for some months. There is something distinctly novel
-about some of the features. If you should find yourself in doubt
-or in danger--"
-
-"Danger! What danger do you foresee?"
-
-Holmes shook his head gravely. "It would cease to be a danger if
-we could define it," said he. "But at any time, day or night, a
-telegram would bring me down to your help."
-
-"That is enough." She rose briskly from her chair with the
-anxiety all swept from her face. "I shall go down to Hampshire
-quite easy in my mind now. I shall write to Mr. Rucastle at once,
-sacrifice my poor hair to-night, and start for Winchester
-to-morrow." With a few grateful words to Holmes she bade us both
-good-night and bustled off upon her way.
-
-"At least," said I as we heard her quick, firm steps descending
-the stairs, "she seems to be a young lady who is very well able
-to take care of herself."
-
-"And she would need to be," said Holmes gravely. "I am much
-mistaken if we do not hear from her before many days are past."
-
-It was not very long before my friend's prediction was fulfilled.
-A fortnight went by, during which I frequently found my thoughts
-turning in her direction and wondering what strange side-alley of
-human experience this lonely woman had strayed into. The unusual
-salary, the curious conditions, the light duties, all pointed to
-something abnormal, though whether a fad or a plot, or whether
-the man were a philanthropist or a villain, it was quite beyond
-my powers to determine. As to Holmes, I observed that he sat
-frequently for half an hour on end, with knitted brows and an
-abstracted air, but he swept the matter away with a wave of his
-hand when I mentioned it. "Data! data! data!" he cried
-impatiently. "I can't make bricks without clay." And yet he would
-always wind up by muttering that no sister of his should ever
-have accepted such a situation.
-
-The telegram which we eventually received came late one night
-just as I was thinking of turning in and Holmes was settling down
-to one of those all-night chemical researches which he frequently
-indulged in, when I would leave him stooping over a retort and a
-test-tube at night and find him in the same position when I came
-down to breakfast in the morning. He opened the yellow envelope,
-and then, glancing at the message, threw it across to me.
-
-"Just look up the trains in Bradshaw," said he, and turned back
-to his chemical studies.
-
-The summons was a brief and urgent one.
-
-"Please be at the Black Swan Hotel at Winchester at midday
-to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
-
-"Will you come with me?" asked Holmes, glancing up.
-
-"I should wish to."
-
-"Just look it up, then."
-
-"There is a train at half-past nine," said I, glancing over my
-Bradshaw. "It is due at Winchester at 11:30."
-
-"That will do very nicely. Then perhaps I had better postpone my
-analysis of the acetones, as we may need to be at our best in the
-morning."
-
-By eleven o'clock the next day we were well upon our way to the
-old English capital. Holmes had been buried in the morning papers
-all the way down, but after we had passed the Hampshire border he
-threw them down and began to admire the scenery. It was an ideal
-spring day, a light blue sky, flecked with little fleecy white
-clouds drifting across from west to east. The sun was shining
-very brightly, and yet there was an exhilarating nip in the air,
-which set an edge to a man's energy. All over the countryside,
-away to the rolling hills around Aldershot, the little red and
-grey roofs of the farm-steadings peeped out from amid the light
-green of the new foliage.
-
-"Are they not fresh and beautiful?" I cried with all the
-enthusiasm of a man fresh from the fogs of Baker Street.
-
-But Holmes shook his head gravely.
-
-"Do you know, Watson," said he, "that it is one of the curses of
-a mind with a turn like mine that I must look at everything with
-reference to my own special subject. You look at these scattered
-houses, and you are impressed by their beauty. I look at them,
-and the only thought which comes to me is a feeling of their
-isolation and of the impunity with which crime may be committed
-there."
-
-"Good heavens!" I cried. "Who would associate crime with these
-dear old homesteads?"
-
-"They always fill me with a certain horror. It is my belief,
-Watson, founded upon my experience, that the lowest and vilest
-alleys in London do not present a more dreadful record of sin
-than does the smiling and beautiful countryside."
-
-"You horrify me!"
-
-"But the reason is very obvious. The pressure of public opinion
-can do in the town what the law cannot accomplish. There is no
-lane so vile that the scream of a tortured child, or the thud of
-a drunkard's blow, does not beget sympathy and indignation among
-the neighbours, and then the whole machinery of justice is ever
-so close that a word of complaint can set it going, and there is
-but a step between the crime and the dock. But look at these
-lonely houses, each in its own fields, filled for the most part
-with poor ignorant folk who know little of the law. Think of the
-deeds of hellish cruelty, the hidden wickedness which may go on,
-year in, year out, in such places, and none the wiser. Had this
-lady who appeals to us for help gone to live in Winchester, I
-should never have had a fear for her. It is the five miles of
-country which makes the danger. Still, it is clear that she is
-not personally threatened."
-
-"No. If she can come to Winchester to meet us she can get away."
-
-"Quite so. She has her freedom."
-
-"What CAN be the matter, then? Can you suggest no explanation?"
-
-"I have devised seven separate explanations, each of which would
-cover the facts as far as we know them. But which of these is
-correct can only be determined by the fresh information which we
-shall no doubt find waiting for us. Well, there is the tower of
-the cathedral, and we shall soon learn all that Miss Hunter has
-to tell."
-
-The Black Swan is an inn of repute in the High Street, at no
-distance from the station, and there we found the young lady
-waiting for us. She had engaged a sitting-room, and our lunch
-awaited us upon the table.
-
-"I am so delighted that you have come," she said earnestly. "It
-is so very kind of you both; but indeed I do not know what I
-should do. Your advice will be altogether invaluable to me."
-
-"Pray tell us what has happened to you."
-
-"I will do so, and I must be quick, for I have promised Mr.
-Rucastle to be back before three. I got his leave to come into
-town this morning, though he little knew for what purpose."
-
-"Let us have everything in its due order." Holmes thrust his long
-thin legs out towards the fire and composed himself to listen.
-
-"In the first place, I may say that I have met, on the whole,
-with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
-only fair to them to say that. But I cannot understand them, and
-I am not easy in my mind about them."
-
-"What can you not understand?"
-
-"Their reasons for their conduct. But you shall have it all just
-as it occurred. When I came down, Mr. Rucastle met me here and
-drove me in his dog-cart to the Copper Beeches. It is, as he
-said, beautifully situated, but it is not beautiful in itself,
-for it is a large square block of a house, whitewashed, but all
-stained and streaked with damp and bad weather. There are grounds
-round it, woods on three sides, and on the fourth a field which
-slopes down to the Southampton highroad, which curves past about
-a hundred yards from the front door. This ground in front belongs
-to the house, but the woods all round are part of Lord
-Southerton's preserves. A clump of copper beeches immediately in
-front of the hall door has given its name to the place.
-
-"I was driven over by my employer, who was as amiable as ever,
-and was introduced by him that evening to his wife and the child.
-There was no truth, Mr. Holmes, in the conjecture which seemed to
-us to be probable in your rooms at Baker Street. Mrs. Rucastle is
-not mad. I found her to be a silent, pale-faced woman, much
-younger than her husband, not more than thirty, I should think,
-while he can hardly be less than forty-five. From their
-conversation I have gathered that they have been married about
-seven years, that he was a widower, and that his only child by
-the first wife was the daughter who has gone to Philadelphia. Mr.
-Rucastle told me in private that the reason why she had left them
-was that she had an unreasoning aversion to her stepmother. As
-the daughter could not have been less than twenty, I can quite
-imagine that her position must have been uncomfortable with her
-father's young wife.
-
-"Mrs. Rucastle seemed to me to be colourless in mind as well as
-in feature. She impressed me neither favourably nor the reverse.
-She was a nonentity. It was easy to see that she was passionately
-devoted both to her husband and to her little son. Her light grey
-eyes wandered continually from one to the other, noting every
-little want and forestalling it if possible. He was kind to her
-also in his bluff, boisterous fashion, and on the whole they
-seemed to be a happy couple. And yet she had some secret sorrow,
-this woman. She would often be lost in deep thought, with the
-saddest look upon her face. More than once I have surprised her
-in tears. I have thought sometimes that it was the disposition of
-her child which weighed upon her mind, for I have never met so
-utterly spoiled and so ill-natured a little creature. He is small
-for his age, with a head which is quite disproportionately large.
-His whole life appears to be spent in an alternation between
-savage fits of passion and gloomy intervals of sulking. Giving
-pain to any creature weaker than himself seems to be his one idea
-of amusement, and he shows quite remarkable talent in planning
-the capture of mice, little birds, and insects. But I would
-rather not talk about the creature, Mr. Holmes, and, indeed, he
-has little to do with my story."
-
-"I am glad of all details," remarked my friend, "whether they
-seem to you to be relevant or not."
-
-"I shall try not to miss anything of importance. The one
-unpleasant thing about the house, which struck me at once, was
-the appearance and conduct of the servants. There are only two, a
-man and his wife. Toller, for that is his name, is a rough,
-uncouth man, with grizzled hair and whiskers, and a perpetual
-smell of drink. Twice since I have been with them he has been
-quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
-His wife is a very tall and strong woman with a sour face, as
-silent as Mrs. Rucastle and much less amiable. They are a most
-unpleasant couple, but fortunately I spend most of my time in the
-nursery and my own room, which are next to each other in one
-corner of the building.
-
-"For two days after my arrival at the Copper Beeches my life was
-very quiet; on the third, Mrs. Rucastle came down just after
-breakfast and whispered something to her husband.
-
-"'Oh, yes,' said he, turning to me, 'we are very much obliged to
-you, Miss Hunter, for falling in with our whims so far as to cut
-your hair. I assure you that it has not detracted in the tiniest
-iota from your appearance. We shall now see how the electric-blue
-dress will become you. You will find it laid out upon the bed in
-your room, and if you would be so good as to put it on we should
-both be extremely obliged.'
-
-"The dress which I found waiting for me was of a peculiar shade
-of blue. It was of excellent material, a sort of beige, but it
-bore unmistakable signs of having been worn before. It could not
-have been a better fit if I had been measured for it. Both Mr.
-and Mrs. Rucastle expressed a delight at the look of it, which
-seemed quite exaggerated in its vehemence. They were waiting for
-me in the drawing-room, which is a very large room, stretching
-along the entire front of the house, with three long windows
-reaching down to the floor. A chair had been placed close to the
-central window, with its back turned towards it. In this I was
-asked to sit, and then Mr. Rucastle, walking up and down on the
-other side of the room, began to tell me a series of the funniest
-stories that I have ever listened to. You cannot imagine how
-comical he was, and I laughed until I was quite weary. Mrs.
-Rucastle, however, who has evidently no sense of humour, never so
-much as smiled, but sat with her hands in her lap, and a sad,
-anxious look upon her face. After an hour or so, Mr. Rucastle
-suddenly remarked that it was time to commence the duties of the
-day, and that I might change my dress and go to little Edward in
-the nursery.
-
-"Two days later this same performance was gone through under
-exactly similar circumstances. Again I changed my dress, again I
-sat in the window, and again I laughed very heartily at the funny
-stories of which my employer had an immense répertoire, and which
-he told inimitably. Then he handed me a yellow-backed novel, and
-moving my chair a little sideways, that my own shadow might not
-fall upon the page, he begged me to read aloud to him. I read for
-about ten minutes, beginning in the heart of a chapter, and then
-suddenly, in the middle of a sentence, he ordered me to cease and
-to change my dress.
-
-"You can easily imagine, Mr. Holmes, how curious I became as to
-what the meaning of this extraordinary performance could possibly
-be. They were always very careful, I observed, to turn my face
-away from the window, so that I became consumed with the desire
-to see what was going on behind my back. At first it seemed to be
-impossible, but I soon devised a means. My hand-mirror had been
-broken, so a happy thought seized me, and I concealed a piece of
-the glass in my handkerchief. On the next occasion, in the midst
-of my laughter, I put my handkerchief up to my eyes, and was able
-with a little management to see all that there was behind me. I
-confess that I was disappointed. There was nothing. At least that
-was my first impression. At the second glance, however, I
-perceived that there was a man standing in the Southampton Road,
-a small bearded man in a grey suit, who seemed to be looking in
-my direction. The road is an important highway, and there are
-usually people there. This man, however, was leaning against the
-railings which bordered our field and was looking earnestly up. I
-lowered my handkerchief and glanced at Mrs. Rucastle to find her
-eyes fixed upon me with a most searching gaze. She said nothing,
-but I am convinced that she had divined that I had a mirror in my
-hand and had seen what was behind me. She rose at once.
-
-"'Jephro,' said she, 'there is an impertinent fellow upon the
-road there who stares up at Miss Hunter.'
-
-"'No friend of yours, Miss Hunter?' he asked.
-
-"'No, I know no one in these parts.'
-
-"'Dear me! How very impertinent! Kindly turn round and motion to
-him to go away.'
-
-"'Surely it would be better to take no notice.'
-
-"'No, no, we should have him loitering here always. Kindly turn
-round and wave him away like that.'
-
-"I did as I was told, and at the same instant Mrs. Rucastle drew
-down the blind. That was a week ago, and from that time I have
-not sat again in the window, nor have I worn the blue dress, nor
-seen the man in the road."
-
-"Pray continue," said Holmes. "Your narrative promises to be a
-most interesting one."
-
-"You will find it rather disconnected, I fear, and there may
-prove to be little relation between the different incidents of
-which I speak. On the very first day that I was at the Copper
-Beeches, Mr. Rucastle took me to a small outhouse which stands
-near the kitchen door. As we approached it I heard the sharp
-rattling of a chain, and the sound as of a large animal moving
-about.
-
-"'Look in here!' said Mr. Rucastle, showing me a slit between two
-planks. 'Is he not a beauty?'
-
-"I looked through and was conscious of two glowing eyes, and of a
-vague figure huddled up in the darkness.
-
-"'Don't be frightened,' said my employer, laughing at the start
-which I had given. 'It's only Carlo, my mastiff. I call him mine,
-but really old Toller, my groom, is the only man who can do
-anything with him. We feed him once a day, and not too much then,
-so that he is always as keen as mustard. Toller lets him loose
-every night, and God help the trespasser whom he lays his fangs
-upon. For goodness' sake don't you ever on any pretext set your
-foot over the threshold at night, for it's as much as your life
-is worth.'
-
-"The warning was no idle one, for two nights later I happened to
-look out of my bedroom window about two o'clock in the morning.
-It was a beautiful moonlight night, and the lawn in front of the
-house was silvered over and almost as bright as day. I was
-standing, rapt in the peaceful beauty of the scene, when I was
-aware that something was moving under the shadow of the copper
-beeches. As it emerged into the moonshine I saw what it was. It
-was a giant dog, as large as a calf, tawny tinted, with hanging
-jowl, black muzzle, and huge projecting bones. It walked slowly
-across the lawn and vanished into the shadow upon the other side.
-That dreadful sentinel sent a chill to my heart which I do not
-think that any burglar could have done.
-
-"And now I have a very strange experience to tell you. I had, as
-you know, cut off my hair in London, and I had placed it in a
-great coil at the bottom of my trunk. One evening, after the
-child was in bed, I began to amuse myself by examining the
-furniture of my room and by rearranging my own little things.
-There was an old chest of drawers in the room, the two upper ones
-empty and open, the lower one locked. I had filled the first two
-with my linen, and as I had still much to pack away I was
-naturally annoyed at not having the use of the third drawer. It
-struck me that it might have been fastened by a mere oversight,
-so I took out my bunch of keys and tried to open it. The very
-first key fitted to perfection, and I drew the drawer open. There
-was only one thing in it, but I am sure that you would never
-guess what it was. It was my coil of hair.
-
-"I took it up and examined it. It was of the same peculiar tint,
-and the same thickness. But then the impossibility of the thing
-obtruded itself upon me. How could my hair have been locked in
-the drawer? With trembling hands I undid my trunk, turned out the
-contents, and drew from the bottom my own hair. I laid the two
-tresses together, and I assure you that they were identical. Was
-it not extraordinary? Puzzle as I would, I could make nothing at
-all of what it meant. I returned the strange hair to the drawer,
-and I said nothing of the matter to the Rucastles as I felt that
-I had put myself in the wrong by opening a drawer which they had
-locked.
-
-"I am naturally observant, as you may have remarked, Mr. Holmes,
-and I soon had a pretty good plan of the whole house in my head.
-There was one wing, however, which appeared not to be inhabited
-at all. A door which faced that which led into the quarters of
-the Tollers opened into this suite, but it was invariably locked.
-One day, however, as I ascended the stair, I met Mr. Rucastle
-coming out through this door, his keys in his hand, and a look on
-his face which made him a very different person to the round,
-jovial man to whom I was accustomed. His cheeks were red, his
-brow was all crinkled with anger, and the veins stood out at his
-temples with passion. He locked the door and hurried past me
-without a word or a look.
-
-"This aroused my curiosity, so when I went out for a walk in the
-grounds with my charge, I strolled round to the side from which I
-could see the windows of this part of the house. There were four
-of them in a row, three of which were simply dirty, while the
-fourth was shuttered up. They were evidently all deserted. As I
-strolled up and down, glancing at them occasionally, Mr. Rucastle
-came out to me, looking as merry and jovial as ever.
-
-"'Ah!' said he, 'you must not think me rude if I passed you
-without a word, my dear young lady. I was preoccupied with
-business matters.'
-
-"I assured him that I was not offended. 'By the way,' said I,
-'you seem to have quite a suite of spare rooms up there, and one
-of them has the shutters up.'
-
-"He looked surprised and, as it seemed to me, a little startled
-at my remark.
-
-"'Photography is one of my hobbies,' said he. 'I have made my
-dark room up there. But, dear me! what an observant young lady we
-have come upon. Who would have believed it? Who would have ever
-believed it?' He spoke in a jesting tone, but there was no jest
-in his eyes as he looked at me. I read suspicion there and
-annoyance, but no jest.
-
-"Well, Mr. Holmes, from the moment that I understood that there
-was something about that suite of rooms which I was not to know,
-I was all on fire to go over them. It was not mere curiosity,
-though I have my share of that. It was more a feeling of duty--a
-feeling that some good might come from my penetrating to this
-place. They talk of woman's instinct; perhaps it was woman's
-instinct which gave me that feeling. At any rate, it was there,
-and I was keenly on the lookout for any chance to pass the
-forbidden door.
-
-"It was only yesterday that the chance came. I may tell you that,
-besides Mr. Rucastle, both Toller and his wife find something to
-do in these deserted rooms, and I once saw him carrying a large
-black linen bag with him through the door. Recently he has been
-drinking hard, and yesterday evening he was very drunk; and when
-I came upstairs there was the key in the door. I have no doubt at
-all that he had left it there. Mr. and Mrs. Rucastle were both
-downstairs, and the child was with them, so that I had an
-admirable opportunity. I turned the key gently in the lock,
-opened the door, and slipped through.
-
-"There was a little passage in front of me, unpapered and
-uncarpeted, which turned at a right angle at the farther end.
-Round this corner were three doors in a line, the first and third
-of which were open. They each led into an empty room, dusty and
-cheerless, with two windows in the one and one in the other, so
-thick with dirt that the evening light glimmered dimly through
-them. The centre door was closed, and across the outside of it
-had been fastened one of the broad bars of an iron bed, padlocked
-at one end to a ring in the wall, and fastened at the other with
-stout cord. The door itself was locked as well, and the key was
-not there. This barricaded door corresponded clearly with the
-shuttered window outside, and yet I could see by the glimmer from
-beneath it that the room was not in darkness. Evidently there was
-a skylight which let in light from above. As I stood in the
-passage gazing at the sinister door and wondering what secret it
-might veil, I suddenly heard the sound of steps within the room
-and saw a shadow pass backward and forward against the little
-slit of dim light which shone out from under the door. A mad,
-unreasoning terror rose up in me at the sight, Mr. Holmes. My
-overstrung nerves failed me suddenly, and I turned and ran--ran
-as though some dreadful hand were behind me clutching at the
-skirt of my dress. I rushed down the passage, through the door,
-and straight into the arms of Mr. Rucastle, who was waiting
-outside.
-
-"'So,' said he, smiling, 'it was you, then. I thought that it
-must be when I saw the door open.'
-
-"'Oh, I am so frightened!' I panted.
-
-"'My dear young lady! my dear young lady!'--you cannot think how
-caressing and soothing his manner was--'and what has frightened
-you, my dear young lady?'
-
-"But his voice was just a little too coaxing. He overdid it. I
-was keenly on my guard against him.
-
-"'I was foolish enough to go into the empty wing,' I answered.
-'But it is so lonely and eerie in this dim light that I was
-frightened and ran out again. Oh, it is so dreadfully still in
-there!'
-
-"'Only that?' said he, looking at me keenly.
-
-"'Why, what did you think?' I asked.
-
-"'Why do you think that I lock this door?'
-
-"'I am sure that I do not know.'
-
-"'It is to keep people out who have no business there. Do you
-see?' He was still smiling in the most amiable manner.
-
-"'I am sure if I had known--'
-
-"'Well, then, you know now. And if you ever put your foot over
-that threshold again'--here in an instant the smile hardened into
-a grin of rage, and he glared down at me with the face of a
-demon--'I'll throw you to the mastiff.'
-
-"I was so terrified that I do not know what I did. I suppose that
-I must have rushed past him into my room. I remember nothing
-until I found myself lying on my bed trembling all over. Then I
-thought of you, Mr. Holmes. I could not live there longer without
-some advice. I was frightened of the house, of the man, of the
-woman, of the servants, even of the child. They were all horrible
-to me. If I could only bring you down all would be well. Of
-course I might have fled from the house, but my curiosity was
-almost as strong as my fears. My mind was soon made up. I would
-send you a wire. I put on my hat and cloak, went down to the
-office, which is about half a mile from the house, and then
-returned, feeling very much easier. A horrible doubt came into my
-mind as I approached the door lest the dog might be loose, but I
-remembered that Toller had drunk himself into a state of
-insensibility that evening, and I knew that he was the only one
-in the household who had any influence with the savage creature,
-or who would venture to set him free. I slipped in in safety and
-lay awake half the night in my joy at the thought of seeing you.
-I had no difficulty in getting leave to come into Winchester this
-morning, but I must be back before three o'clock, for Mr. and
-Mrs. Rucastle are going on a visit, and will be away all the
-evening, so that I must look after the child. Now I have told you
-all my adventures, Mr. Holmes, and I should be very glad if you
-could tell me what it all means, and, above all, what I should
-do."
-
-Holmes and I had listened spellbound to this extraordinary story.
-My friend rose now and paced up and down the room, his hands in
-his pockets, and an expression of the most profound gravity upon
-his face.
-
-"Is Toller still drunk?" he asked.
-
-"Yes. I heard his wife tell Mrs. Rucastle that she could do
-nothing with him."
-
-"That is well. And the Rucastles go out to-night?"
-
-"Yes."
-
-"Is there a cellar with a good strong lock?"
-
-"Yes, the wine-cellar."
-
-"You seem to me to have acted all through this matter like a very
-brave and sensible girl, Miss Hunter. Do you think that you could
-perform one more feat? I should not ask it of you if I did not
-think you a quite exceptional woman."
-
-"I will try. What is it?"
-
-"We shall be at the Copper Beeches by seven o'clock, my friend
-and I. The Rucastles will be gone by that time, and Toller will,
-we hope, be incapable. There only remains Mrs. Toller, who might
-give the alarm. If you could send her into the cellar on some
-errand, and then turn the key upon her, you would facilitate
-matters immensely."
-
-"I will do it."
-
-"Excellent! We shall then look thoroughly into the affair. Of
-course there is only one feasible explanation. You have been
-brought there to personate someone, and the real person is
-imprisoned in this chamber. That is obvious. As to who this
-prisoner is, I have no doubt that it is the daughter, Miss Alice
-Rucastle, if I remember right, who was said to have gone to
-America. You were chosen, doubtless, as resembling her in height,
-figure, and the colour of your hair. Hers had been cut off, very
-possibly in some illness through which she has passed, and so, of
-course, yours had to be sacrificed also. By a curious chance you
-came upon her tresses. The man in the road was undoubtedly some
-friend of hers--possibly her fiancé--and no doubt, as you wore
-the girl's dress and were so like her, he was convinced from your
-laughter, whenever he saw you, and afterwards from your gesture,
-that Miss Rucastle was perfectly happy, and that she no longer
-desired his attentions. The dog is let loose at night to prevent
-him from endeavouring to communicate with her. So much is fairly
-clear. The most serious point in the case is the disposition of
-the child."
-
-"What on earth has that to do with it?" I ejaculated.
-
-"My dear Watson, you as a medical man are continually gaining
-light as to the tendencies of a child by the study of the
-parents. Don't you see that the converse is equally valid. I have
-frequently gained my first real insight into the character of
-parents by studying their children. This child's disposition is
-abnormally cruel, merely for cruelty's sake, and whether he
-derives this from his smiling father, as I should suspect, or
-from his mother, it bodes evil for the poor girl who is in their
-power."
-
-"I am sure that you are right, Mr. Holmes," cried our client. "A
-thousand things come back to me which make me certain that you
-have hit it. Oh, let us lose not an instant in bringing help to
-this poor creature."
-
-"We must be circumspect, for we are dealing with a very cunning
-man. We can do nothing until seven o'clock. At that hour we shall
-be with you, and it will not be long before we solve the
-mystery."
-
-We were as good as our word, for it was just seven when we
-reached the Copper Beeches, having put up our trap at a wayside
-public-house. The group of trees, with their dark leaves shining
-like burnished metal in the light of the setting sun, were
-sufficient to mark the house even had Miss Hunter not been
-standing smiling on the door-step.
-
-"Have you managed it?" asked Holmes.
-
-A loud thudding noise came from somewhere downstairs. "That is
-Mrs. Toller in the cellar," said she. "Her husband lies snoring
-on the kitchen rug. Here are his keys, which are the duplicates
-of Mr. Rucastle's."
-
-"You have done well indeed!" cried Holmes with enthusiasm. "Now
-lead the way, and we shall soon see the end of this black
-business."
-
-We passed up the stair, unlocked the door, followed on down a
-passage, and found ourselves in front of the barricade which Miss
-Hunter had described. Holmes cut the cord and removed the
-transverse bar. Then he tried the various keys in the lock, but
-without success. No sound came from within, and at the silence
-Holmes' face clouded over.
-
-"I trust that we are not too late," said he. "I think, Miss
-Hunter, that we had better go in without you. Now, Watson, put
-your shoulder to it, and we shall see whether we cannot make our
-way in."
-
-It was an old rickety door and gave at once before our united
-strength. Together we rushed into the room. It was empty. There
-was no furniture save a little pallet bed, a small table, and a
-basketful of linen. The skylight above was open, and the prisoner
-gone.
-
-"There has been some villainy here," said Holmes; "this beauty
-has guessed Miss Hunter's intentions and has carried his victim
-off."
-
-"But how?"
-
-"Through the skylight. We shall soon see how he managed it." He
-swung himself up onto the roof. "Ah, yes," he cried, "here's the
-end of a long light ladder against the eaves. That is how he did
-it."
-
-"But it is impossible," said Miss Hunter; "the ladder was not
-there when the Rucastles went away."
-
-"He has come back and done it. I tell you that he is a clever and
-dangerous man. I should not be very much surprised if this were
-he whose step I hear now upon the stair. I think, Watson, that it
-would be as well for you to have your pistol ready."
-
-The words were hardly out of his mouth before a man appeared at
-the door of the room, a very fat and burly man, with a heavy
-stick in his hand. Miss Hunter screamed and shrunk against the
-wall at the sight of him, but Sherlock Holmes sprang forward and
-confronted him.
-
-"You villain!" said he, "where's your daughter?"
-
-The fat man cast his eyes round, and then up at the open
-skylight.
-
-"It is for me to ask you that," he shrieked, "you thieves! Spies
-and thieves! I have caught you, have I? You are in my power. I'll
-serve you!" He turned and clattered down the stairs as hard as he
-could go.
-
-"He's gone for the dog!" cried Miss Hunter.
-
-"I have my revolver," said I.
-
-"Better close the front door," cried Holmes, and we all rushed
-down the stairs together. We had hardly reached the hall when we
-heard the baying of a hound, and then a scream of agony, with a
-horrible worrying sound which it was dreadful to listen to. An
-elderly man with a red face and shaking limbs came staggering out
-at a side door.
-
-"My God!" he cried. "Someone has loosed the dog. It's not been
-fed for two days. Quick, quick, or it'll be too late!"
-
-Holmes and I rushed out and round the angle of the house, with
-Toller hurrying behind us. There was the huge famished brute, its
-black muzzle buried in Rucastle's throat, while he writhed and
-screamed upon the ground. Running up, I blew its brains out, and
-it fell over with its keen white teeth still meeting in the great
-creases of his neck. With much labour we separated them and
-carried him, living but horribly mangled, into the house. We laid
-him upon the drawing-room sofa, and having dispatched the sobered
-Toller to bear the news to his wife, I did what I could to
-relieve his pain. We were all assembled round him when the door
-opened, and a tall, gaunt woman entered the room.
-
-"Mrs. Toller!" cried Miss Hunter.
-
-"Yes, miss. Mr. Rucastle let me out when he came back before he
-went up to you. Ah, miss, it is a pity you didn't let me know
-what you were planning, for I would have told you that your pains
-were wasted."
-
-"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
-Toller knows more about this matter than anyone else."
-
-"Yes, sir, I do, and I am ready enough to tell what I know."
-
-"Then, pray, sit down, and let us hear it for there are several
-points on which I must confess that I am still in the dark."
-
-"I will soon make it clear to you," said she; "and I'd have done
-so before now if I could ha' got out from the cellar. If there's
-police-court business over this, you'll remember that I was the
-one that stood your friend, and that I was Miss Alice's friend
-too.
-
-"She was never happy at home, Miss Alice wasn't, from the time
-that her father married again. She was slighted like and had no
-say in anything, but it never really became bad for her until
-after she met Mr. Fowler at a friend's house. As well as I could
-learn, Miss Alice had rights of her own by will, but she was so
-quiet and patient, she was, that she never said a word about them
-but just left everything in Mr. Rucastle's hands. He knew he was
-safe with her; but when there was a chance of a husband coming
-forward, who would ask for all that the law would give him, then
-her father thought it time to put a stop on it. He wanted her to
-sign a paper, so that whether she married or not, he could use
-her money. When she wouldn't do it, he kept on worrying her until
-she got brain-fever, and for six weeks was at death's door. Then
-she got better at last, all worn to a shadow, and with her
-beautiful hair cut off; but that didn't make no change in her
-young man, and he stuck to her as true as man could be."
-
-"Ah," said Holmes, "I think that what you have been good enough
-to tell us makes the matter fairly clear, and that I can deduce
-all that remains. Mr. Rucastle then, I presume, took to this
-system of imprisonment?"
-
-"Yes, sir."
-
-"And brought Miss Hunter down from London in order to get rid of
-the disagreeable persistence of Mr. Fowler."
-
-"That was it, sir."
-
-"But Mr. Fowler being a persevering man, as a good seaman should
-be, blockaded the house, and having met you succeeded by certain
-arguments, metallic or otherwise, in convincing you that your
-interests were the same as his."
-
-"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
-Mrs. Toller serenely.
-
-"And in this way he managed that your good man should have no
-want of drink, and that a ladder should be ready at the moment
-when your master had gone out."
-
-"You have it, sir, just as it happened."
-
-"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
-you have certainly cleared up everything which puzzled us. And
-here comes the country surgeon and Mrs. Rucastle, so I think,
-Watson, that we had best escort Miss Hunter back to Winchester,
-as it seems to me that our locus standi now is rather a
-questionable one."
-
-And thus was solved the mystery of the sinister house with the
-copper beeches in front of the door. Mr. Rucastle survived, but
-was always a broken man, kept alive solely through the care of
-his devoted wife. They still live with their old servants, who
-probably know so much of Rucastle's past life that he finds it
-difficult to part from them. Mr. Fowler and Miss Rucastle were
-married, by special license, in Southampton the day after their
-flight, and he is now the holder of a government appointment in
-the island of Mauritius. As to Miss Violet Hunter, my friend
-Holmes, rather to my disappointment, manifested no further
-interest in her when once she had ceased to be the centre of one
-of his problems, and she is now the head of a private school at
-Walsall, where I believe that she has met with considerable success.
-
-
-
-
-
-
-
-
-
-End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
-Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-***** This file should be named 1661-8.txt or 1661-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/1/6/6/1661/
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.net/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need are critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including including checks, online payments and credit card
-donations.  To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.net
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/text-example/textapp/data/file2.txt b/hyracks/hyracks-examples/text-example/textapp/data/file2.txt
deleted file mode 100644
index a25d303..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/data/file2.txt
+++ /dev/null
@@ -1,10216 +0,0 @@
-Project Gutenberg's Memoirs of Sherlock Holmes, by Sir Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-
-Title: Memoirs of Sherlock Holmes
-
-Author: Sir Arthur Conan Doyle
-
-Posting Date: July 31, 2008 [EBook #834]
-Release Date: March, 1997
-[This file last updated on August 16, 2010]
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by Angela M. Cable
-
-
-
-
-
-MEMOIRS OF SHERLOCK HOLMES
-
-by Sir Arthur Conan Doyle
-
-
-
-
-Adventure I. Silver Blaze
-
-
-"I am afraid, Watson, that I shall have to go," said Holmes, as we sat
-down together to our breakfast one morning.
-
-"Go! Where to?"
-
-"To Dartmoor; to King's Pyland."
-
-I was not surprised. Indeed, my only wonder was that he had not already
-been mixed up in this extraordinary case, which was the one topic of
-conversation through the length and breadth of England. For a whole day
-my companion had rambled about the room with his chin upon his chest and
-his brows knitted, charging and recharging his pipe with the strongest
-black tobacco, and absolutely deaf to any of my questions or remarks.
-Fresh editions of every paper had been sent up by our news agent, only
-to be glanced over and tossed down into a corner. Yet, silent as he was,
-I knew perfectly well what it was over which he was brooding. There was
-but one problem before the public which could challenge his powers of
-analysis, and that was the singular disappearance of the favorite for
-the Wessex Cup, and the tragic murder of its trainer. When, therefore,
-he suddenly announced his intention of setting out for the scene of the
-drama it was only what I had both expected and hoped for.
-
-"I should be most happy to go down with you if I should not be in the
-way," said I.
-
-"My dear Watson, you would confer a great favor upon me by coming. And
-I think that your time will not be misspent, for there are points about
-the case which promise to make it an absolutely unique one. We have, I
-think, just time to catch our train at Paddington, and I will go further
-into the matter upon our journey. You would oblige me by bringing with
-you your very excellent field-glass."
-
-And so it happened that an hour or so later I found myself in the
-corner of a first-class carriage flying along en route for Exeter, while
-Sherlock Holmes, with his sharp, eager face framed in his ear-flapped
-travelling-cap, dipped rapidly into the bundle of fresh papers which he
-had procured at Paddington. We had left Reading far behind us before
-he thrust the last one of them under the seat, and offered me his
-cigar-case.
-
-"We are going well," said he, looking out the window and glancing at his
-watch. "Our rate at present is fifty-three and a half miles an hour."
-
-"I have not observed the quarter-mile posts," said I.
-
-"Nor have I. But the telegraph posts upon this line are sixty yards
-apart, and the calculation is a simple one. I presume that you
-have looked into this matter of the murder of John Straker and the
-disappearance of Silver Blaze?"
-
-"I have seen what the Telegraph and the Chronicle have to say."
-
-"It is one of those cases where the art of the reasoner should be
-used rather for the sifting of details than for the acquiring of fresh
-evidence. The tragedy has been so uncommon, so complete and of such
-personal importance to so many people, that we are suffering from a
-plethora of surmise, conjecture, and hypothesis. The difficulty is to
-detach the framework of fact--of absolute undeniable fact--from the
-embellishments of theorists and reporters. Then, having established
-ourselves upon this sound basis, it is our duty to see what inferences
-may be drawn and what are the special points upon which the whole
-mystery turns. On Tuesday evening I received telegrams from both Colonel
-Ross, the owner of the horse, and from Inspector Gregory, who is looking
-after the case, inviting my cooperation."
-
-"Tuesday evening!" I exclaimed. "And this is Thursday morning. Why
-didn't you go down yesterday?"
-
-"Because I made a blunder, my dear Watson--which is, I am afraid, a more
-common occurrence than any one would think who only knew me through your
-memoirs. The fact is that I could not believe it possible that the most
-remarkable horse in England could long remain concealed, especially in
-so sparsely inhabited a place as the north of Dartmoor. From hour to
-hour yesterday I expected to hear that he had been found, and that
-his abductor was the murderer of John Straker. When, however, another
-morning had come, and I found that beyond the arrest of young Fitzroy
-Simpson nothing had been done, I felt that it was time for me to take
-action. Yet in some ways I feel that yesterday has not been wasted."
-
-"You have formed a theory, then?"
-
-"At least I have got a grip of the essential facts of the case. I shall
-enumerate them to you, for nothing clears up a case so much as stating
-it to another person, and I can hardly expect your co-operation if I do
-not show you the position from which we start."
-
-I lay back against the cushions, puffing at my cigar, while Holmes,
-leaning forward, with his long, thin forefinger checking off the points
-upon the palm of his left hand, gave me a sketch of the events which had
-led to our journey.
-
-"Silver Blaze," said he, "is from the Somomy stock, and holds as
-brilliant a record as his famous ancestor. He is now in his fifth year,
-and has brought in turn each of the prizes of the turf to Colonel Ross,
-his fortunate owner. Up to the time of the catastrophe he was the first
-favorite for the Wessex Cup, the betting being three to one on him. He
-has always, however, been a prime favorite with the racing public, and
-has never yet disappointed them, so that even at those odds enormous
-sums of money have been laid upon him. It is obvious, therefore, that
-there were many people who had the strongest interest in preventing
-Silver Blaze from being there at the fall of the flag next Tuesday.
-
-"The fact was, of course, appreciated at King's Pyland, where the
-Colonel's training-stable is situated. Every precaution was taken to
-guard the favorite. The trainer, John Straker, is a retired jockey
-who rode in Colonel Ross's colors before he became too heavy for the
-weighing-chair. He has served the Colonel for five years as jockey and
-for seven as trainer, and has always shown himself to be a zealous and
-honest servant. Under him were three lads; for the establishment was a
-small one, containing only four horses in all. One of these lads sat up
-each night in the stable, while the others slept in the loft. All three
-bore excellent characters. John Straker, who is a married man, lived
-in a small villa about two hundred yards from the stables. He has no
-children, keeps one maid-servant, and is comfortably off. The country
-round is very lonely, but about half a mile to the north there is a
-small cluster of villas which have been built by a Tavistock contractor
-for the use of invalids and others who may wish to enjoy the pure
-Dartmoor air. Tavistock itself lies two miles to the west, while
-across the moor, also about two miles distant, is the larger training
-establishment of Mapleton, which belongs to Lord Backwater, and is
-managed by Silas Brown. In every other direction the moor is a complete
-wilderness, inhabited only by a few roaming gypsies. Such was the
-general situation last Monday night when the catastrophe occurred.
-
-"On that evening the horses had been exercised and watered as usual, and
-the stables were locked up at nine o'clock. Two of the lads walked up
-to the trainer's house, where they had supper in the kitchen, while the
-third, Ned Hunter, remained on guard. At a few minutes after nine
-the maid, Edith Baxter, carried down to the stables his supper, which
-consisted of a dish of curried mutton. She took no liquid, as there was
-a water-tap in the stables, and it was the rule that the lad on duty
-should drink nothing else. The maid carried a lantern with her, as it
-was very dark and the path ran across the open moor.
-
-"Edith Baxter was within thirty yards of the stables, when a man
-appeared out of the darkness and called to her to stop. As he stepped
-into the circle of yellow light thrown by the lantern she saw that he
-was a person of gentlemanly bearing, dressed in a gray suit of tweeds,
-with a cloth cap. He wore gaiters, and carried a heavy stick with a knob
-to it. She was most impressed, however, by the extreme pallor of his
-face and by the nervousness of his manner. His age, she thought, would
-be rather over thirty than under it.
-
-"'Can you tell me where I am?' he asked. 'I had almost made up my mind
-to sleep on the moor, when I saw the light of your lantern.'
-
-"'You are close to the King's Pyland training-stables,' said she.
-
-"'Oh, indeed! What a stroke of luck!' he cried. 'I understand that a
-stable-boy sleeps there alone every night. Perhaps that is his supper
-which you are carrying to him. Now I am sure that you would not be too
-proud to earn the price of a new dress, would you?' He took a piece of
-white paper folded up out of his waistcoat pocket. 'See that the boy
-has this to-night, and you shall have the prettiest frock that money can
-buy.'
-
-"She was frightened by the earnestness of his manner, and ran past him
-to the window through which she was accustomed to hand the meals. It was
-already opened, and Hunter was seated at the small table inside. She had
-begun to tell him of what had happened, when the stranger came up again.
-
-"'Good-evening,' said he, looking through the window. 'I wanted to have
-a word with you.' The girl has sworn that as he spoke she noticed the
-corner of the little paper packet protruding from his closed hand.
-
-"'What business have you here?' asked the lad.
-
-"'It's business that may put something into your pocket,' said the
-other. 'You've two horses in for the Wessex Cup--Silver Blaze and
-Bayard. Let me have the straight tip and you won't be a loser. Is it a
-fact that at the weights Bayard could give the other a hundred yards in
-five furlongs, and that the stable have put their money on him?'
-
-"'So, you're one of those damned touts!' cried the lad. 'I'll show you
-how we serve them in King's Pyland.' He sprang up and rushed across the
-stable to unloose the dog. The girl fled away to the house, but as she
-ran she looked back and saw that the stranger was leaning through the
-window. A minute later, however, when Hunter rushed out with the hound
-he was gone, and though he ran all round the buildings he failed to find
-any trace of him."
-
-"One moment," I asked. "Did the stable-boy, when he ran out with the
-dog, leave the door unlocked behind him?"
-
-"Excellent, Watson, excellent!" murmured my companion. "The importance
-of the point struck me so forcibly that I sent a special wire to
-Dartmoor yesterday to clear the matter up. The boy locked the door
-before he left it. The window, I may add, was not large enough for a man
-to get through.
-
-"Hunter waited until his fellow-grooms had returned, when he sent a
-message to the trainer and told him what had occurred. Straker was
-excited at hearing the account, although he does not seem to have quite
-realized its true significance. It left him, however, vaguely uneasy,
-and Mrs. Straker, waking at one in the morning, found that he was
-dressing. In reply to her inquiries, he said that he could not sleep on
-account of his anxiety about the horses, and that he intended to walk
-down to the stables to see that all was well. She begged him to remain
-at home, as she could hear the rain pattering against the window, but in
-spite of her entreaties he pulled on his large mackintosh and left the
-house.
-
-"Mrs. Straker awoke at seven in the morning, to find that her husband
-had not yet returned. She dressed herself hastily, called the maid, and
-set off for the stables. The door was open; inside, huddled together
-upon a chair, Hunter was sunk in a state of absolute stupor, the
-favorite's stall was empty, and there were no signs of his trainer.
-
-"The two lads who slept in the chaff-cutting loft above the harness-room
-were quickly aroused. They had heard nothing during the night, for they
-are both sound sleepers. Hunter was obviously under the influence of
-some powerful drug, and as no sense could be got out of him, he was left
-to sleep it off while the two lads and the two women ran out in search
-of the absentees. They still had hopes that the trainer had for some
-reason taken out the horse for early exercise, but on ascending the
-knoll near the house, from which all the neighboring moors were visible,
-they not only could see no signs of the missing favorite, but they
-perceived something which warned them that they were in the presence of
-a tragedy.
-
-"About a quarter of a mile from the stables John Straker's overcoat was
-flapping from a furze-bush. Immediately beyond there was a bowl-shaped
-depression in the moor, and at the bottom of this was found the dead
-body of the unfortunate trainer. His head had been shattered by a savage
-blow from some heavy weapon, and he was wounded on the thigh, where
-there was a long, clean cut, inflicted evidently by some very sharp
-instrument. It was clear, however, that Straker had defended himself
-vigorously against his assailants, for in his right hand he held a small
-knife, which was clotted with blood up to the handle, while in his left
-he clasped a red and black silk cravat, which was recognized by the maid
-as having been worn on the preceding evening by the stranger who had
-visited the stables. Hunter, on recovering from his stupor, was also
-quite positive as to the ownership of the cravat. He was equally certain
-that the same stranger had, while standing at the window, drugged his
-curried mutton, and so deprived the stables of their watchman. As to the
-missing horse, there were abundant proofs in the mud which lay at the
-bottom of the fatal hollow that he had been there at the time of the
-struggle. But from that morning he has disappeared, and although a large
-reward has been offered, and all the gypsies of Dartmoor are on the
-alert, no news has come of him. Finally, an analysis has shown that
-the remains of his supper left by the stable-lad contain an appreciable
-quantity of powdered opium, while the people at the house partook of the
-same dish on the same night without any ill effect.
-
-"Those are the main facts of the case, stripped of all surmise, and
-stated as baldly as possible. I shall now recapitulate what the police
-have done in the matter.
-
-"Inspector Gregory, to whom the case has been committed, is an extremely
-competent officer. Were he but gifted with imagination he might rise to
-great heights in his profession. On his arrival he promptly found and
-arrested the man upon whom suspicion naturally rested. There was little
-difficulty in finding him, for he inhabited one of those villas which I
-have mentioned. His name, it appears, was Fitzroy Simpson. He was a man
-of excellent birth and education, who had squandered a fortune upon the
-turf, and who lived now by doing a little quiet and genteel book-making
-in the sporting clubs of London. An examination of his betting-book
-shows that bets to the amount of five thousand pounds had been
-registered by him against the favorite. On being arrested he volunteered
-that statement that he had come down to Dartmoor in the hope of
-getting some information about the King's Pyland horses, and also about
-Desborough, the second favorite, which was in charge of Silas Brown at
-the Mapleton stables. He did not attempt to deny that he had acted as
-described upon the evening before, but declared that he had no sinister
-designs, and had simply wished to obtain first-hand information. When
-confronted with his cravat, he turned very pale, and was utterly unable
-to account for its presence in the hand of the murdered man. His wet
-clothing showed that he had been out in the storm of the night before,
-and his stick, which was a Penang-lawyer weighted with lead, was just
-such a weapon as might, by repeated blows, have inflicted the terrible
-injuries to which the trainer had succumbed. On the other hand, there
-was no wound upon his person, while the state of Straker's knife would
-show that one at least of his assailants must bear his mark upon him.
-There you have it all in a nutshell, Watson, and if you can give me any
-light I shall be infinitely obliged to you."
-
-I had listened with the greatest interest to the statement which Holmes,
-with characteristic clearness, had laid before me. Though most of the
-facts were familiar to me, I had not sufficiently appreciated their
-relative importance, nor their connection to each other.
-
-"Is it not possible," I suggested, "that the incised wound upon Straker
-may have been caused by his own knife in the convulsive struggles which
-follow any brain injury?"
-
-"It is more than possible; it is probable," said Holmes. "In that case
-one of the main points in favor of the accused disappears."
-
-"And yet," said I, "even now I fail to understand what the theory of the
-police can be."
-
-"I am afraid that whatever theory we state has very grave objections to
-it," returned my companion. "The police imagine, I take it, that this
-Fitzroy Simpson, having drugged the lad, and having in some way obtained
-a duplicate key, opened the stable door and took out the horse, with
-the intention, apparently, of kidnapping him altogether. His bridle is
-missing, so that Simpson must have put this on. Then, having left the
-door open behind him, he was leading the horse away over the moor, when
-he was either met or overtaken by the trainer. A row naturally ensued.
-Simpson beat out the trainer's brains with his heavy stick without
-receiving any injury from the small knife which Straker used in
-self-defence, and then the thief either led the horse on to some secret
-hiding-place, or else it may have bolted during the struggle, and be
-now wandering out on the moors. That is the case as it appears to
-the police, and improbable as it is, all other explanations are more
-improbable still. However, I shall very quickly test the matter when I
-am once upon the spot, and until then I cannot really see how we can get
-much further than our present position."
-
-It was evening before we reached the little town of Tavistock, which
-lies, like the boss of a shield, in the middle of the huge circle of
-Dartmoor. Two gentlemen were awaiting us in the station--the one a tall,
-fair man with lion-like hair and beard and curiously penetrating light
-blue eyes; the other a small, alert person, very neat and dapper, in a
-frock-coat and gaiters, with trim little side-whiskers and an eye-glass.
-The latter was Colonel Ross, the well-known sportsman; the other,
-Inspector Gregory, a man who was rapidly making his name in the English
-detective service.
-
-"I am delighted that you have come down, Mr. Holmes," said the Colonel.
-"The Inspector here has done all that could possibly be suggested, but I
-wish to leave no stone unturned in trying to avenge poor Straker and in
-recovering my horse."
-
-"Have there been any fresh developments?" asked Holmes.
-
-"I am sorry to say that we have made very little progress," said the
-Inspector. "We have an open carriage outside, and as you would no doubt
-like to see the place before the light fails, we might talk it over as
-we drive."
-
-A minute later we were all seated in a comfortable landau, and were
-rattling through the quaint old Devonshire city. Inspector Gregory was
-full of his case, and poured out a stream of remarks, while Holmes threw
-in an occasional question or interjection. Colonel Ross leaned back with
-his arms folded and his hat tilted over his eyes, while I listened with
-interest to the dialogue of the two detectives. Gregory was formulating
-his theory, which was almost exactly what Holmes had foretold in the
-train.
-
-"The net is drawn pretty close round Fitzroy Simpson," he remarked, "and
-I believe myself that he is our man. At the same time I recognize that
-the evidence is purely circumstantial, and that some new development may
-upset it."
-
-"How about Straker's knife?"
-
-"We have quite come to the conclusion that he wounded himself in his
-fall."
-
-"My friend Dr. Watson made that suggestion to me as we came down. If so,
-it would tell against this man Simpson."
-
-"Undoubtedly. He has neither a knife nor any sign of a wound. The
-evidence against him is certainly very strong. He had a great interest
-in the disappearance of the favorite. He lies under suspicion of having
-poisoned the stable-boy, he was undoubtedly out in the storm, he was
-armed with a heavy stick, and his cravat was found in the dead man's
-hand. I really think we have enough to go before a jury."
-
-Holmes shook his head. "A clever counsel would tear it all to rags,"
-said he. "Why should he take the horse out of the stable? If he wished
-to injure it why could he not do it there? Has a duplicate key been
-found in his possession? What chemist sold him the powdered opium? Above
-all, where could he, a stranger to the district, hide a horse, and such
-a horse as this? What is his own explanation as to the paper which he
-wished the maid to give to the stable-boy?"
-
-"He says that it was a ten-pound note. One was found in his purse. But
-your other difficulties are not so formidable as they seem. He is not
-a stranger to the district. He has twice lodged at Tavistock in the
-summer. The opium was probably brought from London. The key, having
-served its purpose, would be hurled away. The horse may be at the bottom
-of one of the pits or old mines upon the moor."
-
-"What does he say about the cravat?"
-
-"He acknowledges that it is his, and declares that he had lost it. But a
-new element has been introduced into the case which may account for his
-leading the horse from the stable."
-
-Holmes pricked up his ears.
-
-"We have found traces which show that a party of gypsies encamped on
-Monday night within a mile of the spot where the murder took place. On
-Tuesday they were gone. Now, presuming that there was some understanding
-between Simpson and these gypsies, might he not have been leading the
-horse to them when he was overtaken, and may they not have him now?"
-
-"It is certainly possible."
-
-"The moor is being scoured for these gypsies. I have also examined every
-stable and out-house in Tavistock, and for a radius of ten miles."
-
-"There is another training-stable quite close, I understand?"
-
-"Yes, and that is a factor which we must certainly not neglect. As
-Desborough, their horse, was second in the betting, they had an interest
-in the disappearance of the favorite. Silas Brown, the trainer, is known
-to have had large bets upon the event, and he was no friend to poor
-Straker. We have, however, examined the stables, and there is nothing to
-connect him with the affair."
-
-"And nothing to connect this man Simpson with the interests of the
-Mapleton stables?"
-
-"Nothing at all."
-
-Holmes leaned back in the carriage, and the conversation ceased. A few
-minutes later our driver pulled up at a neat little red-brick villa with
-overhanging eaves which stood by the road. Some distance off, across a
-paddock, lay a long gray-tiled out-building. In every other direction
-the low curves of the moor, bronze-colored from the fading ferns,
-stretched away to the sky-line, broken only by the steeples of
-Tavistock, and by a cluster of houses away to the westward which marked
-the Mapleton stables. We all sprang out with the exception of Holmes,
-who continued to lean back with his eyes fixed upon the sky in front of
-him, entirely absorbed in his own thoughts. It was only when I touched
-his arm that he roused himself with a violent start and stepped out of
-the carriage.
-
-"Excuse me," said he, turning to Colonel Ross, who had looked at him in
-some surprise. "I was day-dreaming." There was a gleam in his eyes and a
-suppressed excitement in his manner which convinced me, used as I was
-to his ways, that his hand was upon a clue, though I could not imagine
-where he had found it.
-
-"Perhaps you would prefer at once to go on to the scene of the crime,
-Mr. Holmes?" said Gregory.
-
-"I think that I should prefer to stay here a little and go into one or
-two questions of detail. Straker was brought back here, I presume?"
-
-"Yes; he lies upstairs. The inquest is to-morrow."
-
-"He has been in your service some years, Colonel Ross?"
-
-"I have always found him an excellent servant."
-
-"I presume that you made an inventory of what he had in his pockets at
-the time of his death, Inspector?"
-
-"I have the things themselves in the sitting-room, if you would care to
-see them."
-
-"I should be very glad." We all filed into the front room and sat round
-the central table while the Inspector unlocked a square tin box and laid
-a small heap of things before us. There was a box of vestas, two inches
-of tallow candle, an A D P brier-root pipe, a pouch of seal-skin with
-half an ounce of long-cut Cavendish, a silver watch with a gold chain,
-five sovereigns in gold, an aluminum pencil-case, a few papers, and an
-ivory-handled knife with a very delicate, inflexible blade marked Weiss
-& Co., London.
-
-"This is a very singular knife," said Holmes, lifting it up and
-examining it minutely. "I presume, as I see blood-stains upon it, that
-it is the one which was found in the dead man's grasp. Watson, this
-knife is surely in your line?"
-
-"It is what we call a cataract knife," said I.
-
-"I thought so. A very delicate blade devised for very delicate work.
-A strange thing for a man to carry with him upon a rough expedition,
-especially as it would not shut in his pocket."
-
-"The tip was guarded by a disk of cork which we found beside his body,"
-said the Inspector. "His wife tells us that the knife had lain upon the
-dressing-table, and that he had picked it up as he left the room. It was
-a poor weapon, but perhaps the best that he could lay his hands on at
-the moment."
-
-"Very possible. How about these papers?"
-
-"Three of them are receipted hay-dealers' accounts. One of them is a
-letter of instructions from Colonel Ross. This other is a milliner's
-account for thirty-seven pounds fifteen made out by Madame Lesurier,
-of Bond Street, to William Derbyshire. Mrs. Straker tells us that
-Derbyshire was a friend of her husband's and that occasionally his
-letters were addressed here."
-
-"Madam Derbyshire had somewhat expensive tastes," remarked Holmes,
-glancing down the account. "Twenty-two guineas is rather heavy for a
-single costume. However there appears to be nothing more to learn, and
-we may now go down to the scene of the crime."
-
-As we emerged from the sitting-room a woman, who had been waiting in
-the passage, took a step forward and laid her hand upon the Inspector's
-sleeve. Her face was haggard and thin and eager, stamped with the print
-of a recent horror.
-
-"Have you got them? Have you found them?" she panted.
-
-"No, Mrs. Straker. But Mr. Holmes here has come from London to help us,
-and we shall do all that is possible."
-
-"Surely I met you in Plymouth at a garden-party some little time ago,
-Mrs. Straker?" said Holmes.
-
-"No, sir; you are mistaken."
-
-"Dear me! Why, I could have sworn to it. You wore a costume of
-dove-colored silk with ostrich-feather trimming."
-
-"I never had such a dress, sir," answered the lady.
-
-"Ah, that quite settles it," said Holmes. And with an apology he
-followed the Inspector outside. A short walk across the moor took us to
-the hollow in which the body had been found. At the brink of it was the
-furze-bush upon which the coat had been hung.
-
-"There was no wind that night, I understand," said Holmes.
-
-"None; but very heavy rain."
-
-"In that case the overcoat was not blown against the furze-bush, but
-placed there."
-
-"Yes, it was laid across the bush."
-
-"You fill me with interest, I perceive that the ground has been trampled
-up a good deal. No doubt many feet have been here since Monday night."
-
-"A piece of matting has been laid here at the side, and we have all
-stood upon that."
-
-"Excellent."
-
-"In this bag I have one of the boots which Straker wore, one of Fitzroy
-Simpson's shoes, and a cast horseshoe of Silver Blaze."
-
-"My dear Inspector, you surpass yourself!" Holmes took the bag, and,
-descending into the hollow, he pushed the matting into a more central
-position. Then stretching himself upon his face and leaning his chin
-upon his hands, he made a careful study of the trampled mud in front of
-him. "Hullo!" said he, suddenly. "What's this?" It was a wax vesta half
-burned, which was so coated with mud that it looked at first like a
-little chip of wood.
-
-"I cannot think how I came to overlook it," said the Inspector, with an
-expression of annoyance.
-
-"It was invisible, buried in the mud. I only saw it because I was
-looking for it."
-
-"What! You expected to find it?"
-
-"I thought it not unlikely."
-
-He took the boots from the bag, and compared the impressions of each of
-them with marks upon the ground. Then he clambered up to the rim of the
-hollow, and crawled about among the ferns and bushes.
-
-"I am afraid that there are no more tracks," said the Inspector. "I
-have examined the ground very carefully for a hundred yards in each
-direction."
-
-"Indeed!" said Holmes, rising. "I should not have the impertinence to
-do it again after what you say. But I should like to take a little walk
-over the moor before it grows dark, that I may know my ground to-morrow,
-and I think that I shall put this horseshoe into my pocket for luck."
-
-Colonel Ross, who had shown some signs of impatience at my companion's
-quiet and systematic method of work, glanced at his watch. "I wish you
-would come back with me, Inspector," said he. "There are several points
-on which I should like your advice, and especially as to whether we do
-not owe it to the public to remove our horse's name from the entries for
-the Cup."
-
-"Certainly not," cried Holmes, with decision. "I should let the name
-stand."
-
-The Colonel bowed. "I am very glad to have had your opinion, sir," said
-he. "You will find us at poor Straker's house when you have finished
-your walk, and we can drive together into Tavistock."
-
-He turned back with the Inspector, while Holmes and I walked slowly
-across the moor. The sun was beginning to sink behind the stables of
-Mapleton, and the long, sloping plain in front of us was tinged with
-gold, deepening into rich, ruddy browns where the faded ferns and
-brambles caught the evening light. But the glories of the landscape were
-all wasted upon my companion, who was sunk in the deepest thought.
-
-"It's this way, Watson," said he at last. "We may leave the question
-of who killed John Straker for the instant, and confine ourselves to
-finding out what has become of the horse. Now, supposing that he broke
-away during or after the tragedy, where could he have gone to? The horse
-is a very gregarious creature. If left to himself his instincts would
-have been either to return to King's Pyland or go over to Mapleton. Why
-should he run wild upon the moor? He would surely have been seen by now.
-And why should gypsies kidnap him? These people always clear out when
-they hear of trouble, for they do not wish to be pestered by the police.
-They could not hope to sell such a horse. They would run a great risk
-and gain nothing by taking him. Surely that is clear."
-
-"Where is he, then?"
-
-"I have already said that he must have gone to King's Pyland or to
-Mapleton. He is not at King's Pyland. Therefore he is at Mapleton. Let
-us take that as a working hypothesis and see what it leads us to. This
-part of the moor, as the Inspector remarked, is very hard and dry. But
-it falls away towards Mapleton, and you can see from here that there
-is a long hollow over yonder, which must have been very wet on Monday
-night. If our supposition is correct, then the horse must have crossed
-that, and there is the point where we should look for his tracks."
-
-We had been walking briskly during this conversation, and a few more
-minutes brought us to the hollow in question. At Holmes' request I
-walked down the bank to the right, and he to the left, but I had not
-taken fifty paces before I heard him give a shout, and saw him waving
-his hand to me. The track of a horse was plainly outlined in the soft
-earth in front of him, and the shoe which he took from his pocket
-exactly fitted the impression.
-
-"See the value of imagination," said Holmes. "It is the one quality
-which Gregory lacks. We imagined what might have happened, acted upon
-the supposition, and find ourselves justified. Let us proceed."
-
-We crossed the marshy bottom and passed over a quarter of a mile of dry,
-hard turf. Again the ground sloped, and again we came on the tracks.
-Then we lost them for half a mile, but only to pick them up once more
-quite close to Mapleton. It was Holmes who saw them first, and he stood
-pointing with a look of triumph upon his face. A man's track was visible
-beside the horse's.
-
-"The horse was alone before," I cried.
-
-"Quite so. It was alone before. Hullo, what is this?"
-
-The double track turned sharp off and took the direction of King's
-Pyland. Holmes whistled, and we both followed along after it. His eyes
-were on the trail, but I happened to look a little to one side, and
-saw to my surprise the same tracks coming back again in the opposite
-direction.
-
-"One for you, Watson," said Holmes, when I pointed it out. "You have
-saved us a long walk, which would have brought us back on our own
-traces. Let us follow the return track."
-
-We had not to go far. It ended at the paving of asphalt which led up
-to the gates of the Mapleton stables. As we approached, a groom ran out
-from them.
-
-"We don't want any loiterers about here," said he.
-
-"I only wished to ask a question," said Holmes, with his finger and
-thumb in his waistcoat pocket. "Should I be too early to see your
-master, Mr. Silas Brown, if I were to call at five o'clock to-morrow
-morning?"
-
-"Bless you, sir, if any one is about he will be, for he is always
-the first stirring. But here he is, sir, to answer your questions for
-himself. No, sir, no; it is as much as my place is worth to let him see
-me touch your money. Afterwards, if you like."
-
-As Sherlock Holmes replaced the half-crown which he had drawn from his
-pocket, a fierce-looking elderly man strode out from the gate with a
-hunting-crop swinging in his hand.
-
-"What's this, Dawson!" he cried. "No gossiping! Go about your business!
-And you, what the devil do you want here?"
-
-"Ten minutes' talk with you, my good sir," said Holmes in the sweetest
-of voices.
-
-"I've no time to talk to every gadabout. We want no stranger here. Be
-off, or you may find a dog at your heels."
-
-Holmes leaned forward and whispered something in the trainer's ear. He
-started violently and flushed to the temples.
-
-"It's a lie!" he shouted, "an infernal lie!"
-
-"Very good. Shall we argue about it here in public or talk it over in
-your parlor?"
-
-"Oh, come in if you wish to."
-
-Holmes smiled. "I shall not keep you more than a few minutes, Watson,"
-said he. "Now, Mr. Brown, I am quite at your disposal."
-
-It was twenty minutes, and the reds had all faded into grays before
-Holmes and the trainer reappeared. Never have I seen such a change as
-had been brought about in Silas Brown in that short time. His face was
-ashy pale, beads of perspiration shone upon his brow, and his hands
-shook until the hunting-crop wagged like a branch in the wind. His
-bullying, overbearing manner was all gone too, and he cringed along at
-my companion's side like a dog with its master.
-
-"Your instructions will be done. It shall all be done," said he.
-
-"There must be no mistake," said Holmes, looking round at him. The other
-winced as he read the menace in his eyes.
-
-"Oh no, there shall be no mistake. It shall be there. Should I change it
-first or not?"
-
-Holmes thought a little and then burst out laughing. "No, don't," said
-he; "I shall write to you about it. No tricks, now, or--"
-
-"Oh, you can trust me, you can trust me!"
-
-"Yes, I think I can. Well, you shall hear from me to-morrow." He turned
-upon his heel, disregarding the trembling hand which the other held out
-to him, and we set off for King's Pyland.
-
-"A more perfect compound of the bully, coward, and sneak than Master
-Silas Brown I have seldom met with," remarked Holmes as we trudged along
-together.
-
-"He has the horse, then?"
-
-"He tried to bluster out of it, but I described to him so exactly what
-his actions had been upon that morning that he is convinced that I was
-watching him. Of course you observed the peculiarly square toes in the
-impressions, and that his own boots exactly corresponded to them.
-Again, of course no subordinate would have dared to do such a thing.
-I described to him how, when according to his custom he was the first
-down, he perceived a strange horse wandering over the moor. How he went
-out to it, and his astonishment at recognizing, from the white forehead
-which has given the favorite its name, that chance had put in his power
-the only horse which could beat the one upon which he had put his money.
-Then I described how his first impulse had been to lead him back to
-King's Pyland, and how the devil had shown him how he could hide the
-horse until the race was over, and how he had led it back and concealed
-it at Mapleton. When I told him every detail he gave it up and thought
-only of saving his own skin."
-
-"But his stables had been searched?"
-
-"Oh, an old horse-faker like him has many a dodge."
-
-"But are you not afraid to leave the horse in his power now, since he
-has every interest in injuring it?"
-
-"My dear fellow, he will guard it as the apple of his eye. He knows that
-his only hope of mercy is to produce it safe."
-
-"Colonel Ross did not impress me as a man who would be likely to show
-much mercy in any case."
-
-"The matter does not rest with Colonel Ross. I follow my own methods,
-and tell as much or as little as I choose. That is the advantage of
-being unofficial. I don't know whether you observed it, Watson, but the
-Colonel's manner has been just a trifle cavalier to me. I am inclined
-now to have a little amusement at his expense. Say nothing to him about
-the horse."
-
-"Certainly not without your permission."
-
-"And of course this is all quite a minor point compared to the question
-of who killed John Straker."
-
-"And you will devote yourself to that?"
-
-"On the contrary, we both go back to London by the night train."
-
-I was thunderstruck by my friend's words. We had only been a few hours
-in Devonshire, and that he should give up an investigation which he had
-begun so brilliantly was quite incomprehensible to me. Not a word more
-could I draw from him until we were back at the trainer's house. The
-Colonel and the Inspector were awaiting us in the parlor.
-
-"My friend and I return to town by the night-express," said Holmes. "We
-have had a charming little breath of your beautiful Dartmoor air."
-
-The Inspector opened his eyes, and the Colonel's lip curled in a sneer.
-
-"So you despair of arresting the murderer of poor Straker," said he.
-
-Holmes shrugged his shoulders. "There are certainly grave difficulties
-in the way," said he. "I have every hope, however, that your horse
-will start upon Tuesday, and I beg that you will have your jockey in
-readiness. Might I ask for a photograph of Mr. John Straker?"
-
-The Inspector took one from an envelope and handed it to him.
-
-"My dear Gregory, you anticipate all my wants. If I might ask you to
-wait here for an instant, I have a question which I should like to put
-to the maid."
-
-"I must say that I am rather disappointed in our London consultant,"
-said Colonel Ross, bluntly, as my friend left the room. "I do not see
-that we are any further than when he came."
-
-"At least you have his assurance that your horse will run," said I.
-
-"Yes, I have his assurance," said the Colonel, with a shrug of his
-shoulders. "I should prefer to have the horse."
-
-I was about to make some reply in defence of my friend when he entered
-the room again.
-
-"Now, gentlemen," said he, "I am quite ready for Tavistock."
-
-As we stepped into the carriage one of the stable-lads held the door
-open for us. A sudden idea seemed to occur to Holmes, for he leaned
-forward and touched the lad upon the sleeve.
-
-"You have a few sheep in the paddock," he said. "Who attends to them?"
-
-"I do, sir."
-
-"Have you noticed anything amiss with them of late?"
-
-"Well, sir, not of much account; but three of them have gone lame, sir."
-
-I could see that Holmes was extremely pleased, for he chuckled and
-rubbed his hands together.
-
-"A long shot, Watson; a very long shot," said he, pinching my arm.
-"Gregory, let me recommend to your attention this singular epidemic
-among the sheep. Drive on, coachman!"
-
-Colonel Ross still wore an expression which showed the poor opinion
-which he had formed of my companion's ability, but I saw by the
-Inspector's face that his attention had been keenly aroused.
-
-"You consider that to be important?" he asked.
-
-"Exceedingly so."
-
-"Is there any point to which you would wish to draw my attention?"
-
-"To the curious incident of the dog in the night-time."
-
-"The dog did nothing in the night-time."
-
-"That was the curious incident," remarked Sherlock Holmes.
-
-
-Four days later Holmes and I were again in the train, bound for
-Winchester to see the race for the Wessex Cup. Colonel Ross met us by
-appointment outside the station, and we drove in his drag to the course
-beyond the town. His face was grave, and his manner was cold in the
-extreme.
-
-"I have seen nothing of my horse," said he.
-
-"I suppose that you would know him when you saw him?" asked Holmes.
-
-The Colonel was very angry. "I have been on the turf for twenty years,
-and never was asked such a question as that before," said he. "A
-child would know Silver Blaze, with his white forehead and his mottled
-off-foreleg."
-
-"How is the betting?"
-
-"Well, that is the curious part of it. You could have got fifteen to one
-yesterday, but the price has become shorter and shorter, until you can
-hardly get three to one now."
-
-"Hum!" said Holmes. "Somebody knows something, that is clear."
-
-As the drag drew up in the enclosure near the grand stand I glanced at
-the card to see the entries.
-
-Wessex Plate [it ran] 50 sovs each h ft with 1000 sovs added for four
-and five year olds. Second, L300. Third, L200. New course (one mile and
-five furlongs). Mr. Heath Newton's The Negro. Red cap. Cinnamon jacket.
-Colonel Wardlaw's Pugilist. Pink cap. Blue and black jacket. Lord
-Backwater's Desborough. Yellow cap and sleeves. Colonel Ross's Silver
-Blaze. Black cap. Red jacket. Duke of Balmoral's Iris. Yellow and black
-stripes. Lord Singleford's Rasper. Purple cap. Black sleeves.
-
-"We scratched our other one, and put all hopes on your word," said the
-Colonel. "Why, what is that? Silver Blaze favorite?"
-
-"Five to four against Silver Blaze!" roared the ring. "Five to four
-against Silver Blaze! Five to fifteen against Desborough! Five to four
-on the field!"
-
-"There are the numbers up," I cried. "They are all six there."
-
-"All six there? Then my horse is running," cried the Colonel in great
-agitation. "But I don't see him. My colors have not passed."
-
-"Only five have passed. This must be he."
-
-As I spoke a powerful bay horse swept out from the weighing enclosure
-and cantered past us, bearing on its back the well-known black and red
-of the Colonel.
-
-"That's not my horse," cried the owner. "That beast has not a white hair
-upon its body. What is this that you have done, Mr. Holmes?"
-
-"Well, well, let us see how he gets on," said my friend, imperturbably.
-For a few minutes he gazed through my field-glass. "Capital! An
-excellent start!" he cried suddenly. "There they are, coming round the
-curve!"
-
-From our drag we had a superb view as they came up the straight. The six
-horses were so close together that a carpet could have covered them,
-but half way up the yellow of the Mapleton stable showed to the front.
-Before they reached us, however, Desborough's bolt was shot, and the
-Colonel's horse, coming away with a rush, passed the post a good six
-lengths before its rival, the Duke of Balmoral's Iris making a bad
-third.
-
-"It's my race, anyhow," gasped the Colonel, passing his hand over his
-eyes. "I confess that I can make neither head nor tail of it. Don't you
-think that you have kept up your mystery long enough, Mr. Holmes?"
-
-"Certainly, Colonel, you shall know everything. Let us all go round and
-have a look at the horse together. Here he is," he continued, as we made
-our way into the weighing enclosure, where only owners and their friends
-find admittance. "You have only to wash his face and his leg in spirits
-of wine, and you will find that he is the same old Silver Blaze as
-ever."
-
-"You take my breath away!"
-
-"I found him in the hands of a faker, and took the liberty of running
-him just as he was sent over."
-
-"My dear sir, you have done wonders. The horse looks very fit and well.
-It never went better in its life. I owe you a thousand apologies
-for having doubted your ability. You have done me a great service by
-recovering my horse. You would do me a greater still if you could lay
-your hands on the murderer of John Straker."
-
-"I have done so," said Holmes quietly.
-
-The Colonel and I stared at him in amazement. "You have got him! Where
-is he, then?"
-
-"He is here."
-
-"Here! Where?"
-
-"In my company at the present moment."
-
-The Colonel flushed angrily. "I quite recognize that I am under
-obligations to you, Mr. Holmes," said he, "but I must regard what you
-have just said as either a very bad joke or an insult."
-
-Sherlock Holmes laughed. "I assure you that I have not associated
-you with the crime, Colonel," said he. "The real murderer is standing
-immediately behind you." He stepped past and laid his hand upon the
-glossy neck of the thoroughbred.
-
-"The horse!" cried both the Colonel and myself.
-
-"Yes, the horse. And it may lessen his guilt if I say that it was
-done in self-defence, and that John Straker was a man who was entirely
-unworthy of your confidence. But there goes the bell, and as I stand
-to win a little on this next race, I shall defer a lengthy explanation
-until a more fitting time."
-
-
-
-We had the corner of a Pullman car to ourselves that evening as we
-whirled back to London, and I fancy that the journey was a short one
-to Colonel Ross as well as to myself, as we listened to our
-companion's narrative of the events which had occurred at the Dartmoor
-training-stables upon the Monday night, and the means by which he had
-unravelled them.
-
-"I confess," said he, "that any theories which I had formed from
-the newspaper reports were entirely erroneous. And yet there were
-indications there, had they not been overlaid by other details which
-concealed their true import. I went to Devonshire with the conviction
-that Fitzroy Simpson was the true culprit, although, of course, I saw
-that the evidence against him was by no means complete. It was while I
-was in the carriage, just as we reached the trainer's house, that the
-immense significance of the curried mutton occurred to me. You may
-remember that I was distrait, and remained sitting after you had all
-alighted. I was marvelling in my own mind how I could possibly have
-overlooked so obvious a clue."
-
-"I confess," said the Colonel, "that even now I cannot see how it helps
-us."
-
-"It was the first link in my chain of reasoning. Powdered opium is by no
-means tasteless. The flavor is not disagreeable, but it is perceptible.
-Were it mixed with any ordinary dish the eater would undoubtedly detect
-it, and would probably eat no more. A curry was exactly the medium
-which would disguise this taste. By no possible supposition could
-this stranger, Fitzroy Simpson, have caused curry to be served in
-the trainer's family that night, and it is surely too monstrous a
-coincidence to suppose that he happened to come along with powdered
-opium upon the very night when a dish happened to be served which would
-disguise the flavor. That is unthinkable. Therefore Simpson becomes
-eliminated from the case, and our attention centers upon Straker and
-his wife, the only two people who could have chosen curried mutton for
-supper that night. The opium was added after the dish was set aside
-for the stable-boy, for the others had the same for supper with no ill
-effects. Which of them, then, had access to that dish without the maid
-seeing them?
-
-"Before deciding that question I had grasped the significance of the
-silence of the dog, for one true inference invariably suggests others.
-The Simpson incident had shown me that a dog was kept in the stables,
-and yet, though some one had been in and had fetched out a horse, he
-had not barked enough to arouse the two lads in the loft. Obviously the
-midnight visitor was some one whom the dog knew well.
-
-"I was already convinced, or almost convinced, that John Straker went
-down to the stables in the dead of the night and took out Silver Blaze.
-For what purpose? For a dishonest one, obviously, or why should he drug
-his own stable-boy? And yet I was at a loss to know why. There have been
-cases before now where trainers have made sure of great sums of money
-by laying against their own horses, through agents, and then preventing
-them from winning by fraud. Sometimes it is a pulling jockey. Sometimes
-it is some surer and subtler means. What was it here? I hoped that the
-contents of his pockets might help me to form a conclusion.
-
-"And they did so. You cannot have forgotten the singular knife which was
-found in the dead man's hand, a knife which certainly no sane man would
-choose for a weapon. It was, as Dr. Watson told us, a form of knife
-which is used for the most delicate operations known in surgery. And it
-was to be used for a delicate operation that night. You must know, with
-your wide experience of turf matters, Colonel Ross, that it is possible
-to make a slight nick upon the tendons of a horse's ham, and to do it
-subcutaneously, so as to leave absolutely no trace. A horse so treated
-would develop a slight lameness, which would be put down to a strain in
-exercise or a touch of rheumatism, but never to foul play."
-
-"Villain! Scoundrel!" cried the Colonel.
-
-"We have here the explanation of why John Straker wished to take the
-horse out on to the moor. So spirited a creature would have certainly
-roused the soundest of sleepers when it felt the prick of the knife. It
-was absolutely necessary to do it in the open air."
-
-"I have been blind!" cried the Colonel. "Of course that was why he
-needed the candle, and struck the match."
-
-"Undoubtedly. But in examining his belongings I was fortunate enough to
-discover not only the method of the crime, but even its motives. As a
-man of the world, Colonel, you know that men do not carry other people's
-bills about in their pockets. We have most of us quite enough to do to
-settle our own. I at once concluded that Straker was leading a double
-life, and keeping a second establishment. The nature of the bill showed
-that there was a lady in the case, and one who had expensive tastes.
-Liberal as you are with your servants, one can hardly expect that they
-can buy twenty-guinea walking dresses for their ladies. I questioned
-Mrs. Straker as to the dress without her knowing it, and having
-satisfied myself that it had never reached her, I made a note of the
-milliner's address, and felt that by calling there with Straker's
-photograph I could easily dispose of the mythical Derbyshire.
-
-"From that time on all was plain. Straker had led out the horse to a
-hollow where his light would be invisible. Simpson in his flight had
-dropped his cravat, and Straker had picked it up--with some idea,
-perhaps, that he might use it in securing the horse's leg. Once in the
-hollow, he had got behind the horse and had struck a light; but the
-creature frightened at the sudden glare, and with the strange instinct
-of animals feeling that some mischief was intended, had lashed out, and
-the steel shoe had struck Straker full on the forehead. He had already,
-in spite of the rain, taken off his overcoat in order to do his delicate
-task, and so, as he fell, his knife gashed his thigh. Do I make it
-clear?"
-
-"Wonderful!" cried the Colonel. "Wonderful! You might have been there!"
-
-"My final shot was, I confess a very long one. It struck me that so
-astute a man as Straker would not undertake this delicate tendon-nicking
-without a little practice. What could he practice on? My eyes fell upon
-the sheep, and I asked a question which, rather to my surprise, showed
-that my surmise was correct.
-
-"When I returned to London I called upon the milliner, who had
-recognized Straker as an excellent customer of the name of Derbyshire,
-who had a very dashing wife, with a strong partiality for expensive
-dresses. I have no doubt that this woman had plunged him over head and
-ears in debt, and so led him into this miserable plot."
-
-"You have explained all but one thing," cried the Colonel. "Where was
-the horse?"
-
-"Ah, it bolted, and was cared for by one of your neighbors. We must have
-an amnesty in that direction, I think. This is Clapham Junction, if I am
-not mistaken, and we shall be in Victoria in less than ten minutes. If
-you care to smoke a cigar in our rooms, Colonel, I shall be happy to
-give you any other details which might interest you."
-
-
-
-
-Adventure II. The Yellow Face
-
-
-[In publishing these short sketches based upon the numerous cases in
-which my companion's singular gifts have made us the listeners to, and
-eventually the actors in, some strange drama, it is only natural that I
-should dwell rather upon his successes than upon his failures. And this
-not so much for the sake of his reputation--for, indeed, it was when
-he was at his wits' end that his energy and his versatility were most
-admirable--but because where he failed it happened too often that no one
-else succeeded, and that the tale was left forever without a conclusion.
-Now and again, however, it chanced that even when he erred, the truth
-was still discovered. I have noted of some half-dozen cases of the
-kind; the Adventure of the Musgrave Ritual and that which I am about to
-recount are the two which present the strongest features of interest.]
-
-Sherlock Holmes was a man who seldom took exercise for exercise's sake.
-Few men were capable of greater muscular effort, and he was undoubtedly
-one of the finest boxers of his weight that I have ever seen; but he
-looked upon aimless bodily exertion as a waste of energy, and he seldom
-bestirred himself save when there was some professional object to be
-served. Then he was absolutely untiring and indefatigable. That he
-should have kept himself in training under such circumstances is
-remarkable, but his diet was usually of the sparest, and his habits
-were simple to the verge of austerity. Save for the occasional use of
-cocaine, he had no vices, and he only turned to the drug as a protest
-against the monotony of existence when cases were scanty and the papers
-uninteresting.
-
-One day in early spring he had so far relaxed as to go for a walk with
-me in the Park, where the first faint shoots of green were breaking out
-upon the elms, and the sticky spear-heads of the chestnuts were just
-beginning to burst into their five-fold leaves. For two hours we rambled
-about together, in silence for the most part, as befits two men who know
-each other intimately. It was nearly five before we were back in Baker
-Street once more.
-
-"Beg pardon, sir," said our page-boy, as he opened the door. "There's
-been a gentleman here asking for you, sir."
-
-Holmes glanced reproachfully at me. "So much for afternoon walks!" said
-he. "Has this gentleman gone, then?"
-
-"Yes, sir."
-
-"Didn't you ask him in?"
-
-"Yes, sir; he came in."
-
-"How long did he wait?"
-
-"Half an hour, sir. He was a very restless gentleman, sir, a-walkin'
-and a-stampin' all the time he was here. I was waitin' outside the door,
-sir, and I could hear him. At last he outs into the passage, and he
-cries, 'Is that man never goin' to come?' Those were his very words,
-sir. 'You'll only need to wait a little longer,' says I. 'Then I'll wait
-in the open air, for I feel half choked,' says he. 'I'll be back before
-long.' And with that he ups and he outs, and all I could say wouldn't
-hold him back."
-
-"Well, well, you did your best," said Holmes, as we walked into our
-room. "It's very annoying, though, Watson. I was badly in need of
-a case, and this looks, from the man's impatience, as if it were of
-importance. Hullo! That's not your pipe on the table. He must have
-left his behind him. A nice old brier with a good long stem of what the
-tobacconists call amber. I wonder how many real amber mouthpieces there
-are in London? Some people think that a fly in it is a sign. Well, he
-must have been disturbed in his mind to leave a pipe behind him which he
-evidently values highly."
-
-"How do you know that he values it highly?" I asked.
-
-"Well, I should put the original cost of the pipe at seven and sixpence.
-Now it has, you see, been twice mended, once in the wooden stem and once
-in the amber. Each of these mends, done, as you observe, with silver
-bands, must have cost more than the pipe did originally. The man must
-value the pipe highly when he prefers to patch it up rather than buy a
-new one with the same money."
-
-"Anything else?" I asked, for Holmes was turning the pipe about in his
-hand, and staring at it in his peculiar pensive way.
-
-He held it up and tapped on it with his long, thin fore-finger, as a
-professor might who was lecturing on a bone.
-
-"Pipes are occasionally of extraordinary interest," said he. "Nothing
-has more individuality, save perhaps watches and bootlaces. The
-indications here, however, are neither very marked nor very important.
-The owner is obviously a muscular man, left-handed, with an excellent
-set of teeth, careless in his habits, and with no need to practise
-economy."
-
-My friend threw out the information in a very offhand way, but I saw
-that he cocked his eye at me to see if I had followed his reasoning.
-
-"You think a man must be well-to-do if he smokes a seven-shilling pipe,"
-said I.
-
-"This is Grosvenor mixture at eightpence an ounce," Holmes answered,
-knocking a little out on his palm. "As he might get an excellent smoke
-for half the price, he has no need to practise economy."
-
-"And the other points?"
-
-"He has been in the habit of lighting his pipe at lamps and gas-jets.
-You can see that it is quite charred all down one side. Of course a
-match could not have done that. Why should a man hold a match to the
-side of his pipe? But you cannot light it at a lamp without getting the
-bowl charred. And it is all on the right side of the pipe. From that I
-gather that he is a left-handed man. You hold your own pipe to the lamp,
-and see how naturally you, being right-handed, hold the left side to the
-flame. You might do it once the other way, but not as a constancy. This
-has always been held so. Then he has bitten through his amber. It takes
-a muscular, energetic fellow, and one with a good set of teeth, to do
-that. But if I am not mistaken I hear him upon the stair, so we shall
-have something more interesting than his pipe to study."
-
-An instant later our door opened, and a tall young man entered the room.
-He was well but quietly dressed in a dark-gray suit, and carried a brown
-wide-awake in his hand. I should have put him at about thirty, though he
-was really some years older.
-
-"I beg your pardon," said he, with some embarrassment; "I suppose I
-should have knocked. Yes, of course I should have knocked. The fact
-is that I am a little upset, and you must put it all down to that." He
-passed his hand over his forehead like a man who is half dazed, and then
-fell rather than sat down upon a chair.
-
-"I can see that you have not slept for a night or two," said Holmes,
-in his easy, genial way. "That tries a man's nerves more than work, and
-more even than pleasure. May I ask how I can help you?"
-
-"I wanted your advice, sir. I don't know what to do and my whole life
-seems to have gone to pieces."
-
-"You wish to employ me as a consulting detective?"
-
-"Not that only. I want your opinion as a judicious man--as a man of the
-world. I want to know what I ought to do next. I hope to God you'll be
-able to tell me."
-
-He spoke in little, sharp, jerky outbursts, and it seemed to me that to
-speak at all was very painful to him, and that his will all through was
-overriding his inclinations.
-
-"It's a very delicate thing," said he. "One does not like to speak of
-one's domestic affairs to strangers. It seems dreadful to discuss the
-conduct of one's wife with two men whom I have never seen before. It's
-horrible to have to do it. But I've got to the end of my tether, and I
-must have advice."
-
-"My dear Mr. Grant Munro--" began Holmes.
-
-Our visitor sprang from his chair. "What!" he cried, "you know my name?"
-
-"If you wish to preserve your incognito," said Holmes, smiling, "I would
-suggest that you cease to write your name upon the lining of your
-hat, or else that you turn the crown towards the person whom you are
-addressing. I was about to say that my friend and I have listened to a
-good many strange secrets in this room, and that we have had the good
-fortune to bring peace to many troubled souls. I trust that we may do as
-much for you. Might I beg you, as time may prove to be of importance, to
-furnish me with the facts of your case without further delay?"
-
-Our visitor again passed his hand over his forehead, as if he found it
-bitterly hard. From every gesture and expression I could see that he was
-a reserved, self-contained man, with a dash of pride in his nature, more
-likely to hide his wounds than to expose them. Then suddenly, with a
-fierce gesture of his closed hand, like one who throws reserve to the
-winds, he began.
-
-"The facts are these, Mr. Holmes," said he. "I am a married man, and
-have been so for three years. During that time my wife and I have loved
-each other as fondly and lived as happily as any two that ever were
-joined. We have not had a difference, not one, in thought or word or
-deed. And now, since last Monday, there has suddenly sprung up a barrier
-between us, and I find that there is something in her life and in her
-thought of which I know as little as if she were the woman who brushes
-by me in the street. We are estranged, and I want to know why.
-
-"Now there is one thing that I want to impress upon you before I go
-any further, Mr. Holmes. Effie loves me. Don't let there be any mistake
-about that. She loves me with her whole heart and soul, and never more
-than now. I know it. I feel it. I don't want to argue about that. A man
-can tell easily enough when a woman loves him. But there's this secret
-between us, and we can never be the same until it is cleared."
-
-"Kindly let me have the facts, Mr. Munro," said Holmes, with some
-impatience.
-
-"I'll tell you what I know about Effie's history. She was a widow when
-I met her first, though quite young--only twenty-five. Her name then was
-Mrs. Hebron. She went out to America when she was young, and lived in
-the town of Atlanta, where she married this Hebron, who was a lawyer
-with a good practice. They had one child, but the yellow fever broke out
-badly in the place, and both husband and child died of it. I have seen
-his death certificate. This sickened her of America, and she came back
-to live with a maiden aunt at Pinner, in Middlesex. I may mention that
-her husband had left her comfortably off, and that she had a capital of
-about four thousand five hundred pounds, which had been so well invested
-by him that it returned an average of seven per cent. She had only been
-six months at Pinner when I met her; we fell in love with each other,
-and we married a few weeks afterwards.
-
-"I am a hop merchant myself, and as I have an income of seven or
-eight hundred, we found ourselves comfortably off, and took a nice
-eighty-pound-a-year villa at Norbury. Our little place was very
-countrified, considering that it is so close to town. We had an inn and
-two houses a little above us, and a single cottage at the other side of
-the field which faces us, and except those there were no houses until
-you got half way to the station. My business took me into town at
-certain seasons, but in summer I had less to do, and then in our country
-home my wife and I were just as happy as could be wished. I tell you
-that there never was a shadow between us until this accursed affair
-began.
-
-"There's one thing I ought to tell you before I go further. When we
-married, my wife made over all her property to me--rather against my
-will, for I saw how awkward it would be if my business affairs went
-wrong. However, she would have it so, and it was done. Well, about six
-weeks ago she came to me.
-
-"'Jack,' said she, 'when you took my money you said that if ever I
-wanted any I was to ask you for it.'
-
-"'Certainly,' said I. 'It's all your own.'
-
-"'Well,' said she, 'I want a hundred pounds.'
-
-"I was a bit staggered at this, for I had imagined it was simply a new
-dress or something of the kind that she was after.
-
-"'What on earth for?' I asked.
-
-"'Oh,' said she, in her playful way, 'you said that you were only my
-banker, and bankers never ask questions, you know.'
-
-"'If you really mean it, of course you shall have the money,' said I.
-
-"'Oh, yes, I really mean it.'
-
-"'And you won't tell me what you want it for?'
-
-"'Some day, perhaps, but not just at present, Jack.'
-
-"So I had to be content with that, though it was the first time that
-there had ever been any secret between us. I gave her a check, and I
-never thought any more of the matter. It may have nothing to do with
-what came afterwards, but I thought it only right to mention it.
-
-"Well, I told you just now that there is a cottage not far from our
-house. There is just a field between us, but to reach it you have to
-go along the road and then turn down a lane. Just beyond it is a nice
-little grove of Scotch firs, and I used to be very fond of strolling
-down there, for trees are always a neighborly kind of things. The
-cottage had been standing empty this eight months, and it was a pity,
-for it was a pretty two-storied place, with an old-fashioned porch and
-honeysuckle about it. I have stood many a time and thought what a neat
-little homestead it would make.
-
-"Well, last Monday evening I was taking a stroll down that way, when
-I met an empty van coming up the lane, and saw a pile of carpets and
-things lying about on the grass-plot beside the porch. It was clear that
-the cottage had at last been let. I walked past it, and wondered what
-sort of folk they were who had come to live so near us. And as I looked
-I suddenly became aware that a face was watching me out of one of the
-upper windows.
-
-"I don't know what there was about that face, Mr. Holmes, but it seemed
-to send a chill right down my back. I was some little way off, so that
-I could not make out the features, but there was something unnatural and
-inhuman about the face. That was the impression that I had, and I moved
-quickly forwards to get a nearer view of the person who was watching
-me. But as I did so the face suddenly disappeared, so suddenly that it
-seemed to have been plucked away into the darkness of the room. I stood
-for five minutes thinking the business over, and trying to analyze my
-impressions. I could not tell if the face were that of a man or a
-woman. It had been too far from me for that. But its color was what had
-impressed me most. It was of a livid chalky white, and with something
-set and rigid about it which was shockingly unnatural. So disturbed
-was I that I determined to see a little more of the new inmates of
-the cottage. I approached and knocked at the door, which was instantly
-opened by a tall, gaunt woman with a harsh, forbidding face.
-
-"'What may you be wantin'?' she asked, in a Northern accent.
-
-"'I am your neighbor over yonder,' said I, nodding towards my house. 'I
-see that you have only just moved in, so I thought that if I could be of
-any help to you in any--'
-
-"'Ay, we'll just ask ye when we want ye,' said she, and shut the door
-in my face. Annoyed at the churlish rebuff, I turned my back and walked
-home. All evening, though I tried to think of other things, my mind
-would still turn to the apparition at the window and the rudeness of the
-woman. I determined to say nothing about the former to my wife, for
-she is a nervous, highly strung woman, and I had no wish that she would
-share the unpleasant impression which had been produced upon myself. I
-remarked to her, however, before I fell asleep, that the cottage was now
-occupied, to which she returned no reply.
-
-"I am usually an extremely sound sleeper. It has been a standing jest
-in the family that nothing could ever wake me during the night. And yet
-somehow on that particular night, whether it may have been the slight
-excitement produced by my little adventure or not I know not, but
-I slept much more lightly than usual. Half in my dreams I was dimly
-conscious that something was going on in the room, and gradually became
-aware that my wife had dressed herself and was slipping on her mantle
-and her bonnet. My lips were parted to murmur out some sleepy words of
-surprise or remonstrance at this untimely preparation, when suddenly my
-half-opened eyes fell upon her face, illuminated by the candle-light,
-and astonishment held me dumb. She wore an expression such as I had
-never seen before--such as I should have thought her incapable of
-assuming. She was deadly pale and breathing fast, glancing furtively
-towards the bed as she fastened her mantle, to see if she had disturbed
-me. Then, thinking that I was still asleep, she slipped noiselessly from
-the room, and an instant later I heard a sharp creaking which could only
-come from the hinges of the front door. I sat up in bed and rapped my
-knuckles against the rail to make certain that I was truly awake. Then
-I took my watch from under the pillow. It was three in the morning. What
-on this earth could my wife be doing out on the country road at three in
-the morning?
-
-"I had sat for about twenty minutes turning the thing over in my mind
-and trying to find some possible explanation. The more I thought, the
-more extraordinary and inexplicable did it appear. I was still puzzling
-over it when I heard the door gently close again, and her footsteps
-coming up the stairs.
-
-"'Where in the world have you been, Effie?' I asked as she entered.
-
-"She gave a violent start and a kind of gasping cry when I spoke, and
-that cry and start troubled me more than all the rest, for there was
-something indescribably guilty about them. My wife had always been
-a woman of a frank, open nature, and it gave me a chill to see her
-slinking into her own room, and crying out and wincing when her own
-husband spoke to her.
-
-"'You awake, Jack!' she cried, with a nervous laugh. 'Why, I thought
-that nothing could awake you.'
-
-"'Where have you been?' I asked, more sternly.
-
-"'I don't wonder that you are surprised,' said she, and I could see that
-her fingers were trembling as she undid the fastenings of her mantle.
-'Why, I never remember having done such a thing in my life before. The
-fact is that I felt as though I were choking, and had a perfect longing
-for a breath of fresh air. I really think that I should have fainted if
-I had not gone out. I stood at the door for a few minutes, and now I am
-quite myself again.'
-
-"All the time that she was telling me this story she never once looked
-in my direction, and her voice was quite unlike her usual tones. It
-was evident to me that she was saying what was false. I said nothing
-in reply, but turned my face to the wall, sick at heart, with my mind
-filled with a thousand venomous doubts and suspicions. What was it that
-my wife was concealing from me? Where had she been during that strange
-expedition? I felt that I should have no peace until I knew, and yet I
-shrank from asking her again after once she had told me what was false.
-All the rest of the night I tossed and tumbled, framing theory after
-theory, each more unlikely than the last.
-
-"I should have gone to the City that day, but I was too disturbed in my
-mind to be able to pay attention to business matters. My wife seemed
-to be as upset as myself, and I could see from the little questioning
-glances which she kept shooting at me that she understood that I
-disbelieved her statement, and that she was at her wits' end what to do.
-We hardly exchanged a word during breakfast, and immediately afterwards
-I went out for a walk, that I might think the matter out in the fresh
-morning air.
-
-"I went as far as the Crystal Palace, spent an hour in the grounds, and
-was back in Norbury by one o'clock. It happened that my way took me past
-the cottage, and I stopped for an instant to look at the windows, and to
-see if I could catch a glimpse of the strange face which had looked
-out at me on the day before. As I stood there, imagine my surprise, Mr.
-Holmes, when the door suddenly opened and my wife walked out.
-
-"I was struck dumb with astonishment at the sight of her; but my
-emotions were nothing to those which showed themselves upon her face
-when our eyes met. She seemed for an instant to wish to shrink back
-inside the house again; and then, seeing how useless all concealment
-must be, she came forward, with a very white face and frightened eyes
-which belied the smile upon her lips.
-
-"'Ah, Jack,' she said, 'I have just been in to see if I can be of any
-assistance to our new neighbors. Why do you look at me like that, Jack?
-You are not angry with me?'
-
-"'So,' said I, 'this is where you went during the night.'
-
-"'What do you mean?' she cried.
-
-"'You came here. I am sure of it. Who are these people, that you should
-visit them at such an hour?'
-
-"'I have not been here before.'
-
-"'How can you tell me what you know is false?' I cried. 'Your very voice
-changes as you speak. When have I ever had a secret from you? I shall
-enter that cottage, and I shall probe the matter to the bottom.'
-
-"'No, no, Jack, for God's sake!' she gasped, in uncontrollable emotion.
-Then, as I approached the door, she seized my sleeve and pulled me back
-with convulsive strength.
-
-"'I implore you not to do this, Jack,' she cried. 'I swear that I will
-tell you everything some day, but nothing but misery can come of it if
-you enter that cottage.' Then, as I tried to shake her off, she clung to
-me in a frenzy of entreaty.
-
-"'Trust me, Jack!' she cried. 'Trust me only this once. You will never
-have cause to regret it. You know that I would not have a secret from
-you if it were not for your own sake. Our whole lives are at stake in
-this. If you come home with me, all will be well. If you force your way
-into that cottage, all is over between us.'
-
-"There was such earnestness, such despair, in her manner that her words
-arrested me, and I stood irresolute before the door.
-
-"'I will trust you on one condition, and on one condition only,' said I
-at last. 'It is that this mystery comes to an end from now. You are
-at liberty to preserve your secret, but you must promise me that there
-shall be no more nightly visits, no more doings which are kept from my
-knowledge. I am willing to forget those which are passed if you will
-promise that there shall be no more in the future.'
-
-"'I was sure that you would trust me,' she cried, with a great sigh of
-relief. 'It shall be just as you wish. Come away--oh, come away up to
-the house.'
-
-"Still pulling at my sleeve, she led me away from the cottage. As we
-went I glanced back, and there was that yellow livid face watching us
-out of the upper window. What link could there be between that creature
-and my wife? Or how could the coarse, rough woman whom I had seen the
-day before be connected with her? It was a strange puzzle, and yet I
-knew that my mind could never know ease again until I had solved it.
-
-"For two days after this I stayed at home, and my wife appeared to abide
-loyally by our engagement, for, as far as I know, she never stirred out
-of the house. On the third day, however, I had ample evidence that
-her solemn promise was not enough to hold her back from this secret
-influence which drew her away from her husband and her duty.
-
-"I had gone into town on that day, but I returned by the 2.40 instead of
-the 3.36, which is my usual train. As I entered the house the maid ran
-into the hall with a startled face.
-
-"'Where is your mistress?' I asked.
-
-"'I think that she has gone out for a walk,' she answered.
-
-"My mind was instantly filled with suspicion. I rushed upstairs to make
-sure that she was not in the house. As I did so I happened to glance out
-of one of the upper windows, and saw the maid with whom I had just been
-speaking running across the field in the direction of the cottage. Then
-of course I saw exactly what it all meant. My wife had gone over there,
-and had asked the servant to call her if I should return. Tingling with
-anger, I rushed down and hurried across, determined to end the matter
-once and forever. I saw my wife and the maid hurrying back along the
-lane, but I did not stop to speak with them. In the cottage lay the
-secret which was casting a shadow over my life. I vowed that, come what
-might, it should be a secret no longer. I did not even knock when I
-reached it, but turned the handle and rushed into the passage.
-
-"It was all still and quiet upon the ground floor. In the kitchen a
-kettle was singing on the fire, and a large black cat lay coiled up in
-the basket; but there was no sign of the woman whom I had seen before.
-I ran into the other room, but it was equally deserted. Then I rushed up
-the stairs, only to find two other rooms empty and deserted at the top.
-There was no one at all in the whole house. The furniture and pictures
-were of the most common and vulgar description, save in the one chamber
-at the window of which I had seen the strange face. That was comfortable
-and elegant, and all my suspicions rose into a fierce bitter flame when
-I saw that on the mantelpiece stood a copy of a full-length photograph
-of my wife, which had been taken at my request only three months ago.
-
-"I stayed long enough to make certain that the house was absolutely
-empty. Then I left it, feeling a weight at my heart such as I had never
-had before. My wife came out into the hall as I entered my house; but I
-was too hurt and angry to speak with her, and pushing past her, I made
-my way into my study. She followed me, however, before I could close the
-door.
-
-"'I am sorry that I broke my promise, Jack,' said she; 'but if you knew
-all the circumstances I am sure that you would forgive me.'
-
-"'Tell me everything, then,' said I.
-
-"'I cannot, Jack, I cannot,' she cried.
-
-"'Until you tell me who it is that has been living in that cottage, and
-who it is to whom you have given that photograph, there can never be any
-confidence between us,' said I, and breaking away from her, I left the
-house. That was yesterday, Mr. Holmes, and I have not seen her since,
-nor do I know anything more about this strange business. It is the first
-shadow that has come between us, and it has so shaken me that I do not
-know what I should do for the best. Suddenly this morning it occurred to
-me that you were the man to advise me, so I have hurried to you now, and
-I place myself unreservedly in your hands. If there is any point which I
-have not made clear, pray question me about it. But, above all, tell me
-quickly what I am to do, for this misery is more than I can bear."
-
-Holmes and I had listened with the utmost interest to this extraordinary
-statement, which had been delivered in the jerky, broken fashion of a
-man who is under the influence of extreme emotions. My companion sat
-silent for some time, with his chin upon his hand, lost in thought.
-
-"Tell me," said he at last, "could you swear that this was a man's face
-which you saw at the window?"
-
-"Each time that I saw it I was some distance away from it, so that it is
-impossible for me to say."
-
-"You appear, however, to have been disagreeably impressed by it."
-
-"It seemed to be of an unnatural color, and to have a strange rigidity
-about the features. When I approached, it vanished with a jerk."
-
-"How long is it since your wife asked you for a hundred pounds?"
-
-"Nearly two months."
-
-"Have you ever seen a photograph of her first husband?"
-
-"No; there was a great fire at Atlanta very shortly after his death, and
-all her papers were destroyed."
-
-"And yet she had a certificate of death. You say that you saw it."
-
-"Yes; she got a duplicate after the fire."
-
-"Did you ever meet any one who knew her in America?"
-
-"No."
-
-"Did she ever talk of revisiting the place?"
-
-"No."
-
-"Or get letters from it?"
-
-"No."
-
-"Thank you. I should like to think over the matter a little now. If the
-cottage is now permanently deserted we may have some difficulty. If, on
-the other hand, as I fancy is more likely, the inmates were warned of
-your coming, and left before you entered yesterday, then they may be
-back now, and we should clear it all up easily. Let me advise you, then,
-to return to Norbury, and to examine the windows of the cottage again.
-If you have reason to believe that it is inhabited, do not force your
-way in, but send a wire to my friend and me. We shall be with you within
-an hour of receiving it, and we shall then very soon get to the bottom
-of the business."
-
-"And if it is still empty?"
-
-"In that case I shall come out to-morrow and talk it over with you.
-Good-by; and, above all, do not fret until you know that you really have
-a cause for it."
-
-"I am afraid that this is a bad business, Watson," said my companion, as
-he returned after accompanying Mr. Grant Munro to the door. "What do you
-make of it?"
-
-"It had an ugly sound," I answered.
-
-"Yes. There's blackmail in it, or I am much mistaken."
-
-"And who is the blackmailer?"
-
-"Well, it must be the creature who lives in the only comfortable room
-in the place, and has her photograph above his fireplace. Upon my word,
-Watson, there is something very attractive about that livid face at the
-window, and I would not have missed the case for worlds."
-
-"You have a theory?"
-
-"Yes, a provisional one. But I shall be surprised if it does not turn
-out to be correct. This woman's first husband is in that cottage."
-
-"Why do you think so?"
-
-"How else can we explain her frenzied anxiety that her second one should
-not enter it? The facts, as I read them, are something like this:
-This woman was married in America. Her husband developed some hateful
-qualities; or shall we say that he contracted some loathsome disease,
-and became a leper or an imbecile? She flies from him at last, returns
-to England, changes her name, and starts her life, as she thinks,
-afresh. She has been married three years, and believes that her position
-is quite secure, having shown her husband the death certificate of
-some man whose name she has assumed, when suddenly her whereabouts
-is discovered by her first husband; or, we may suppose, by some
-unscrupulous woman who has attached herself to the invalid. They write
-to the wife, and threaten to come and expose her. She asks for a hundred
-pounds, and endeavors to buy them off. They come in spite of it, and
-when the husband mentions casually to the wife that there are new-comers
-in the cottage, she knows in some way that they are her pursuers. She
-waits until her husband is asleep, and then she rushes down to endeavor
-to persuade them to leave her in peace. Having no success, she goes
-again next morning, and her husband meets her, as he has told us, as
-she comes out. She promises him then not to go there again, but two days
-afterwards the hope of getting rid of those dreadful neighbors was too
-strong for her, and she made another attempt, taking down with her the
-photograph which had probably been demanded from her. In the midst of
-this interview the maid rushed in to say that the master had come home,
-on which the wife, knowing that he would come straight down to the
-cottage, hurried the inmates out at the back door, into the grove of
-fir-trees, probably, which was mentioned as standing near. In this way
-he found the place deserted. I shall be very much surprised, however, if
-it is still so when he reconnoitres it this evening. What do you think
-of my theory?"
-
-"It is all surmise."
-
-"But at least it covers all the facts. When new facts come to our
-knowledge which cannot be covered by it, it will be time enough to
-reconsider it. We can do nothing more until we have a message from our
-friend at Norbury."
-
-But we had not a very long time to wait for that. It came just as we had
-finished our tea. "The cottage is still tenanted," it said. "Have seen
-the face again at the window. Will meet the seven o'clock train, and
-will take no steps until you arrive."
-
-
-He was waiting on the platform when we stepped out, and we could see in
-the light of the station lamps that he was very pale, and quivering with
-agitation.
-
-"They are still there, Mr. Holmes," said he, laying his hand hard upon
-my friend's sleeve. "I saw lights in the cottage as I came down. We
-shall settle it now once and for all."
-
-"What is your plan, then?" asked Holmes, as he walked down the dark
-tree-lined road.
-
-"I am going to force my way in and see for myself who is in the house. I
-wish you both to be there as witnesses."
-
-"You are quite determined to do this, in spite of your wife's warning
-that it is better that you should not solve the mystery?"
-
-"Yes, I am determined."
-
-"Well, I think that you are in the right. Any truth is better than
-indefinite doubt. We had better go up at once. Of course, legally, we
-are putting ourselves hopelessly in the wrong; but I think that it is
-worth it."
-
-It was a very dark night, and a thin rain began to fall as we turned
-from the high road into a narrow lane, deeply rutted, with hedges on
-either side. Mr. Grant Munro pushed impatiently forward, however, and we
-stumbled after him as best we could.
-
-"There are the lights of my house," he murmured, pointing to a glimmer
-among the trees. "And here is the cottage which I am going to enter."
-
-We turned a corner in the lane as he spoke, and there was the building
-close beside us. A yellow bar falling across the black foreground showed
-that the door was not quite closed, and one window in the upper story
-was brightly illuminated. As we looked, we saw a dark blur moving across
-the blind.
-
-"There is that creature!" cried Grant Munro. "You can see for yourselves
-that some one is there. Now follow me, and we shall soon know all."
-
-We approached the door; but suddenly a woman appeared out of the shadow
-and stood in the golden track of the lamp-light. I could not see her
-face in the darkness, but her arms were thrown out in an attitude of
-entreaty.
-
-"For God's sake, don't Jack!" she cried. "I had a presentiment that you
-would come this evening. Think better of it, dear! Trust me again, and
-you will never have cause to regret it."
-
-"I have trusted you too long, Effie," he cried, sternly. "Leave go of
-me! I must pass you. My friends and I are going to settle this matter
-once and forever!" He pushed her to one side, and we followed closely
-after him. As he threw the door open an old woman ran out in front of
-him and tried to bar his passage, but he thrust her back, and an instant
-afterwards we were all upon the stairs. Grant Munro rushed into the
-lighted room at the top, and we entered at his heels.
-
-It was a cosey, well-furnished apartment, with two candles burning upon
-the table and two upon the mantelpiece. In the corner, stooping over a
-desk, there sat what appeared to be a little girl. Her face was turned
-away as we entered, but we could see that she was dressed in a red
-frock, and that she had long white gloves on. As she whisked round
-to us, I gave a cry of surprise and horror. The face which she turned
-towards us was of the strangest livid tint, and the features were
-absolutely devoid of any expression. An instant later the mystery was
-explained. Holmes, with a laugh, passed his hand behind the child's
-ear, a mask peeled off from her countenance, and there was a little coal
-black negress, with all her white teeth flashing in amusement at our
-amazed faces. I burst out laughing, out of sympathy with her merriment;
-but Grant Munro stood staring, with his hand clutching his throat.
-
-"My God!" he cried. "What can be the meaning of this?"
-
-"I will tell you the meaning of it," cried the lady, sweeping into
-the room with a proud, set face. "You have forced me, against my own
-judgment, to tell you, and now we must both make the best of it. My
-husband died at Atlanta. My child survived."
-
-"Your child?"
-
-She drew a large silver locket from her bosom. "You have never seen this
-open."
-
-"I understood that it did not open."
-
-She touched a spring, and the front hinged back. There was a portrait
-within of a man strikingly handsome and intelligent-looking, but bearing
-unmistakable signs upon his features of his African descent.
-
-"That is John Hebron, of Atlanta," said the lady, "and a nobler man
-never walked the earth. I cut myself off from my race in order to wed
-him, but never once while he lived did I for an instant regret it. It
-was our misfortune that our only child took after his people rather than
-mine. It is often so in such matches, and little Lucy is darker far than
-ever her father was. But dark or fair, she is my own dear little girlie,
-and her mother's pet." The little creature ran across at the words and
-nestled up against the lady's dress. "When I left her in America," she
-continued, "it was only because her health was weak, and the change
-might have done her harm. She was given to the care of a faithful Scotch
-woman who had once been our servant. Never for an instant did I dream
-of disowning her as my child. But when chance threw you in my way, Jack,
-and I learned to love you, I feared to tell you about my child. God
-forgive me, I feared that I should lose you, and I had not the courage
-to tell you. I had to choose between you, and in my weakness I turned
-away from my own little girl. For three years I have kept her existence
-a secret from you, but I heard from the nurse, and I knew that all was
-well with her. At last, however, there came an overwhelming desire to
-see the child once more. I struggled against it, but in vain. Though I
-knew the danger, I determined to have the child over, if it were but
-for a few weeks. I sent a hundred pounds to the nurse, and I gave her
-instructions about this cottage, so that she might come as a neighbor,
-without my appearing to be in any way connected with her. I pushed my
-precautions so far as to order her to keep the child in the house during
-the daytime, and to cover up her little face and hands so that even
-those who might see her at the window should not gossip about there
-being a black child in the neighborhood. If I had been less cautious
-I might have been more wise, but I was half crazy with fear that you
-should learn the truth.
-
-"It was you who told me first that the cottage was occupied. I should
-have waited for the morning, but I could not sleep for excitement, and
-so at last I slipped out, knowing how difficult it is to awake you. But
-you saw me go, and that was the beginning of my troubles. Next day you
-had my secret at your mercy, but you nobly refrained from pursuing your
-advantage. Three days later, however, the nurse and child only just
-escaped from the back door as you rushed in at the front one. And now
-to-night you at last know all, and I ask you what is to become of us, my
-child and me?" She clasped her hands and waited for an answer.
-
-It was a long ten minutes before Grant Munro broke the silence, and
-when his answer came it was one of which I love to think. He lifted
-the little child, kissed her, and then, still carrying her, he held his
-other hand out to his wife and turned towards the door.
-
-"We can talk it over more comfortably at home," said he. "I am not a
-very good man, Effie, but I think that I am a better one than you have
-given me credit for being."
-
-Holmes and I followed them down the lane, and my friend plucked at my
-sleeve as we came out.
-
-"I think," said he, "that we shall be of more use in London than in
-Norbury."
-
-Not another word did he say of the case until late that night, when he
-was turning away, with his lighted candle, for his bedroom.
-
-"Watson," said he, "if it should ever strike you that I am getting a
-little over-confident in my powers, or giving less pains to a case
-than it deserves, kindly whisper 'Norbury' in my ear, and I shall be
-infinitely obliged to you."
-
-
-
-
-Adventure III. The Stock-Broker's Clerk
-
-
-Shortly after my marriage I had bought a connection in the Paddington
-district. Old Mr. Farquhar, from whom I purchased it, had at one time an
-excellent general practice; but his age, and an affliction of the nature
-of St. Vitus's dance from which he suffered, had very much thinned it.
-The public not unnaturally goes on the principle that he who would heal
-others must himself be whole, and looks askance at the curative powers
-of the man whose own case is beyond the reach of his drugs. Thus as my
-predecessor weakened his practice declined, until when I purchased
-it from him it had sunk from twelve hundred to little more than three
-hundred a year. I had confidence, however, in my own youth and energy,
-and was convinced that in a very few years the concern would be as
-flourishing as ever.
-
-For three months after taking over the practice I was kept very closely
-at work, and saw little of my friend Sherlock Holmes, for I was too busy
-to visit Baker Street, and he seldom went anywhere himself save upon
-professional business. I was surprised, therefore, when, one morning in
-June, as I sat reading the British Medical Journal after breakfast, I
-heard a ring at the bell, followed by the high, somewhat strident tones
-of my old companion's voice.
-
-"Ah, my dear Watson," said he, striding into the room, "I am very
-delighted to see you! I trust that Mrs. Watson has entirely recovered
-from all the little excitements connected with our adventure of the Sign
-of Four."
-
-"Thank you, we are both very well," said I, shaking him warmly by the
-hand.
-
-"And I hope, also," he continued, sitting down in the rocking-chair,
-"that the cares of medical practice have not entirely obliterated the
-interest which you used to take in our little deductive problems."
-
-"On the contrary," I answered, "it was only last night that I was
-looking over my old notes, and classifying some of our past results."
-
-"I trust that you don't consider your collection closed."
-
-"Not at all. I should wish nothing better than to have some more of such
-experiences."
-
-"To-day, for example?"
-
-"Yes, to-day, if you like."
-
-"And as far off as Birmingham?"
-
-"Certainly, if you wish it."
-
-"And the practice?"
-
-"I do my neighbor's when he goes. He is always ready to work off the
-debt."
-
-"Ha! Nothing could be better," said Holmes, leaning back in his chair
-and looking keenly at me from under his half closed lids. "I perceive
-that you have been unwell lately. Summer colds are always a little
-trying."
-
-"I was confined to the house by a severe chill for three days last week.
-I thought, however, that I had cast off every trace of it."
-
-"So you have. You look remarkably robust."
-
-"How, then, did you know of it?"
-
-"My dear fellow, you know my methods."
-
-"You deduced it, then?"
-
-"Certainly."
-
-"And from what?"
-
-"From your slippers."
-
-I glanced down at the new patent leathers which I was wearing. "How on
-earth--" I began, but Holmes answered my question before it was asked.
-
-"Your slippers are new," he said. "You could not have had them more than
-a few weeks. The soles which you are at this moment presenting to me are
-slightly scorched. For a moment I thought they might have got wet and
-been burned in the drying. But near the instep there is a small circular
-wafer of paper with the shopman's hieroglyphics upon it. Damp would of
-course have removed this. You had, then, been sitting with your feet
-outstretched to the fire, which a man would hardly do even in so wet a
-June as this if he were in his full health."
-
-Like all Holmes's reasoning the thing seemed simplicity itself when it
-was once explained. He read the thought upon my features, and his smile
-had a tinge of bitterness.
-
-"I am afraid that I rather give myself away when I explain," said he.
-"Results without causes are much more impressive. You are ready to come
-to Birmingham, then?"
-
-"Certainly. What is the case?"
-
-"You shall hear it all in the train. My client is outside in a
-four-wheeler. Can you come at once?"
-
-"In an instant." I scribbled a note to my neighbor, rushed upstairs to
-explain the matter to my wife, and joined Holmes upon the door-step.
-
-"Your neighbor is a doctor," said he, nodding at the brass plate.
-
-"Yes; he bought a practice as I did."
-
-"An old-established one?"
-
-"Just the same as mine. Both have been ever since the houses were
-built."
-
-"Ah! Then you got hold of the best of the two."
-
-"I think I did. But how do you know?"
-
-"By the steps, my boy. Yours are worn three inches deeper than his. But
-this gentleman in the cab is my client, Mr. Hall Pycroft. Allow me to
-introduce you to him. Whip your horse up, cabby, for we have only just
-time to catch our train."
-
-The man whom I found myself facing was a well built, fresh-complexioned
-young fellow, with a frank, honest face and a slight, crisp, yellow
-mustache. He wore a very shiny top hat and a neat suit of sober black,
-which made him look what he was--a smart young City man, of the class
-who have been labeled cockneys, but who give us our crack volunteer
-regiments, and who turn out more fine athletes and sportsmen than any
-body of men in these islands. His round, ruddy face was naturally full
-of cheeriness, but the corners of his mouth seemed to me to be pulled
-down in a half-comical distress. It was not, however, until we were
-all in a first-class carriage and well started upon our journey to
-Birmingham that I was able to learn what the trouble was which had
-driven him to Sherlock Holmes.
-
-"We have a clear run here of seventy minutes," Holmes remarked. "I
-want you, Mr. Hall Pycroft, to tell my friend your very interesting
-experience exactly as you have told it to me, or with more detail if
-possible. It will be of use to me to hear the succession of events
-again. It is a case, Watson, which may prove to have something in it, or
-may prove to have nothing, but which, at least, presents those unusual
-and outré features which are as dear to you as they are to me. Now, Mr.
-Pycroft, I shall not interrupt you again."
-
-Our young companion looked at me with a twinkle in his eye.
-
-"The worst of the story is," said he, "that I show myself up as such a
-confounded fool. Of course it may work out all right, and I don't see
-that I could have done otherwise; but if I have lost my crib and get
-nothing in exchange I shall feel what a soft Johnnie I have been. I'm
-not very good at telling a story, Dr. Watson, but it is like this with
-me:
-
-"I used to have a billet at Coxon & Woodhouse's, of Draper's Gardens,
-but they were let in early in the spring through the Venezuelan loan,
-as no doubt you remember, and came a nasty cropper. I had been with them
-five years, and old Coxon gave me a ripping good testimonial when
-the smash came, but of course we clerks were all turned adrift, the
-twenty-seven of us. I tried here and tried there, but there were lots of
-other chaps on the same lay as myself, and it was a perfect frost for a
-long time. I had been taking three pounds a week at Coxon's, and I had
-saved about seventy of them, but I soon worked my way through that and
-out at the other end. I was fairly at the end of my tether at last,
-and could hardly find the stamps to answer the advertisements or the
-envelopes to stick them to. I had worn out my boots paddling up office
-stairs, and I seemed just as far from getting a billet as ever.
-
-"At last I saw a vacancy at Mawson & Williams's, the great stock-broking
-firm in Lombard Street. I dare say E. C. Is not much in your line, but
-I can tell you that this is about the richest house in London.
-The advertisement was to be answered by letter only. I sent in my
-testimonial and application, but without the least hope of getting it.
-Back came an answer by return, saying that if I would appear next Monday
-I might take over my new duties at once, provided that my appearance was
-satisfactory. No one knows how these things are worked. Some people say
-that the manager just plunges his hand into the heap and takes the first
-that comes. Anyhow it was my innings that time, and I don't ever wish to
-feel better pleased. The screw was a pound a week rise, and the duties
-just about the same as at Coxon's.
-
-"And now I come to the queer part of the business. I was in diggings out
-Hampstead way, 17 Potter's Terrace. Well, I was sitting doing a smoke
-that very evening after I had been promised the appointment, when up
-came my landlady with a card which had 'Arthur Pinner, Financial Agent,'
-printed upon it. I had never heard the name before and could not imagine
-what he wanted with me; but, of course, I asked her to show him up. In
-he walked, a middle-sized, dark-haired, dark-eyed, black-bearded man,
-with a touch of the Sheeny about his nose. He had a brisk kind of way
-with him and spoke sharply, like a man who knew the value of time."
-
-"'Mr. Hall Pycroft, I believe?'" said he.
-
-"'Yes, sir,' I answered, pushing a chair towards him.
-
-"'Lately engaged at Coxon & Woodhouse's?'
-
-"'Yes, sir.'
-
-"'And now on the staff of Mawson's.'
-
-"'Quite so.'
-
-"'Well,' said he, 'the fact is that I have heard some really
-extraordinary stories about your financial ability. You remember Parker,
-who used to be Coxon's manager? He can never say enough about it.'
-
-"Of course I was pleased to hear this. I had always been pretty sharp in
-the office, but I had never dreamed that I was talked about in the City
-in this fashion.
-
-"'You have a good memory?' said he.
-
-"'Pretty fair,' I answered, modestly.
-
-"'Have you kept in touch with the market while you have been out of
-work?' he asked.
-
-"'Yes. I read the stock exchange list every morning.'
-
-"'Now that shows real application!' he cried. 'That is the way to
-prosper! You won't mind my testing you, will you? Let me see. How are
-Ayrshires?'
-
-"'A hundred and six and a quarter to a hundred and five and
-seven-eighths.'
-
-"'And New Zealand consolidated?'
-
-"'A hundred and four.
-
-"'And British Broken Hills?'
-
-"'Seven to seven-and-six.'
-
-"'Wonderful!' he cried, with his hands up. 'This quite fits in with all
-that I had heard. My boy, my boy, you are very much too good to be a
-clerk at Mawson's!'
-
-"This outburst rather astonished me, as you can think. 'Well,' said I,
-'other people don't think quite so much of me as you seem to do, Mr.
-Pinner. I had a hard enough fight to get this berth, and I am very glad
-to have it.'
-
-"'Pooh, man; you should soar above it. You are not in your true sphere.
-Now, I'll tell you how it stands with me. What I have to offer is little
-enough when measured by your ability, but when compared with Mawson's,
-it's light to dark. Let me see. When do you go to Mawson's?'
-
-"'On Monday.'
-
-"'Ha, ha! I think I would risk a little sporting flutter that you don't
-go there at all.'
-
-"'Not go to Mawson's?'
-
-"'No, sir. By that day you will be the business manager of the
-Franco-Midland Hardware Company, Limited, with a hundred and thirty-four
-branches in the towns and villages of France, not counting one in
-Brussels and one in San Remo.'
-
-"This took my breath away. 'I never heard of it,' said I.
-
-"'Very likely not. It has been kept very quiet, for the capital was all
-privately subscribed, and it's too good a thing to let the public
-into. My brother, Harry Pinner, is promoter, and joins the board after
-allotment as managing director. He knew I was in the swim down here, and
-asked me to pick up a good man cheap. A young, pushing man with plenty
-of snap about him. Parker spoke of you, and that brought me here
-to-night. We can only offer you a beggarly five hundred to start with.'
-
-"'Five hundred a year!' I shouted.
-
-"'Only that at the beginning; but you are to have an overriding
-commission of one per cent on all business done by your agents, and you
-may take my word for it that this will come to more than your salary.'
-
-"'But I know nothing about hardware.'
-
-"'Tut, my boy; you know about figures.'
-
-"My head buzzed, and I could hardly sit still in my chair. But suddenly
-a little chill of doubt came upon me.
-
-"'I must be frank with you,' said I. 'Mawson only gives me two hundred,
-but Mawson is safe. Now, really, I know so little about your company
-that--'
-
-"'Ah, smart, smart!' he cried, in a kind of ecstasy of delight. 'You
-are the very man for us. You are not to be talked over, and quite right,
-too. Now, here's a note for a hundred pounds, and if you think that we
-can do business you may just slip it into your pocket as an advance upon
-your salary.'
-
-"'That is very handsome,' said I. 'When should I take over my new
-duties?'
-
-"'Be in Birmingham to-morrow at one,' said he. 'I have a note in my
-pocket here which you will take to my brother. You will find him at
-126b Corporation Street, where the temporary offices of the company
-are situated. Of course he must confirm your engagement, but between
-ourselves it will be all right.'
-
-"'Really, I hardly know how to express my gratitude, Mr. Pinner,' said
-I.
-
-"'Not at all, my boy. You have only got your deserts. There are one or
-two small things--mere formalities--which I must arrange with you.
-You have a bit of paper beside you there. Kindly write upon it "I am
-perfectly willing to act as business manager to the Franco-Midland
-Hardware Company, Limited, at a minimum salary of L500."'
-
-"I did as he asked, and he put the paper in his pocket.
-
-"'There is one other detail,' said he. 'What do you intend to do about
-Mawson's?'
-
-"I had forgotten all about Mawson's in my joy. 'I'll write and resign,'
-said I.
-
-"'Precisely what I don't want you to do. I had a row over you with
-Mawson's manager. I had gone up to ask him about you, and he was very
-offensive; accused me of coaxing you away from the service of the firm,
-and that sort of thing. At last I fairly lost my temper. "If you want
-good men you should pay them a good price," said I.'
-
-"'He would rather have our small price than your big one,' said he.
-
-"'I'll lay you a fiver,' said I, 'that when he has my offer you'll never
-so much as hear from him again.'
-
-"'Done!' said he. 'We picked him out of the gutter, and he won't leave
-us so easily.' Those were his very words."
-
-"'The impudent scoundrel!' I cried. 'I've never so much as seen him in
-my life. Why should I consider him in any way? I shall certainly not
-write if you would rather I didn't.'
-
-"'Good! That's a promise,' said he, rising from his chair. 'Well, I'm
-delighted to have got so good a man for my brother. Here's your advance
-of a hundred pounds, and here is the letter. Make a note of the address,
-126b Corporation Street, and remember that one o'clock to-morrow is
-your appointment. Good-night; and may you have all the fortune that you
-deserve!'
-
-"That's just about all that passed between us, as near as I can
-remember. You can imagine, Dr. Watson, how pleased I was at such an
-extraordinary bit of good fortune. I sat up half the night hugging
-myself over it, and next day I was off to Birmingham in a train that
-would take me in plenty time for my appointment. I took my things to
-a hotel in New Street, and then I made my way to the address which had
-been given me.
-
-"It was a quarter of an hour before my time, but I thought that would
-make no difference. 126b was a passage between two large shops, which
-led to a winding stone stair, from which there were many flats, let as
-offices to companies or professional men. The names of the occupants
-were painted at the bottom on the wall, but there was no such name as
-the Franco-Midland Hardware Company, Limited. I stood for a few minutes
-with my heart in my boots, wondering whether the whole thing was an
-elaborate hoax or not, when up came a man and addressed me. He was very
-like the chap I had seen the night before, the same figure and voice,
-but he was clean shaven and his hair was lighter.
-
-"'Are you Mr. Hall Pycroft?' he asked.
-
-"'Yes,' said I.
-
-"'Oh! I was expecting you, but you are a trifle before your time. I had
-a note from my brother this morning in which he sang your praises very
-loudly.'
-
-"'I was just looking for the offices when you came.
-
-"'We have not got our name up yet, for we only secured these temporary
-premises last week. Come up with me, and we will talk the matter over.'
-
-"I followed him to the top of a very lofty stair, and there, right under
-the slates, were a couple of empty, dusty little rooms, uncarpeted and
-uncurtained, into which he led me. I had thought of a great office with
-shining tables and rows of clerks, such as I was used to, and I dare say
-I stared rather straight at the two deal chairs and one little table,
-which, with a ledger and a waste paper basket, made up the whole
-furniture.
-
-"'Don't be disheartened, Mr. Pycroft,' said my new acquaintance, seeing
-the length of my face. 'Rome was not built in a day, and we have lots of
-money at our backs, though we don't cut much dash yet in offices. Pray
-sit down, and let me have your letter.'
-
-"I gave it to him, and he read it over very carefully.
-
-"'You seem to have made a vast impression upon my brother Arthur,' said
-he; 'and I know that he is a pretty shrewd judge. He swears by London,
-you know; and I by Birmingham; but this time I shall follow his advice.
-Pray consider yourself definitely engaged."
-
-"'What are my duties?' I asked.
-
-"'You will eventually manage the great depot in Paris, which will pour
-a flood of English crockery into the shops of a hundred and thirty-four
-agents in France. The purchase will be completed in a week, and
-meanwhile you will remain in Birmingham and make yourself useful.'
-
-"'How?'
-
-"For answer, he took a big red book out of a drawer.
-
-"'This is a directory of Paris,' said he, 'with the trades after the
-names of the people. I want you to take it home with you, and to mark
-off all the hardware sellers, with their addresses. It would be of the
-greatest use to me to have them.'
-
-"'Surely there are classified lists?' I suggested.
-
-"'Not reliable ones. Their system is different from ours. Stick at it,
-and let me have the lists by Monday, at twelve. Good-day, Mr. Pycroft.
-If you continue to show zeal and intelligence you will find the company
-a good master.'
-
-"I went back to the hotel with the big book under my arm, and with very
-conflicting feelings in my breast. On the one hand, I was definitely
-engaged and had a hundred pounds in my pocket; on the other, the look
-of the offices, the absence of name on the wall, and other of the points
-which would strike a business man had left a bad impression as to the
-position of my employers. However, come what might, I had my money, so I
-settled down to my task. All Sunday I was kept hard at work, and yet by
-Monday I had only got as far as H. I went round to my employer, found
-him in the same dismantled kind of room, and was told to keep at
-it until Wednesday, and then come again. On Wednesday it was still
-unfinished, so I hammered away until Friday--that is, yesterday. Then I
-brought it round to Mr. Harry Pinner.
-
-"'Thank you very much,' said he; 'I fear that I underrated the
-difficulty of the task. This list will be of very material assistance to
-me.'
-
-"'It took some time,' said I.
-
-"'And now,' said he, 'I want you to make a list of the furniture shops,
-for they all sell crockery.'
-
-"'Very good.'
-
-"'And you can come up to-morrow evening, at seven, and let me know how
-you are getting on. Don't overwork yourself. A couple of hours at Day's
-Music Hall in the evening would do you no harm after your labors.' He
-laughed as he spoke, and I saw with a thrill that his second tooth upon
-the left-hand side had been very badly stuffed with gold."
-
-
-Sherlock Holmes rubbed his hands with delight, and I stared with
-astonishment at our client.
-
-"You may well look surprised, Dr. Watson; but it is this way," said he:
-"When I was speaking to the other chap in London, at the time that he
-laughed at my not going to Mawson's, I happened to notice that his tooth
-was stuffed in this very identical fashion. The glint of the gold in
-each case caught my eye, you see. When I put that with the voice and
-figure being the same, and only those things altered which might be
-changed by a razor or a wig, I could not doubt that it was the same man.
-Of course you expect two brothers to be alike, but not that they should
-have the same tooth stuffed in the same way. He bowed me out, and I
-found myself in the street, hardly knowing whether I was on my head or
-my heels. Back I went to my hotel, put my head in a basin of cold water,
-and tried to think it out. Why had he sent me from London to Birmingham?
-Why had he got there before me? And why had he written a letter from
-himself to himself? It was altogether too much for me, and I could make
-no sense of it. And then suddenly it struck me that what was dark to me
-might be very light to Mr. Sherlock Holmes. I had just time to get up to
-town by the night train to see him this morning, and to bring you both
-back with me to Birmingham."
-
-There was a pause after the stock-broker's clerk had concluded his
-surprising experience. Then Sherlock Holmes cocked his eye at me,
-leaning back on the cushions with a pleased and yet critical face, like
-a connoisseur who has just taken his first sip of a comet vintage.
-
-"Rather fine, Watson, is it not?" said he. "There are points in it which
-please me. I think that you will agree with me that an interview with
-Mr. Arthur Harry Pinner in the temporary offices of the Franco-Midland
-Hardware Company, Limited, would be a rather interesting experience for
-both of us."
-
-"But how can we do it?" I asked.
-
-"Oh, easily enough," said Hall Pycroft, cheerily. "You are two friends
-of mine who are in want of a billet, and what could be more natural than
-that I should bring you both round to the managing director?"
-
-"Quite so, of course," said Holmes. "I should like to have a look at
-the gentleman, and see if I can make anything of his little game.
-What qualities have you, my friend, which would make your services
-so valuable? or is it possible that--" He began biting his nails and
-staring blankly out of the window, and we hardly drew another word from
-him until we were in New Street.
-
-At seven o'clock that evening we were walking, the three of us, down
-Corporation Street to the company's offices.
-
-"It is no use our being at all before our time," said our client. "He
-only comes there to see me, apparently, for the place is deserted up to
-the very hour he names."
-
-"That is suggestive," remarked Holmes.
-
-"By Jove, I told you so!" cried the clerk. "That's he walking ahead of
-us there."
-
-He pointed to a smallish, dark, well-dressed man who was bustling along
-the other side of the road. As we watched him he looked across at a boy
-who was bawling out the latest edition of the evening paper, and running
-over among the cabs and busses, he bought one from him. Then, clutching
-it in his hand, he vanished through a door-way.
-
-"There he goes!" cried Hall Pycroft. "These are the company's offices
-into which he has gone. Come with me, and I'll fix it up as easily as
-possible."
-
-Following his lead, we ascended five stories, until we found ourselves
-outside a half-opened door, at which our client tapped. A voice within
-bade us enter, and we entered a bare, unfurnished room such as Hall
-Pycroft had described. At the single table sat the man whom we had seen
-in the street, with his evening paper spread out in front of him, and as
-he looked up at us it seemed to me that I had never looked upon a face
-which bore such marks of grief, and of something beyond grief--of a
-horror such as comes to few men in a lifetime. His brow glistened with
-perspiration, his cheeks were of the dull, dead white of a fish's belly,
-and his eyes were wild and staring. He looked at his clerk as though he
-failed to recognize him, and I could see by the astonishment depicted
-upon our conductor's face that this was by no means the usual appearance
-of his employer.
-
-"You look ill, Mr. Pinner!" he exclaimed.
-
-"Yes, I am not very well," answered the other, making obvious efforts
-to pull himself together, and licking his dry lips before he spoke. "Who
-are these gentlemen whom you have brought with you?"
-
-"One is Mr. Harris, of Bermondsey, and the other is Mr. Price, of this
-town," said our clerk, glibly. "They are friends of mine and gentlemen
-of experience, but they have been out of a place for some little time,
-and they hoped that perhaps you might find an opening for them in the
-company's employment."
-
-"Very possibly! Very possibly!" cried Mr. Pinner with a ghastly smile.
-"Yes, I have no doubt that we shall be able to do something for you.
-What is your particular line, Mr. Harris?"
-
-"I am an accountant," said Holmes.
-
-"Ah yes, we shall want something of the sort. And you, Mr. Price?"
-
-"A clerk," said I.
-
-"I have every hope that the company may accommodate you. I will let you
-know about it as soon as we come to any conclusion. And now I beg that
-you will go. For God's sake leave me to myself!"
-
-These last words were shot out of him, as though the constraint which
-he was evidently setting upon himself had suddenly and utterly burst
-asunder. Holmes and I glanced at each other, and Hall Pycroft took a
-step towards the table.
-
-"You forget, Mr. Pinner, that I am here by appointment to receive some
-directions from you," said he.
-
-"Certainly, Mr. Pycroft, certainly," the other resumed in a calmer tone.
-"You may wait here a moment; and there is no reason why your friends
-should not wait with you. I will be entirely at your service in three
-minutes, if I might trespass upon your patience so far." He rose with a
-very courteous air, and, bowing to us, he passed out through a door at
-the farther end of the room, which he closed behind him.
-
-"What now?" whispered Holmes. "Is he giving us the slip?"
-
-"Impossible," answered Pycroft.
-
-"Why so?"
-
-"That door leads into an inner room."
-
-"There is no exit?"
-
-"None."
-
-"Is it furnished?"
-
-"It was empty yesterday."
-
-"Then what on earth can he be doing? There is something which I don't
-understand in this manner. If ever a man was three parts mad with
-terror, that man's name is Pinner. What can have put the shivers on
-him?"
-
-"He suspects that we are detectives," I suggested.
-
-"That's it," cried Pycroft.
-
-Holmes shook his head. "He did not turn pale. He was pale when we
-entered the room," said he. "It is just possible that--"
-
-His words were interrupted by a sharp rat-tat from the direction of the
-inner door.
-
-"What the deuce is he knocking at his own door for?" cried the clerk.
-
-Again and much louder came the rat-tat-tat. We all gazed expectantly at
-the closed door. Glancing at Holmes, I saw his face turn rigid, and he
-leaned forward in intense excitement. Then suddenly came a low guggling,
-gargling sound, and a brisk drumming upon woodwork. Holmes sprang
-frantically across the room and pushed at the door. It was fastened on
-the inner side. Following his example, we threw ourselves upon it with
-all our weight. One hinge snapped, then the other, and down came the
-door with a crash. Rushing over it, we found ourselves in the inner
-room. It was empty.
-
-But it was only for a moment that we were at fault. At one corner, the
-corner nearest the room which we had left, there was a second door.
-Holmes sprang to it and pulled it open. A coat and waistcoat were lying
-on the floor, and from a hook behind the door, with his own braces
-round his neck, was hanging the managing director of the Franco-Midland
-Hardware Company. His knees were drawn up, his head hung at a dreadful
-angle to his body, and the clatter of his heels against the door made
-the noise which had broken in upon our conversation. In an instant I
-had caught him round the waist, and held him up while Holmes and Pycroft
-untied the elastic bands which had disappeared between the livid creases
-of skin. Then we carried him into the other room, where he lay with
-a clay-colored face, puffing his purple lips in and out with every
-breath--a dreadful wreck of all that he had been but five minutes
-before.
-
-"What do you think of him, Watson?" asked Holmes.
-
-I stooped over him and examined him. His pulse was feeble and
-intermittent, but his breathing grew longer, and there was a little
-shivering of his eyelids, which showed a thin white slit of ball
-beneath.
-
-"It has been touch and go with him," said I, "but he'll live now. Just
-open that window, and hand me the water carafe." I undid his collar,
-poured the cold water over his face, and raised and sank his arms until
-he drew a long, natural breath. "It's only a question of time now," said
-I, as I turned away from him.
-
-Holmes stood by the table, with his hands deep in his trouser's pockets
-and his chin upon his breast.
-
-"I suppose we ought to call the police in now," said he. "And yet I
-confess that I'd like to give them a complete case when they come."
-
-"It's a blessed mystery to me," cried Pycroft, scratching his head.
-"Whatever they wanted to bring me all the way up here for, and then--"
-
-"Pooh! All that is clear enough," said Holmes impatiently. "It is this
-last sudden move."
-
-"You understand the rest, then?"
-
-"I think that it is fairly obvious. What do you say, Watson?"
-
-I shrugged my shoulders. "I must confess that I am out of my depths,"
-said I.
-
-"Oh surely if you consider the events at first they can only point to
-one conclusion."
-
-"What do you make of them?"
-
-"Well, the whole thing hinges upon two points. The first is the making
-of Pycroft write a declaration by which he entered the service of this
-preposterous company. Do you not see how very suggestive that is?"
-
-"I am afraid I miss the point."
-
-"Well, why did they want him to do it? Not as a business matter, for
-these arrangements are usually verbal, and there was no earthly business
-reason why this should be an exception. Don't you see, my young friend,
-that they were very anxious to obtain a specimen of your handwriting,
-and had no other way of doing it?"
-
-"And why?"
-
-"Quite so. Why? When we answer that we have made some progress with our
-little problem. Why? There can be only one adequate reason. Some one
-wanted to learn to imitate your writing, and had to procure a specimen
-of it first. And now if we pass on to the second point we find that each
-throws light upon the other. That point is the request made by Pinner
-that you should not resign your place, but should leave the manager of
-this important business in the full expectation that a Mr. Hall Pycroft,
-whom he had never seen, was about to enter the office upon the Monday
-morning."
-
-"My God!" cried our client, "what a blind beetle I have been!"
-
-"Now you see the point about the handwriting. Suppose that some one
-turned up in your place who wrote a completely different hand from that
-in which you had applied for the vacancy, of course the game would have
-been up. But in the interval the rogue had learned to imitate you,
-and his position was therefore secure, as I presume that nobody in the
-office had ever set eyes upon you."
-
-"Not a soul," groaned Hall Pycroft.
-
-"Very good. Of course it was of the utmost importance to prevent you
-from thinking better of it, and also to keep you from coming into
-contact with any one who might tell you that your double was at work
-in Mawson's office. Therefore they gave you a handsome advance on your
-salary, and ran you off to the Midlands, where they gave you enough work
-to do to prevent your going to London, where you might have burst their
-little game up. That is all plain enough."
-
-"But why should this man pretend to be his own brother?"
-
-"Well, that is pretty clear also. There are evidently only two of them
-in it. The other is impersonating you at the office. This one acted
-as your engager, and then found that he could not find you an employer
-without admitting a third person into his plot. That he was most
-unwilling to do. He changed his appearance as far as he could, and
-trusted that the likeness, which you could not fail to observe, would be
-put down to a family resemblance. But for the happy chance of the gold
-stuffing, your suspicions would probably never have been aroused."
-
-Hall Pycroft shook his clinched hands in the air. "Good Lord!" he cried,
-"while I have been fooled in this way, what has this other Hall Pycroft
-been doing at Mawson's? What should we do, Mr. Holmes? Tell me what to
-do."
-
-"We must wire to Mawson's."
-
-"They shut at twelve on Saturdays."
-
-"Never mind. There may be some door-keeper or attendant--"
-
-"Ah yes, they keep a permanent guard there on account of the value of
-the securities that they hold. I remember hearing it talked of in the
-City."
-
-"Very good; we shall wire to him, and see if all is well, and if a clerk
-of your name is working there. That is clear enough; but what is not so
-clear is why at sight of us one of the rogues should instantly walk out
-of the room and hang himself."
-
-"The paper!" croaked a voice behind us. The man was sitting up, blanched
-and ghastly, with returning reason in his eyes, and hands which rubbed
-nervously at the broad red band which still encircled his throat.
-
-"The paper! Of course!" yelled Holmes, in a paroxysm of excitement.
-"Idiot that I was! I thought so much of our visit that the paper never
-entered my head for an instant. To be sure, the secret must be there."
-He flattened it out upon the table, and a cry of triumph burst from his
-lips. "Look at this, Watson," he cried. "It is a London paper, an early
-edition of the Evening Standard. Here is what we want. Look at the
-headlines: 'Crime in the City. Murder at Mawson & Williams's. Gigantic
-attempted Robbery. Capture of the Criminal.' Here, Watson, we are all
-equally anxious to hear it, so kindly read it aloud to us."
-
-It appeared from its position in the paper to have been the one event of
-importance in town, and the account of it ran in this way:
-
-"A desperate attempt at robbery, culminating in the death of one man and
-the capture of the criminal, occurred this afternoon in the City. For
-some time back Mawson & Williams, the famous financial house, have been
-the guardians of securities which amount in the aggregate to a sum of
-considerably over a million sterling. So conscious was the manager of
-the responsibility which devolved upon him in consequence of the great
-interests at stake that safes of the very latest construction have
-been employed, and an armed watchman has been left day and night in the
-building. It appears that last week a new clerk named Hall Pycroft was
-engaged by the firm. This person appears to have been none other that
-Beddington, the famous forger and cracksman, who, with his brother, had
-only recently emerged from a five years' spell of penal servitude. By
-some means, which are not yet clear, he succeeded in winning, under a
-false name, this official position in the office, which he utilized in
-order to obtain moulding of various locks, and a thorough knowledge of
-the position of the strong room and the safes.
-
-"It is customary at Mawson's for the clerks to leave at midday on
-Saturday. Sergeant Tuson, of the City Police, was somewhat surprised,
-therefore to see a gentleman with a carpet bag come down the steps at
-twenty minutes past one. His suspicions being aroused, the sergeant
-followed the man, and with the aid of Constable Pollock succeeded, after
-a most desperate resistance, in arresting him. It was at once clear
-that a daring and gigantic robbery had been committed. Nearly a hundred
-thousand pounds' worth of American railway bonds, with a large amount
-of scrip in mines and other companies, was discovered in the bag. On
-examining the premises the body of the unfortunate watchman was found
-doubled up and thrust into the largest of the safes, where it would not
-have been discovered until Monday morning had it not been for the prompt
-action of Sergeant Tuson. The man's skull had been shattered by a
-blow from a poker delivered from behind. There could be no doubt
-that Beddington had obtained entrance by pretending that he had left
-something behind him, and having murdered the watchman, rapidly rifled
-the large safe, and then made off with his booty. His brother, who
-usually works with him, has not appeared in this job as far as can
-at present be ascertained, although the police are making energetic
-inquiries as to his whereabouts."
-
-"Well, we may save the police some little trouble in that direction,"
-said Holmes, glancing at the haggard figure huddled up by the window.
-"Human nature is a strange mixture, Watson. You see that even a villain
-and murderer can inspire such affection that his brother turns to
-suicide when he learns that his neck is forfeited. However, we have
-no choice as to our action. The doctor and I will remain on guard, Mr.
-Pycroft, if you will have the kindness to step out for the police."
-
-
-
-
-Adventure IV. The "_Gloria Scott_"
-
-
-"I have some papers here," said my friend Sherlock Holmes, as we sat
-one winter's night on either side of the fire, "which I really think,
-Watson, that it would be worth your while to glance over. These are the
-documents in the extraordinary case of the Gloria Scott, and this is the
-message which struck Justice of the Peace Trevor dead with horror when
-he read it."
-
-He had picked from a drawer a little tarnished cylinder, and, undoing
-the tape, he handed me a short note scrawled upon a half-sheet of
-slate-gray paper.
-
-"The supply of game for London is going steadily up," it ran.
-"Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life."
-
-As I glanced up from reading this enigmatical message, I saw Holmes
-chuckling at the expression upon my face.
-
-"You look a little bewildered," said he.
-
-"I cannot see how such a message as this could inspire horror. It seems
-to me to be rather grotesque than otherwise."
-
-"Very likely. Yet the fact remains that the reader, who was a fine,
-robust old man, was knocked clean down by it as if it had been the butt
-end of a pistol."
-
-"You arouse my curiosity," said I. "But why did you say just now that
-there were very particular reasons why I should study this case?"
-
-"Because it was the first in which I was ever engaged."
-
-I had often endeavored to elicit from my companion what had first turned
-his mind in the direction of criminal research, but had never caught him
-before in a communicative humor. Now he sat forward in this arm-chair
-and spread out the documents upon his knees. Then he lit his pipe and
-sat for some time smoking and turning them over.
-
-"You never heard me talk of Victor Trevor?" he asked. "He was the only
-friend I made during the two years I was at college. I was never a very
-sociable fellow, Watson, always rather fond of moping in my rooms and
-working out my own little methods of thought, so that I never mixed
-much with the men of my year. Bar fencing and boxing I had few athletic
-tastes, and then my line of study was quite distinct from that of the
-other fellows, so that we had no points of contact at all. Trevor was
-the only man I knew, and that only through the accident of his bull
-terrier freezing on to my ankle one morning as I went down to chapel.
-
-"It was a prosaic way of forming a friendship, but it was effective.
-I was laid by the heels for ten days, but Trevor used to come in to
-inquire after me. At first it was only a minute's chat, but soon his
-visits lengthened, and before the end of the term we were close friends.
-He was a hearty, full-blooded fellow, full of spirits and energy,
-the very opposite to me in most respects, but we had some subjects
-in common, and it was a bond of union when I found that he was as
-friendless as I. Finally, he invited me down to his father's place at
-Donnithorpe, in Norfolk, and I accepted his hospitality for a month of
-the long vacation.
-
-"Old Trevor was evidently a man of some wealth and consideration, a
-J.P., and a landed proprietor. Donnithorpe is a little hamlet just to
-the north of Langmere, in the country of the Broads. The house was
-an old-fashioned, wide-spread, oak-beamed brick building, with a fine
-lime-lined avenue leading up to it. There was excellent wild-duck
-shooting in the fens, remarkably good fishing, a small but select
-library, taken over, as I understood, from a former occupant, and a
-tolerable cook, so that he would be a fastidious man who could not put
-in a pleasant month there.
-
-"Trevor senior was a widower, and my friend his only son.
-
-"There had been a daughter, I heard, but she had died of diphtheria
-while on a visit to Birmingham. The father interested me extremely.
-He was a man of little culture, but with a considerable amount of rude
-strength, both physically and mentally. He knew hardly any books, but
-he had traveled far, had seen much of the world. And had remembered
-all that he had learned. In person he was a thick-set, burly man with
-a shock of grizzled hair, a brown, weather-beaten face, and blue eyes
-which were keen to the verge of fierceness. Yet he had a reputation for
-kindness and charity on the country-side, and was noted for the leniency
-of his sentences from the bench.
-
-"One evening, shortly after my arrival, we were sitting over a glass of
-port after dinner, when young Trevor began to talk about those habits
-of observation and inference which I had already formed into a system,
-although I had not yet appreciated the part which they were to play in
-my life. The old man evidently thought that his son was exaggerating in
-his description of one or two trivial feats which I had performed.
-
-"'Come, now, Mr. Holmes,' said he, laughing good-humoredly. 'I'm an
-excellent subject, if you can deduce anything from me.'
-
-"'I fear there is not very much,' I answered; 'I might suggest that
-you have gone about in fear of some personal attack within the last
-twelvemonth.'
-
-"The laugh faded from his lips, and he stared at me in great surprise.
-
-"'Well, that's true enough,' said he. 'You know, Victor,' turning to his
-son, 'when we broke up that poaching gang they swore to knife us, and
-Sir Edward Holly has actually been attacked. I've always been on my
-guard since then, though I have no idea how you know it.'
-
-"'You have a very handsome stick,' I answered. 'By the inscription I
-observed that you had not had it more than a year. But you have taken
-some pains to bore the head of it and pour melted lead into the hole so
-as to make it a formidable weapon. I argued that you would not take such
-precautions unless you had some danger to fear.'
-
-"'Anything else?' he asked, smiling.
-
-"'You have boxed a good deal in your youth.'
-
-"'Right again. How did you know it? Is my nose knocked a little out of
-the straight?'
-
-"'No,' said I. 'It is your ears. They have the peculiar flattening and
-thickening which marks the boxing man.'
-
-"'Anything else?'
-
-"'You have done a good deal of digging by your callosities.'
-
-"'Made all my money at the gold fields.'
-
-"'You have been in New Zealand.'
-
-"'Right again.'
-
-"'You have visited Japan.'
-
-"'Quite true.'
-
-"'And you have been most intimately associated with some one whose
-initials were J. A., and whom you afterwards were eager to entirely
-forget.'
-
-"Mr. Trevor stood slowly up, fixed his large blue eyes upon me with a
-strange wild stare, and then pitched forward, with his face among the
-nutshells which strewed the cloth, in a dead faint.
-
-"You can imagine, Watson, how shocked both his son and I were. His
-attack did not last long, however, for when we undid his collar, and
-sprinkled the water from one of the finger-glasses over his face, he
-gave a gasp or two and sat up.
-
-"'Ah, boys,' said he, forcing a smile, 'I hope I haven't frightened you.
-Strong as I look, there is a weak place in my heart, and it does not
-take much to knock me over. I don't know how you manage this, Mr.
-Holmes, but it seems to me that all the detectives of fact and of fancy
-would be children in your hands. That's your line of life, sir, and you
-may take the word of a man who has seen something of the world.'
-
-"And that recommendation, with the exaggerated estimate of my ability
-with which he prefaced it, was, if you will believe me, Watson, the very
-first thing which ever made me feel that a profession might be made
-out of what had up to that time been the merest hobby. At the moment,
-however, I was too much concerned at the sudden illness of my host to
-think of anything else.
-
-"'I hope that I have said nothing to pain you?' said I.
-
-"'Well, you certainly touched upon rather a tender point. Might I ask
-how you know, and how much you know?' He spoke now in a half-jesting
-fashion, but a look of terror still lurked at the back of his eyes.
-
-"'It is simplicity itself,' said I. 'When you bared your arm to draw
-that fish into the boat I saw that J. A. Had been tattooed in the bend
-of the elbow. The letters were still legible, but it was perfectly clear
-from their blurred appearance, and from the staining of the skin round
-them, that efforts had been made to obliterate them. It was obvious,
-then, that those initials had once been very familiar to you, and that
-you had afterwards wished to forget them.'
-
-"What an eye you have!" he cried, with a sigh of relief. 'It is just as
-you say. But we won't talk of it. Of all ghosts the ghosts of our old
-lovers are the worst. Come into the billiard-room and have a quiet
-cigar.'
-
-
-"From that day, amid all his cordiality, there was always a touch of
-suspicion in Mr. Trevor's manner towards me. Even his son remarked it.
-'You've given the governor such a turn,' said he, 'that he'll never be
-sure again of what you know and what you don't know.' He did not mean
-to show it, I am sure, but it was so strongly in his mind that it peeped
-out at every action. At last I became so convinced that I was causing
-him uneasiness that I drew my visit to a close. On the very day,
-however, before I left, and incident occurred which proved in the sequel
-to be of importance.
-
-"We were sitting out upon the lawn on garden chairs, the three of us,
-basking in the sun and admiring the view across the Broads, when a maid
-came out to say that there was a man at the door who wanted to see Mr.
-Trevor.
-
-"'What is his name?' asked my host.
-
-"'He would not give any.'
-
-"'What does he want, then?'
-
-"'He says that you know him, and that he only wants a moment's
-conversation.'
-
-"'Show him round here.' An instant afterwards there appeared a little
-wizened fellow with a cringing manner and a shambling style of
-walking. He wore an open jacket, with a splotch of tar on the sleeve,
-a red-and-black check shirt, dungaree trousers, and heavy boots badly
-worn. His face was thin and brown and crafty, with a perpetual smile
-upon it, which showed an irregular line of yellow teeth, and his
-crinkled hands were half closed in a way that is distinctive of sailors.
-As he came slouching across the lawn I heard Mr. Trevor make a sort of
-hiccoughing noise in his throat, and jumping out of his chair, he ran
-into the house. He was back in a moment, and I smelt a strong reek of
-brandy as he passed me.
-
-"'Well, my man,' said he. 'What can I do for you?'
-
-"The sailor stood looking at him with puckered eyes, and with the same
-loose-lipped smile upon his face.
-
-"'You don't know me?' he asked.
-
-"'Why, dear me, it is surely Hudson,' said Mr. Trevor in a tone of
-surprise.
-
-"'Hudson it is, sir,' said the seaman. 'Why, it's thirty year and more
-since I saw you last. Here you are in your house, and me still picking
-my salt meat out of the harness cask.'
-
-"'Tut, you will find that I have not forgotten old times,' cried Mr.
-Trevor, and, walking towards the sailor, he said something in a low
-voice. 'Go into the kitchen,' he continued out loud, 'and you will get
-food and drink. I have no doubt that I shall find you a situation.'
-
-"'Thank you, sir,' said the seaman, touching his fore-lock. 'I'm just
-off a two-yearer in an eight-knot tramp, short-handed at that, and I
-wants a rest. I thought I'd get it either with Mr. Beddoes or with you.'
-
-"'Ah!' cried Trevor. 'You know where Mr. Beddoes is?'
-
-"'Bless you, sir, I know where all my old friends are,' said the
-fellow with a sinister smile, and he slouched off after the maid to the
-kitchen. Mr. Trevor mumbled something to us about having been shipmate
-with the man when he was going back to the diggings, and then, leaving
-us on the lawn, he went indoors. An hour later, when we entered the
-house, we found him stretched dead drunk upon the dining-room sofa. The
-whole incident left a most ugly impression upon my mind, and I was
-not sorry next day to leave Donnithorpe behind me, for I felt that my
-presence must be a source of embarrassment to my friend.
-
-"All this occurred during the first month of the long vacation. I went
-up to my London rooms, where I spent seven weeks working out a few
-experiments in organic chemistry. One day, however, when the autumn was
-far advanced and the vacation drawing to a close, I received a telegram
-from my friend imploring me to return to Donnithorpe, and saying that
-he was in great need of my advice and assistance. Of course I dropped
-everything and set out for the North once more.
-
-"He met me with the dog-cart at the station, and I saw at a glance that
-the last two months had been very trying ones for him. He had grown thin
-and careworn, and had lost the loud, cheery manner for which he had been
-remarkable.
-
-"'The governor is dying,' were the first words he said.
-
-"'Impossible!' I cried. 'What is the matter?'
-
-"'Apoplexy. Nervous shock, He's been on the verge all day. I doubt if we
-shall find him alive.'
-
-"I was, as you may think, Watson, horrified at this unexpected news.
-
-"'What has caused it?' I asked.
-
-"'Ah, that is the point. Jump in and we can talk it over while we drive.
-You remember that fellow who came upon the evening before you left us?'
-
-"'Perfectly.'
-
-"'Do you know who it was that we let into the house that day?'
-
-"'I have no idea.'
-
-"'It was the devil, Holmes,' he cried.
-
-"I stared at him in astonishment.
-
-"'Yes, it was the devil himself. We have not had a peaceful hour
-since--not one. The governor has never held up his head from that
-evening, and now the life has been crushed out of him and his heart
-broken, all through this accursed Hudson.'
-
-"'What power had he, then?'
-
-"'Ah, that is what I would give so much to know. The kindly, charitable,
-good old governor--how could he have fallen into the clutches of such a
-ruffian! But I am so glad that you have come, Holmes. I trust very much
-to your judgment and discretion, and I know that you will advise me for
-the best.'
-
-"We were dashing along the smooth white country road, with the long
-stretch of the Broads in front of us glimmering in the red light of the
-setting sun. From a grove upon our left I could already see the high
-chimneys and the flag-staff which marked the squire's dwelling.
-
-"'My father made the fellow gardener,' said my companion, 'and then, as
-that did not satisfy him, he was promoted to be butler. The house seemed
-to be at his mercy, and he wandered about and did what he chose in it.
-The maids complained of his drunken habits and his vile language. The
-dad raised their wages all round to recompense them for the annoyance.
-The fellow would take the boat and my father's best gun and treat
-himself to little shooting trips. And all this with such a sneering,
-leering, insolent face that I would have knocked him down twenty times
-over if he had been a man of my own age. I tell you, Holmes, I have
-had to keep a tight hold upon myself all this time; and now I am asking
-myself whether, if I had let myself go a little more, I might not have
-been a wiser man.
-
-"'Well, matters went from bad to worse with us, and this animal Hudson
-became more and more intrusive, until at last, on making some insolent
-reply to my father in my presence one day, I took him by the shoulders
-and turned him out of the room. He slunk away with a livid face and two
-venomous eyes which uttered more threats than his tongue could do. I
-don't know what passed between the poor dad and him after that, but the
-dad came to me next day and asked me whether I would mind apologizing to
-Hudson. I refused, as you can imagine, and asked my father how he
-could allow such a wretch to take such liberties with himself and his
-household.
-
-"'"Ah, my boy," said he, "it is all very well to talk, but you don't
-know how I am placed. But you shall know, Victor. I'll see that you
-shall know, come what may. You wouldn't believe harm of your poor old
-father, would you, lad?" He was very much moved, and shut himself up
-in the study all day, where I could see through the window that he was
-writing busily.
-
-"'That evening there came what seemed to me to be a grand release,
-for Hudson told us that he was going to leave us. He walked into the
-dining-room as we sat after dinner, and announced his intention in the
-thick voice of a half-drunken man.
-
-"'"I've had enough of Norfolk," said he. "I'll run down to Mr. Beddoes
-in Hampshire. He'll be as glad to see me as you were, I dare say."
-
-"'"You're not going away in an unkind spirit, Hudson, I hope," said my
-father, with a tameness which made my blood boil.
-
-"'"I've not had my 'pology," said he sulkily, glancing in my direction.
-
-"'"Victor, you will acknowledge that you have used this worthy fellow
-rather roughly," said the dad, turning to me.
-
-"'"On the contrary, I think that we have both shown extraordinary
-patience towards him," I answered.
-
-"'"Oh, you do, do you?" he snarls. "Very good, mate. We'll see about
-that!"
-
-"'He slouched out of the room, and half an hour afterwards left the
-house, leaving my father in a state of pitiable nervousness. Night after
-night I heard him pacing his room, and it was just as he was recovering
-his confidence that the blow did at last fall.'
-
-"'And how?' I asked eagerly.
-
-"'In a most extraordinary fashion. A letter arrived for my father
-yesterday evening, bearing the Fordingbridge post-mark. My father read
-it, clapped both his hands to his head, and began running round the room
-in little circles like a man who has been driven out of his senses. When
-I at last drew him down on to the sofa, his mouth and eyelids were all
-puckered on one side, and I saw that he had a stroke. Dr. Fordham came
-over at once. We put him to bed; but the paralysis has spread, he has
-shown no sign of returning consciousness, and I think that we shall
-hardly find him alive.'
-
-"'You horrify me, Trevor!' I cried. 'What then could have been in this
-letter to cause so dreadful a result?'
-
-"'Nothing. There lies the inexplicable part of it. The message was
-absurd and trivial. Ah, my God, it is as I feared!'
-
-"As he spoke we came round the curve of the avenue, and saw in the
-fading light that every blind in the house had been drawn down. As
-we dashed up to the door, my friend's face convulsed with grief, a
-gentleman in black emerged from it.
-
-"'When did it happen, doctor?' asked Trevor.
-
-"'Almost immediately after you left.'
-
-"'Did he recover consciousness?'
-
-"'For an instant before the end.'
-
-"'Any message for me.'
-
-"'Only that the papers were in the back drawer of the Japanese cabinet.'
-
-"My friend ascended with the doctor to the chamber of death, while I
-remained in the study, turning the whole matter over and over in my
-head, and feeling as sombre as ever I had done in my life. What was the
-past of this Trevor, pugilist, traveler, and gold-digger, and how had he
-placed himself in the power of this acid-faced seaman? Why, too, should
-he faint at an allusion to the half-effaced initials upon his arm, and
-die of fright when he had a letter from Fordingham? Then I remembered
-that Fordingham was in Hampshire, and that this Mr. Beddoes, whom the
-seaman had gone to visit and presumably to blackmail, had also been
-mentioned as living in Hampshire. The letter, then, might either come
-from Hudson, the seaman, saying that he had betrayed the guilty secret
-which appeared to exist, or it might come from Beddoes, warning an old
-confederate that such a betrayal was imminent. So far it seemed clear
-enough. But then how could this letter be trivial and grotesque, as
-describe by the son? He must have misread it. If so, it must have been
-one of those ingenious secret codes which mean one thing while they seem
-to mean another. I must see this letter. If there were a hidden meaning
-in it, I was confident that I could pluck it forth. For an hour I sat
-pondering over it in the gloom, until at last a weeping maid brought in
-a lamp, and close at her heels came my friend Trevor, pale but composed,
-with these very papers which lie upon my knee held in his grasp. He sat
-down opposite to me, drew the lamp to the edge of the table, and handed
-me a short note scribbled, as you see, upon a single sheet of gray
-paper. 'The supply of game for London is going steadily up,' it ran.
-'Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life.'
-
-"I dare say my face looked as bewildered as yours did just now when
-first I read this message. Then I reread it very carefully. It was
-evidently as I had thought, and some secret meaning must lie buried
-in this strange combination of words. Or could it be that there was
-a prearranged significance to such phrases as 'fly-paper' and
-'hen-pheasant'? Such a meaning would be arbitrary and could not be
-deduced in any way. And yet I was loath to believe that this was the
-case, and the presence of the word Hudson seemed to show that the
-subject of the message was as I had guessed, and that it was from
-Beddoes rather than the sailor. I tried it backwards, but the
-combination 'life pheasant's hen' was not encouraging. Then I tried
-alternate words, but neither 'the of for' nor 'supply game London'
-promised to throw any light upon it.
-
-"And then in an instant the key of the riddle was in my hands, and I saw
-that every third word, beginning with the first, would give a message
-which might well drive old Trevor to despair.
-
-"It was short and terse, the warning, as I now read it to my companion:
-
-"'The game is up. Hudson has told all. Fly for your life.'
-
-"Victor Trevor sank his face into his shaking hands. 'It must be that,
-I suppose,' said he. "This is worse than death, for it means disgrace
-as well. But what is the meaning of these "head-keepers" and
-"hen-pheasants"?'
-
-"'It means nothing to the message, but it might mean a good deal to us
-if we had no other means of discovering the sender. You see that he has
-begun by writing "The...game...is," and so on. Afterwards he had, to
-fulfill the prearranged cipher, to fill in any two words in each space.
-He would naturally use the first words which came to his mind, and
-if there were so many which referred to sport among them, you may
-be tolerably sure that he is either an ardent shot or interested in
-breeding. Do you know anything of this Beddoes?'
-
-"'Why, now that you mention it,' said he, 'I remember that my poor
-father used to have an invitation from him to shoot over his preserves
-every autumn.'
-
-"'Then it is undoubtedly from him that the note comes,' said I. 'It only
-remains for us to find out what this secret was which the sailor Hudson
-seems to have held over the heads of these two wealthy and respected
-men.'
-
-"'Alas, Holmes, I fear that it is one of sin and shame!' cried my
-friend. 'But from you I shall have no secrets. Here is the statement
-which was drawn up by my father when he knew that the danger from Hudson
-had become imminent. I found it in the Japanese cabinet, as he told the
-doctor. Take it and read it to me, for I have neither the strength nor
-the courage to do it myself.'
-
-"These are the very papers, Watson, which he handed to me, and I will
-read them to you, as I read them in the old study that night to him.
-They are endorsed outside, as you see, 'Some particulars of the voyage
-of the bark _Gloria Scott_, from her leaving Falmouth on the 8th
-October, 1855, to her destruction in N. Lat. 15 degrees 20', W. Long.
-25 degrees 14' on Nov. 6th.' It is in the form of a letter, and runs in
-this way:
-
-"'My dear, dear son, now that approaching disgrace begins to darken the
-closing years of my life, I can write with all truth and honesty that it
-is not the terror of the law, it is not the loss of my position in the
-county, nor is it my fall in the eyes of all who have known me, which
-cuts me to the heart; but it is the thought that you should come to
-blush for me--you who love me and who have seldom, I hope, had reason to
-do other than respect me. But if the blow falls which is forever hanging
-over me, then I should wish you to read this, that you may know straight
-from me how far I have been to blame. On the other hand, if all should
-go well (which may kind God Almighty grant!), then if by any chance this
-paper should be still undestroyed and should fall into your hands, I
-conjure you, by all you hold sacred, by the memory of your dear mother,
-and by the love which had been between us, to hurl it into the fire and
-to never give one thought to it again.
-
-"'If then your eye goes on to read this line, I know that I shall
-already have been exposed and dragged from my home, or as is more
-likely, for you know that my heart is weak, by lying with my tongue
-sealed forever in death. In either case the time for suppression is
-past, and every word which I tell you is the naked truth, and this I
-swear as I hope for mercy.
-
-"'My name, dear lad, is not Trevor. I was James Armitage in my younger
-days, and you can understand now the shock that it was to me a few weeks
-ago when your college friend addressed me in words which seemed to imply
-that he had surprised my secret. As Armitage it was that I entered a
-London banking-house, and as Armitage I was convicted of breaking my
-country's laws, and was sentenced to transportation. Do not think very
-harshly of me, laddie. It was a debt of honor, so called, which I had
-to pay, and I used money which was not my own to do it, in the certainty
-that I could replace it before there could be any possibility of its
-being missed. But the most dreadful ill-luck pursued me. The money which
-I had reckoned upon never came to hand, and a premature examination of
-accounts exposed my deficit. The case might have been dealt leniently
-with, but the laws were more harshly administered thirty years ago than
-now, and on my twenty-third birthday I found myself chained as a felon
-with thirty-seven other convicts in 'tween-decks of the bark _Gloria
-Scott_, bound for Australia.
-
-"'It was the year '55 when the Crimean war was at its height, and the
-old convict ships had been largely used as transports in the Black
-Sea. The government was compelled, therefore, to use smaller and less
-suitable vessels for sending out their prisoners. The Gloria Scott
-had been in the Chinese tea-trade, but she was an old-fashioned,
-heavy-bowed, broad-beamed craft, and the new clippers had cut her
-out. She was a five-hundred-ton boat; and besides her thirty-eight
-jail-birds, she carried twenty-six of a crew, eighteen soldiers, a
-captain, three mates, a doctor, a chaplain, and four warders. Nearly a
-hundred souls were in her, all told, when we set sail from Falmouth.
-
-"'The partitions between the cells of the convicts, instead of being of
-thick oak, as is usual in convict-ships, were quite thin and frail.
-The man next to me, upon the aft side, was one whom I had particularly
-noticed when we were led down the quay. He was a young man with a
-clear, hairless face, a long, thin nose, and rather nut-cracker jaws.
-He carried his head very jauntily in the air, had a swaggering style
-of walking, and was, above all else, remarkable for his extraordinary
-height. I don't think any of our heads would have come up to his
-shoulder, and I am sure that he could not have measured less than six
-and a half feet. It was strange among so many sad and weary faces to see
-one which was full of energy and resolution. The sight of it was to me
-like a fire in a snow-storm. I was glad, then, to find that he was my
-neighbor, and gladder still when, in the dead of the night, I heard a
-whisper close to my ear, and found that he had managed to cut an opening
-in the board which separated us.
-
-"'"Hullo, chummy!" said he, "what's your name, and what are you here
-for?"
-
-"'I answered him, and asked in turn who I was talking with.
-
-"'"I'm Jack Prendergast," said he, "and by God! You'll learn to bless my
-name before you've done with me."
-
-"'I remembered hearing of his case, for it was one which had made an
-immense sensation throughout the country some time before my own arrest.
-He was a man of good family and of great ability, but of incurably
-vicious habits, who had by an ingenious system of fraud obtained huge
-sums of money from the leading London merchants.
-
-"'"Ha, ha! You remember my case!" said he proudly.
-
-"'"Very well, indeed."
-
-"'"Then maybe you remember something queer about it?"
-
-"'"What was that, then?"
-
-"'"I'd had nearly a quarter of a million, hadn't I?"
-
-"'"So it was said."
-
-"'"But none was recovered, eh?"
-
-"'"No."
-
-"'"Well, where d'ye suppose the balance is?" he asked.
-
-"'"I have no idea," said I.
-
-"'"Right between my finger and thumb," he cried. "By God! I've got more
-pounds to my name than you've hairs on your head. And if you've money,
-my son, and know how to handle it and spread it, you can do anything.
-Now, you don't think it likely that a man who could do anything is going
-to wear his breeches out sitting in the stinking hold of a rat-gutted,
-beetle-ridden, mouldy old coffin of a Chin China coaster. No, sir, such
-a man will look after himself and will look after his chums. You may lay
-to that! You hold on to him, and you may kiss the book that he'll haul
-you through."
-
-"'That was his style of talk, and at first I thought it meant nothing;
-but after a while, when he had tested me and sworn me in with all
-possible solemnity, he let me understand that there really was a plot
-to gain command of the vessel. A dozen of the prisoners had hatched it
-before they came aboard, Prendergast was the leader, and his money was
-the motive power.
-
-"'"I'd a partner," said he, "a rare good man, as true as a stock to a
-barrel. He's got the dibbs, he has, and where do you think he is at this
-moment? Why, he's the chaplain of this ship--the chaplain, no less! He
-came aboard with a black coat, and his papers right, and money enough in
-his box to buy the thing right up from keel to main-truck. The crew
-are his, body and soul. He could buy 'em at so much a gross with a cash
-discount, and he did it before ever they signed on. He's got two of the
-warders and Mereer, the second mate, and he'd get the captain himself,
-if he thought him worth it."
-
-"'"What are we to do, then?" I asked.
-
-"'"What do you think?" said he. "We'll make the coats of some of these
-soldiers redder than ever the tailor did."
-
-"'"But they are armed," said I.
-
-"'"And so shall we be, my boy. There's a brace of pistols for every
-mother's son of us, and if we can't carry this ship, with the crew at
-our back, it's time we were all sent to a young misses' boarding-school.
-You speak to your mate upon the left to-night, and see if he is to be
-trusted."
-
-"'I did so, and found my other neighbor to be a young fellow in much
-the same position as myself, whose crime had been forgery. His name was
-Evans, but he afterwards changed it, like myself, and he is now a rich
-and prosperous man in the south of England. He was ready enough to join
-the conspiracy, as the only means of saving ourselves, and before we had
-crossed the Bay there were only two of the prisoners who were not in the
-secret. One of these was of weak mind, and we did not dare to trust him,
-and the other was suffering from jaundice, and could not be of any use
-to us.
-
-"'From the beginning there was really nothing to prevent us from taking
-possession of the ship. The crew were a set of ruffians, specially
-picked for the job. The sham chaplain came into our cells to exhort us,
-carrying a black bag, supposed to be full of tracts, and so often did
-he come that by the third day we had each stowed away at the foot of our
-beds a file, a brace of pistols, a pound of powder, and twenty slugs.
-Two of the warders were agents of Prendergast, and the second mate was
-his right-hand man. The captain, the two mates, two warders Lieutenant
-Martin, his eighteen soldiers, and the doctor were all that we had
-against us. Yet, safe as it was, we determined to neglect no precaution,
-and to make our attack suddenly by night. It came, however, more quickly
-than we expected, and in this way.
-
-"'One evening, about the third week after our start, the doctor had come
-down to see one of the prisoners who was ill, and putting his hand down
-on the bottom of his bunk he felt the outline of the pistols. If he had
-been silent he might have blown the whole thing, but he was a nervous
-little chap, so he gave a cry of surprise and turned so pale that the
-man knew what was up in an instant and seized him. He was gagged before
-he could give the alarm, and tied down upon the bed. He had unlocked
-the door that led to the deck, and we were through it in a rush. The two
-sentries were shot down, and so was a corporal who came running to see
-what was the matter. There were two more soldiers at the door of the
-state-room, and their muskets seemed not to be loaded, for they never
-fired upon us, and they were shot while trying to fix their bayonets.
-Then we rushed on into the captain's cabin, but as we pushed open the
-door there was an explosion from within, and there he lay with his
-brains smeared over the chart of the Atlantic which was pinned upon the
-table, while the chaplain stood with a smoking pistol in his hand at
-his elbow. The two mates had both been seized by the crew, and the whole
-business seemed to be settled.
-
-"'The state-room was next the cabin, and we flocked in there and flopped
-down on the settees, all speaking together, for we were just mad with
-the feeling that we were free once more. There were lockers all round,
-and Wilson, the sham chaplain, knocked one of them in, and pulled out a
-dozen of brown sherry. We cracked off the necks of the bottles, poured
-the stuff out into tumblers, and were just tossing them off, when in an
-instant without warning there came the roar of muskets in our ears, and
-the saloon was so full of smoke that we could not see across the table.
-When it cleared again the place was a shambles. Wilson and eight others
-were wriggling on the top of each other on the floor, and the blood and
-the brown sherry on that table turn me sick now when I think of it. We
-were so cowed by the sight that I think we should have given the job up
-if it had not been for Prendergast. He bellowed like a bull and rushed
-for the door with all that were left alive at his heels. Out we ran,
-and there on the poop were the lieutenant and ten of his men. The swing
-skylights above the saloon table had been a bit open, and they had fired
-on us through the slit. We got on them before they could load, and they
-stood to it like men; but we had the upper hand of them, and in five
-minutes it was all over. My God! Was there ever a slaughter-house
-like that ship! Prendergast was like a raging devil, and he picked the
-soldiers up as if they had been children and threw them overboard alive
-or dead. There was one sergeant that was horribly wounded and yet kept
-on swimming for a surprising time, until some one in mercy blew out his
-brains. When the fighting was over there was no one left of our enemies
-except just the warders the mates, and the doctor.
-
-"'It was over them that the great quarrel arose. There were many of us
-who were glad enough to win back our freedom, and yet who had no wish
-to have murder on our souls. It was one thing to knock the soldiers over
-with their muskets in their hands, and it was another to stand by while
-men were being killed in cold blood. Eight of us, five convicts and
-three sailors, said that we would not see it done. But there was no
-moving Prendergast and those who were with him. Our only chance of
-safety lay in making a clean job of it, said he, and he would not leave
-a tongue with power to wag in a witness-box. It nearly came to our
-sharing the fate of the prisoners, but at last he said that if we wished
-we might take a boat and go. We jumped at the offer, for we were already
-sick of these bloodthirsty doings, and we saw that there would be worse
-before it was done. We were given a suit of sailor togs each, a barrel
-of water, two casks, one of junk and one of biscuits, and a compass.
-Prendergast threw us over a chart, told us that we were shipwrecked
-mariners whose ship had foundered in Lat. 15 degrees and Long 25 degrees
-west, and then cut the painter and let us go.
-
-"'And now I come to the most surprising part of my story, my dear son.
-The seamen had hauled the fore-yard aback during the rising, but now as
-we left them they brought it square again, and as there was a light wind
-from the north and east the bark began to draw slowly away from us. Our
-boat lay, rising and falling, upon the long, smooth rollers, and Evans
-and I, who were the most educated of the party, were sitting in the
-sheets working out our position and planning what coast we should make
-for. It was a nice question, for the Cape de Verdes were about five
-hundred miles to the north of us, and the African coast about seven
-hundred to the east. On the whole, as the wind was coming round to the
-north, we thought that Sierra Leone might be best, and turned our head
-in that direction, the bark being at that time nearly hull down on our
-starboard quarter. Suddenly as we looked at her we saw a dense black
-cloud of smoke shoot up from her, which hung like a monstrous tree upon
-the sky line. A few seconds later a roar like thunder burst upon our
-ears, and as the smoke thinned away there was no sign left of the
-_Gloria Scott_. In an instant we swept the boat's head round again and
-pulled with all our strength for the place where the haze still trailing
-over the water marked the scene of this catastrophe.
-
-"'It was a long hour before we reached it, and at first we feared that
-we had come too late to save any one. A splintered boat and a number of
-crates and fragments of spars rising and falling on the waves showed us
-where the vessel had foundered; but there was no sign of life, and we
-had turned away in despair when we heard a cry for help, and saw at some
-distance a piece of wreckage with a man lying stretched across it. When
-we pulled him aboard the boat he proved to be a young seaman of the
-name of Hudson, who was so burned and exhausted that he could give us no
-account of what had happened until the following morning.
-
-"'It seemed that after we had left, Prendergast and his gang had
-proceeded to put to death the five remaining prisoners. The two warders
-had been shot and thrown overboard, and so also had the third mate.
-Prendergast then descended into the 'tween-decks and with his own hands
-cut the throat of the unfortunate surgeon. There only remained the first
-mate, who was a bold and active man. When he saw the convict approaching
-him with the bloody knife in his hand he kicked off his bonds, which he
-had somehow contrived to loosen, and rushing down the deck he plunged
-into the after-hold. A dozen convicts, who descended with their pistols
-in search of him, found him with a match-box in his hand seated beside
-an open powder-barrel, which was one of a hundred carried on board, and
-swearing that he would blow all hands up if he were in any way molested.
-An instant later the explosion occurred, though Hudson thought it was
-caused by the misdirected bullet of one of the convicts rather than the
-mate's match. Be the cause what it may, it was the end of the _Gloria
-Scott_ and of the rabble who held command of her.
-
-"'Such, in a few words, my dear boy, is the history of this terrible
-business in which I was involved. Next day we were picked up by the brig
-_Hotspur_, bound for Australia, whose captain found no difficulty in
-believing that we were the survivors of a passenger ship which had
-foundered. The transport ship Gloria Scott was set down by the Admiralty
-as being lost at sea, and no word has ever leaked out as to her true
-fate. After an excellent voyage the _Hotspur_ landed us at Sydney, where
-Evans and I changed our names and made our way to the diggings,
-where, among the crowds who were gathered from all nations, we had no
-difficulty in losing our former identities. The rest I need not relate.
-We prospered, we traveled, we came back as rich colonials to England,
-and we bought country estates. For more than twenty years we have
-led peaceful and useful lives, and we hoped that our past was forever
-buried. Imagine, then, my feelings when in the seaman who came to us I
-recognized instantly the man who had been picked off the wreck. He had
-tracked us down somehow, and had set himself to live upon our fears. You
-will understand now how it was that I strove to keep the peace with him,
-and you will in some measure sympathize with me in the fears which fill
-me, now that he has gone from me to his other victim with threats upon
-his tongue.'
-
-"Underneath is written in a hand so shaky as to be hardly legible,
-'Beddoes writes in cipher to say H. Has told all. Sweet Lord, have mercy
-on our souls!'
-
-"That was the narrative which I read that night to young Trevor, and I
-think, Watson, that under the circumstances it was a dramatic one.
-The good fellow was heart-broken at it, and went out to the Terai tea
-planting, where I hear that he is doing well. As to the sailor and
-Beddoes, neither of them was ever heard of again after that day on which
-the letter of warning was written. They both disappeared utterly and
-completely. No complaint had been lodged with the police, so that
-Beddoes had mistaken a threat for a deed. Hudson had been seen lurking
-about, and it was believed by the police that he had done away with
-Beddoes and had fled. For myself I believe that the truth was exactly
-the opposite. I think that it is most probable that Beddoes, pushed to
-desperation and believing himself to have been already betrayed, had
-revenged himself upon Hudson, and had fled from the country with as much
-money as he could lay his hands on. Those are the facts of the case,
-Doctor, and if they are of any use to your collection, I am sure that
-they are very heartily at your service."
-
-
-
-
-Adventure V. The Musgrave Ritual
-
-
-An anomaly which often struck me in the character of my friend Sherlock
-Holmes was that, although in his methods of thought he was the neatest
-and most methodical of mankind, and although also he affected a certain
-quiet primness of dress, he was none the less in his personal habits one
-of the most untidy men that ever drove a fellow-lodger to distraction.
-Not that I am in the least conventional in that respect myself. The
-rough-and-tumble work in Afghanistan, coming on the top of a natural
-Bohemianism of disposition, has made me rather more lax than befits a
-medical man. But with me there is a limit, and when I find a man who
-keeps his cigars in the coal-scuttle, his tobacco in the toe end of
-a Persian slipper, and his unanswered correspondence transfixed by a
-jack-knife into the very centre of his wooden mantelpiece, then I begin
-to give myself virtuous airs. I have always held, too, that pistol
-practice should be distinctly an open-air pastime; and when Holmes, in
-one of his queer humors, would sit in an arm-chair with his hair-trigger
-and a hundred Boxer cartridges, and proceed to adorn the opposite
-wall with a patriotic V. R. done in bullet-pocks, I felt strongly that
-neither the atmosphere nor the appearance of our room was improved by
-it.
-
-Our chambers were always full of chemicals and of criminal relics which
-had a way of wandering into unlikely positions, and of turning up in
-the butter-dish or in even less desirable places. But his papers were
-my great crux. He had a horror of destroying documents, especially those
-which were connected with his past cases, and yet it was only once in
-every year or two that he would muster energy to docket and arrange
-them; for, as I have mentioned somewhere in these incoherent memoirs,
-the outbursts of passionate energy when he performed the remarkable
-feats with which his name is associated were followed by reactions of
-lethargy during which he would lie about with his violin and his books,
-hardly moving save from the sofa to the table. Thus month after month
-his papers accumulated, until every corner of the room was stacked with
-bundles of manuscript which were on no account to be burned, and which
-could not be put away save by their owner. One winter's night, as we
-sat together by the fire, I ventured to suggest to him that, as he had
-finished pasting extracts into his common-place book, he might employ
-the next two hours in making our room a little more habitable. He could
-not deny the justice of my request, so with a rather rueful face he went
-off to his bedroom, from which he returned presently pulling a large tin
-box behind him. This he placed in the middle of the floor and, squatting
-down upon a stool in front of it, he threw back the lid. I could see
-that it was already a third full of bundles of paper tied up with red
-tape into separate packages.
-
-"There are cases enough here, Watson," said he, looking at me with
-mischievous eyes. "I think that if you knew all that I had in this box
-you would ask me to pull some out instead of putting others in."
-
-"These are the records of your early work, then?" I asked. "I have often
-wished that I had notes of those cases."
-
-"Yes, my boy, these were all done prematurely before my biographer
-had come to glorify me." He lifted bundle after bundle in a tender,
-caressing sort of way. "They are not all successes, Watson," said he.
-"But there are some pretty little problems among them. Here's the record
-of the Tarleton murders, and the case of Vamberry, the wine merchant,
-and the adventure of the old Russian woman, and the singular affair
-of the aluminium crutch, as well as a full account of Ricoletti of the
-club-foot, and his abominable wife. And here--ah, now, this really is
-something a little recherché."
-
-He dived his arm down to the bottom of the chest, and brought up a small
-wooden box with a sliding lid, such as children's toys are kept in. From
-within he produced a crumpled piece of paper, and old-fashioned brass
-key, a peg of wood with a ball of string attached to it, and three rusty
-old disks of metal.
-
-"Well, my boy, what do you make of this lot?" he asked, smiling at my
-expression.
-
-"It is a curious collection."
-
-"Very curious, and the story that hangs round it will strike you as
-being more curious still."
-
-"These relics have a history then?"
-
-"So much so that they are history."
-
-"What do you mean by that?"
-
-Sherlock Holmes picked them up one by one, and laid them along the edge
-of the table. Then he reseated himself in his chair and looked them over
-with a gleam of satisfaction in his eyes.
-
-"These," said he, "are all that I have left to remind me of the
-adventure of the Musgrave Ritual."
-
-I had heard him mention the case more than once, though I had never been
-able to gather the details. "I should be so glad," said I, "if you would
-give me an account of it."
-
-"And leave the litter as it is?" he cried, mischievously. "Your tidiness
-won't bear much strain after all, Watson. But I should be glad that you
-should add this case to your annals, for there are points in it which
-make it quite unique in the criminal records of this or, I believe,
-of any other country. A collection of my trifling achievements would
-certainly be incomplete which contained no account of this very singular
-business.
-
-"You may remember how the affair of the _Gloria Scott_, and my
-conversation with the unhappy man whose fate I told you of, first turned
-my attention in the direction of the profession which has become my
-life's work. You see me now when my name has become known far and
-wide, and when I am generally recognized both by the public and by the
-official force as being a final court of appeal in doubtful cases.
-Even when you knew me first, at the time of the affair which you have
-commemorated in 'A Study in Scarlet,' I had already established a
-considerable, though not a very lucrative, connection. You can hardly
-realize, then, how difficult I found it at first, and how long I had to
-wait before I succeeded in making any headway.
-
-"When I first came up to London I had rooms in Montague Street, just
-round the corner from the British Museum, and there I waited, filling in
-my too abundant leisure time by studying all those branches of science
-which might make me more efficient. Now and again cases came in my way,
-principally through the introduction of old fellow-students, for during
-my last years at the University there was a good deal of talk there
-about myself and my methods. The third of these cases was that of the
-Musgrave Ritual, and it is to the interest which was aroused by that
-singular chain of events, and the large issues which proved to be at
-stake, that I trace my first stride towards the position which I now
-hold.
-
-"Reginald Musgrave had been in the same college as myself, and I had
-some slight acquaintance with him. He was not generally popular among
-the undergraduates, though it always seemed to me that what was set down
-as pride was really an attempt to cover extreme natural diffidence.
-In appearance he was a man of exceedingly aristocratic type, thin,
-high-nosed, and large-eyed, with languid and yet courtly manners. He was
-indeed a scion of one of the very oldest families in the kingdom,
-though his branch was a cadet one which had separated from the northern
-Musgraves some time in the sixteenth century, and had established itself
-in western Sussex, where the Manor House of Hurlstone is perhaps the
-oldest inhabited building in the county. Something of his birth place
-seemed to cling to the man, and I never looked at his pale, keen face
-or the poise of his head without associating him with gray archways and
-mullioned windows and all the venerable wreckage of a feudal keep. Once
-or twice we drifted into talk, and I can remember that more than once he
-expressed a keen interest in my methods of observation and inference.
-
-"For four years I had seen nothing of him until one morning he walked
-into my room in Montague Street. He had changed little, was dressed like
-a young man of fashion--he was always a bit of a dandy--and preserved
-the same quiet, suave manner which had formerly distinguished him.
-
-"'How has all gone with you Musgrave?' I asked, after we had cordially
-shaken hands.
-
-"'You probably heard of my poor father's death,' said he; 'he was
-carried off about two years ago. Since then I have of course had the
-Hurlstone estates to manage, and as I am member for my district as well,
-my life has been a busy one. But I understand, Holmes, that you are
-turning to practical ends those powers with which you used to amaze us?'
-
-"'Yes,' said I, 'I have taken to living by my wits.'
-
-"'I am delighted to hear it, for your advice at present would be
-exceedingly valuable to me. We have had some very strange doings at
-Hurlstone, and the police have been able to throw no light upon the
-matter. It is really the most extraordinary and inexplicable business.'
-
-"You can imagine with what eagerness I listened to him, Watson, for
-the very chance for which I had been panting during all those months
-of inaction seemed to have come within my reach. In my inmost heart I
-believed that I could succeed where others failed, and now I had the
-opportunity to test myself.
-
-"'Pray, let me have the details,' I cried.
-
-"Reginald Musgrave sat down opposite to me, and lit the cigarette which
-I had pushed towards him.
-
-"'You must know,' said he, 'that though I am a bachelor, I have to keep
-up a considerable staff of servants at Hurlstone, for it is a rambling
-old place, and takes a good deal of looking after. I preserve, too, and
-in the pheasant months I usually have a house-party, so that it would
-not do to be short-handed. Altogether there are eight maids, the cook,
-the butler, two footmen, and a boy. The garden and the stables of course
-have a separate staff.
-
-"'Of these servants the one who had been longest in our service was
-Brunton the butler. He was a young school-master out of place when he
-was first taken up by my father, but he was a man of great energy and
-character, and he soon became quite invaluable in the household. He was
-a well-grown, handsome man, with a splendid forehead, and though he has
-been with us for twenty years he cannot be more than forty now. With
-his personal advantages and his extraordinary gifts--for he can speak
-several languages and play nearly every musical instrument--it is
-wonderful that he should have been satisfied so long in such a position,
-but I suppose that he was comfortable, and lacked energy to make any
-change. The butler of Hurlstone is always a thing that is remembered by
-all who visit us.
-
-"'But this paragon has one fault. He is a bit of a Don Juan, and you can
-imagine that for a man like him it is not a very difficult part to play
-in a quiet country district. When he was married it was all right, but
-since he has been a widower we have had no end of trouble with him. A
-few months ago we were in hopes that he was about to settle down again
-for he became engaged to Rachel Howells, our second house-maid; but he
-has thrown her over since then and taken up with Janet Tregellis, the
-daughter of the head game-keeper. Rachel--who is a very good girl, but
-of an excitable Welsh temperament--had a sharp touch of brain-fever,
-and goes about the house now--or did until yesterday--like a black-eyed
-shadow of her former self. That was our first drama at Hurlstone; but a
-second one came to drive it from our minds, and it was prefaced by the
-disgrace and dismissal of butler Brunton.
-
-"'This was how it came about. I have said that the man was intelligent,
-and this very intelligence has caused his ruin, for it seems to have
-led to an insatiable curiosity about things which did not in the least
-concern him. I had no idea of the lengths to which this would carry him,
-until the merest accident opened my eyes to it.
-
-"'I have said that the house is a rambling one. One day last week--on
-Thursday night, to be more exact--I found that I could not sleep,
-having foolishly taken a cup of strong café noir after my dinner. After
-struggling against it until two in the morning, I felt that it was quite
-hopeless, so I rose and lit the candle with the intention of continuing
-a novel which I was reading. The book, however, had been left in the
-billiard-room, so I pulled on my dressing-gown and started off to get
-it.
-
-"'In order to reach the billiard-room I had to descend a flight of
-stairs and then to cross the head of a passage which led to the library
-and the gun-room. You can imagine my surprise when, as I looked down
-this corridor, I saw a glimmer of light coming from the open door of the
-library. I had myself extinguished the lamp and closed the door before
-coming to bed. Naturally my first thought was of burglars. The corridors
-at Hurlstone have their walls largely decorated with trophies of old
-weapons. From one of these I picked a battle-axe, and then, leaving my
-candle behind me, I crept on tiptoe down the passage and peeped in at
-the open door.
-
-"'Brunton, the butler, was in the library. He was sitting, fully
-dressed, in an easy-chair, with a slip of paper which looked like a
-map upon his knee, and his forehead sunk forward upon his hand in deep
-thought. I stood dumb with astonishment, watching him from the darkness.
-A small taper on the edge of the table shed a feeble light which
-sufficed to show me that he was fully dressed. Suddenly, as I looked,
-he rose from his chair, and walking over to a bureau at the side, he
-unlocked it and drew out one of the drawers. From this he took a paper,
-and returning to his seat he flattened it out beside the taper on the
-edge of the table, and began to study it with minute attention. My
-indignation at this calm examination of our family documents overcame
-me so far that I took a step forward, and Brunton, looking up, saw me
-standing in the doorway. He sprang to his feet, his face turned livid
-with fear, and he thrust into his breast the chart-like paper which he
-had been originally studying.
-
-"'"So!" said I. "This is how you repay the trust which we have reposed
-in you. You will leave my service to-morrow."
-
-"'He bowed with the look of a man who is utterly crushed, and slunk past
-me without a word. The taper was still on the table, and by its light
-I glanced to see what the paper was which Brunton had taken from the
-bureau. To my surprise it was nothing of any importance at all,
-but simply a copy of the questions and answers in the singular old
-observance called the Musgrave Ritual. It is a sort of ceremony peculiar
-to our family, which each Musgrave for centuries past has gone through
-on his coming of age--a thing of private interest, and perhaps of some
-little importance to the archaeologist, like our own blazonings and
-charges, but of no practical use whatever.'
-
-"'We had better come back to the paper afterwards,' said I.
-
-"'If you think it really necessary,' he answered, with some hesitation.
-'To continue my statement, however: I relocked the bureau, using the key
-which Brunton had left, and I had turned to go when I was surprised to
-find that the butler had returned, and was standing before me.
-
-"'"Mr. Musgrave, sir," he cried, in a voice which was hoarse with
-emotion, "I can't bear disgrace, sir. I've always been proud above my
-station in life, and disgrace would kill me. My blood will be on your
-head, sir--it will, indeed--if you drive me to despair. If you cannot
-keep me after what has passed, then for God's sake let me give you
-notice and leave in a month, as if of my own free will. I could stand
-that, Mr. Musgrave, but not to be cast out before all the folk that I
-know so well."
-
-"'"You don't deserve much consideration, Brunton," I answered. "Your
-conduct has been most infamous. However, as you have been a long time in
-the family, I have no wish to bring public disgrace upon you. A month,
-however is too long. Take yourself away in a week, and give what reason
-you like for going."
-
-"'"Only a week, sir?" he cried, in a despairing voice. "A fortnight--say
-at least a fortnight!"
-
-"'"A week," I repeated, "and you may consider yourself to have been very
-leniently dealt with."
-
-"'He crept away, his face sunk upon his breast, like a broken man, while
-I put out the light and returned to my room.
-
-
-"'"For two days after this Brunton was most assiduous in his attention
-to his duties. I made no allusion to what had passed, and waited with
-some curiosity to see how he would cover his disgrace. On the third
-morning, however he did not appear, as was his custom, after breakfast
-to receive my instructions for the day. As I left the dining-room I
-happened to meet Rachel Howells, the maid. I have told you that she had
-only recently recovered from an illness, and was looking so wretchedly
-pale and wan that I remonstrated with her for being at work.
-
-"'"You should be in bed," I said. "Come back to your duties when you are
-stronger."
-
-"'She looked at me with so strange an expression that I began to suspect
-that her brain was affected.
-
-"'"I am strong enough, Mr. Musgrave," said she.
-
-"'"We will see what the doctor says," I answered. "You must stop work
-now, and when you go downstairs just say that I wish to see Brunton."
-
-"'"The butler is gone," said she.
-
-"'"Gone! Gone where?"
-
-"'"He is gone. No one has seen him. He is not in his room. Oh, yes, he
-is gone, he is gone!" She fell back against the wall with shriek after
-shriek of laughter, while I, horrified at this sudden hysterical attack,
-rushed to the bell to summon help. The girl was taken to her room, still
-screaming and sobbing, while I made inquiries about Brunton. There was
-no doubt about it that he had disappeared. His bed had not been slept
-in, he had been seen by no one since he had retired to his room the
-night before, and yet it was difficult to see how he could have left
-the house, as both windows and doors were found to be fastened in the
-morning. His clothes, his watch, and even his money were in his room,
-but the black suit which he usually wore was missing. His slippers,
-too, were gone, but his boots were left behind. Where then could butler
-Brunton have gone in the night, and what could have become of him now?
-
-"'Of course we searched the house from cellar to garret, but there was
-no trace of him. It is, as I have said, a labyrinth of an old house,
-especially the original wing, which is now practically uninhabited; but
-we ransacked every room and cellar without discovering the least sign
-of the missing man. It was incredible to me that he could have gone away
-leaving all his property behind him, and yet where could he be? I called
-in the local police, but without success. Rain had fallen on the night
-before and we examined the lawn and the paths all round the house, but
-in vain. Matters were in this state, when a new development quite drew
-our attention away from the original mystery.
-
-"'For two days Rachel Howells had been so ill, sometimes delirious,
-sometimes hysterical, that a nurse had been employed to sit up with her
-at night. On the third night after Brunton's disappearance, the nurse,
-finding her patient sleeping nicely, had dropped into a nap in the
-arm-chair, when she woke in the early morning to find the bed empty, the
-window open, and no signs of the invalid. I was instantly aroused, and,
-with the two footmen, started off at once in search of the missing girl.
-It was not difficult to tell the direction which she had taken, for,
-starting from under her window, we could follow her footmarks easily
-across the lawn to the edge of the mere, where they vanished close to
-the gravel path which leads out of the grounds. The lake there is eight
-feet deep, and you can imagine our feelings when we saw that the trail
-of the poor demented girl came to an end at the edge of it.
-
-"'Of course, we had the drags at once, and set to work to recover the
-remains, but no trace of the body could we find. On the other hand, we
-brought to the surface an object of a most unexpected kind. It was a
-linen bag which contained within it a mass of old rusted and discolored
-metal and several dull-colored pieces of pebble or glass. This strange
-find was all that we could get from the mere, and, although we made
-every possible search and inquiry yesterday, we know nothing of the fate
-either of Rachel Howells or of Richard Brunton. The county police are at
-their wits' end, and I have come up to you as a last resource.'
-
-"You can imagine, Watson, with what eagerness I listened to this
-extraordinary sequence of events, and endeavored to piece them together,
-and to devise some common thread upon which they might all hang. The
-butler was gone. The maid was gone. The maid had loved the butler, but
-had afterwards had cause to hate him. She was of Welsh blood, fiery
-and passionate. She had been terribly excited immediately after his
-disappearance. She had flung into the lake a bag containing some
-curious contents. These were all factors which had to be taken into
-consideration, and yet none of them got quite to the heart of the
-matter. What was the starting-point of this chain of events? There lay
-the end of this tangled line.
-
-"'I must see that paper, Musgrave,' said I, 'which this butler of your
-thought it worth his while to consult, even at the risk of the loss of
-his place.'
-
-"'It is rather an absurd business, this ritual of ours,' he answered.
-'But it has at least the saving grace of antiquity to excuse it. I have
-a copy of the questions and answers here if you care to run your eye
-over them.'
-
-"He handed me the very paper which I have here, Watson, and this is the
-strange catechism to which each Musgrave had to submit when he came to
-man's estate. I will read you the questions and answers as they stand.
-
-"'Whose was it?'
-
-"'His who is gone.'
-
-"'Who shall have it?'
-
-"'He who will come.'
-
-"'Where was the sun?'
-
-"'Over the oak.'
-
-"'Where was the shadow?'
-
-"'Under the elm.'
-
-"How was it stepped?'
-
-"'North by ten and by ten, east by five and by five, south by two and by
-two, west by one and by one, and so under.'
-
-"'What shall we give for it?'
-
-"'All that is ours.'
-
-"'Why should we give it?'
-
-"'For the sake of the trust.'
-
-"'The original has no date, but is in the spelling of the middle of the
-seventeenth century,' remarked Musgrave. 'I am afraid, however, that it
-can be of little help to you in solving this mystery.'
-
-"'At least,' said I, 'it gives us another mystery, and one which is even
-more interesting than the first. It may be that the solution of the one
-may prove to be the solution of the other. You will excuse me, Musgrave,
-if I say that your butler appears to me to have been a very clever man,
-and to have had a clearer insight than ten generations of his masters.'
-
-"'I hardly follow you,' said Musgrave. 'The paper seems to me to be of
-no practical importance.'
-
-"'But to me it seems immensely practical, and I fancy that Brunton took
-the same view. He had probably seen it before that night on which you
-caught him.'
-
-"'It is very possible. We took no pains to hide it.'
-
-"'He simply wished, I should imagine, to refresh his memory upon that
-last occasion. He had, as I understand, some sort of map or chart which
-he was comparing with the manuscript, and which he thrust into his
-pocket when you appeared.'
-
-"'That is true. But what could he have to do with this old family custom
-of ours, and what does this rigmarole mean?'
-
-"'I don't think that we should have much difficulty in determining
-that,' said I; 'with your permission we will take the first train down
-to Sussex, and go a little more deeply into the matter upon the spot.'
-
-
-"The same afternoon saw us both at Hurlstone. Possibly you have seen
-pictures and read descriptions of the famous old building, so I will
-confine my account of it to saying that it is built in the shape of
-an L, the long arm being the more modern portion, and the shorter the
-ancient nucleus, from which the other had developed. Over the low,
-heavily-lintelled door, in the centre of this old part, is chiseled the
-date, 1607, but experts are agreed that the beams and stone-work are
-really much older than this. The enormously thick walls and tiny windows
-of this part had in the last century driven the family into building the
-new wing, and the old one was used now as a store-house and a cellar,
-when it was used at all. A splendid park with fine old timber surrounds
-the house, and the lake, to which my client had referred, lay close to
-the avenue, about two hundred yards from the building.
-
-"I was already firmly convinced, Watson, that there were not three
-separate mysteries here, but one only, and that if I could read the
-Musgrave Ritual aright I should hold in my hand the clue which would
-lead me to the truth concerning both the butler Brunton and the maid
-Howells. To that then I turned all my energies. Why should this servant
-be so anxious to master this old formula? Evidently because he saw
-something in it which had escaped all those generations of country
-squires, and from which he expected some personal advantage. What was it
-then, and how had it affected his fate?
-
-"It was perfectly obvious to me, on reading the ritual, that the
-measurements must refer to some spot to which the rest of the document
-alluded, and that if we could find that spot, we should be in a fair way
-towards finding what the secret was which the old Musgraves had thought
-it necessary to embalm in so curious a fashion. There were two guides
-given us to start with, an oak and an elm. As to the oak there could be
-no question at all. Right in front of the house, upon the left-hand
-side of the drive, there stood a patriarch among oaks, one of the most
-magnificent trees that I have ever seen.
-
-"'That was there when your ritual was drawn up,' said I, as we drove
-past it.
-
-"'It was there at the Norman Conquest in all probability,' he answered.
-'It has a girth of twenty-three feet.'
-
-"'Have you any old elms?' I asked.
-
-"'There used to be a very old one over yonder but it was struck by
-lightning ten years ago, and we cut down the stump.'
-
-"'You can see where it used to be?'
-
-"'Oh, yes.'
-
-"'There are no other elms?'
-
-"'No old ones, but plenty of beeches.'
-
-"'I should like to see where it grew.'
-
-"We had driven up in a dog-cart, and my client led me away at once,
-without our entering the house, to the scar on the lawn where the
-elm had stood. It was nearly midway between the oak and the house. My
-investigation seemed to be progressing.
-
-"'I suppose it is impossible to find out how high the elm was?' I asked.
-
-"'I can give you it at once. It was sixty-four feet.'
-
-"'How do you come to know it?' I asked, in surprise.
-
-"'When my old tutor used to give me an exercise in trigonometry, it
-always took the shape of measuring heights. When I was a lad I worked
-out every tree and building in the estate.'
-
-"This was an unexpected piece of luck. My data were coming more quickly
-than I could have reasonably hoped.
-
-"'Tell me,' I asked, 'did your butler ever ask you such a question?'
-
-"Reginald Musgrave looked at me in astonishment. 'Now that you call it
-to my mind,' he answered, 'Brunton did ask me about the height of the
-tree some months ago, in connection with some little argument with the
-groom.'
-
-"This was excellent news, Watson, for it showed me that I was on the
-right road. I looked up at the sun. It was low in the heavens, and I
-calculated that in less than an hour it would lie just above the topmost
-branches of the old oak. One condition mentioned in the Ritual would
-then be fulfilled. And the shadow of the elm must mean the farther end
-of the shadow, otherwise the trunk would have been chosen as the guide.
-I had, then, to find where the far end of the shadow would fall when the
-sun was just clear of the oak."
-
-"That must have been difficult, Holmes, when the elm was no longer
-there."
-
-"Well, at least I knew that if Brunton could do it, I could also.
-Besides, there was no real difficulty. I went with Musgrave to his study
-and whittled myself this peg, to which I tied this long string with a
-knot at each yard. Then I took two lengths of a fishing-rod, which came
-to just six feet, and I went back with my client to where the elm had
-been. The sun was just grazing the top of the oak. I fastened the rod
-on end, marked out the direction of the shadow, and measured it. It was
-nine feet in length.
-
-"Of course the calculation now was a simple one. If a rod of six feet
-threw a shadow of nine, a tree of sixty-four feet would throw one of
-ninety-six, and the line of the one would of course be the line of the
-other. I measured out the distance, which brought me almost to the
-wall of the house, and I thrust a peg into the spot. You can imagine
-my exultation, Watson, when within two inches of my peg I saw a conical
-depression in the ground. I knew that it was the mark made by Brunton in
-his measurements, and that I was still upon his trail.
-
-"From this starting-point I proceeded to step, having first taken the
-cardinal points by my pocket-compass. Ten steps with each foot took me
-along parallel with the wall of the house, and again I marked my spot
-with a peg. Then I carefully paced off five to the east and two to the
-south. It brought me to the very threshold of the old door. Two steps
-to the west meant now that I was to go two paces down the stone-flagged
-passage, and this was the place indicated by the Ritual.
-
-"Never have I felt such a cold chill of disappointment, Watson. For a
-moment is seemed to me that there must be some radical mistake in my
-calculations. The setting sun shone full upon the passage floor, and I
-could see that the old, foot-worn gray stones with which it was paved
-were firmly cemented together, and had certainly not been moved for many
-a long year. Brunton had not been at work here. I tapped upon the floor,
-but it sounded the same all over, and there was no sign of any crack
-or crevice. But, fortunately, Musgrave, who had begun to appreciate the
-meaning of my proceedings, and who was now as excited as myself, took
-out his manuscript to check my calculation.
-
-"'And under,' he cried. 'You have omitted the "and under."'
-
-"I had thought that it meant that we were to dig, but now, of course,
-I saw at once that I was wrong. 'There is a cellar under this then?' I
-cried.
-
-"'Yes, and as old as the house. Down here, through this door.'
-
-"We went down a winding stone stair, and my companion, striking a match,
-lit a large lantern which stood on a barrel in the corner. In an instant
-it was obvious that we had at last come upon the true place, and that we
-had not been the only people to visit the spot recently.
-
-"It had been used for the storage of wood, but the billets, which had
-evidently been littered over the floor, were now piled at the sides, so
-as to leave a clear space in the middle. In this space lay a large and
-heavy flagstone with a rusted iron ring in the centre to which a thick
-shepherd's-check muffler was attached.
-
-"'By Jove!' cried my client. 'That's Brunton's muffler. I have seen it
-on him, and could swear to it. What has the villain been doing here?'
-
-"At my suggestion a couple of the county police were summoned to be
-present, and I then endeavored to raise the stone by pulling on the
-cravat. I could only move it slightly, and it was with the aid of one
-of the constables that I succeeded at last in carrying it to one side.
-A black hole yawned beneath into which we all peered, while Musgrave,
-kneeling at the side, pushed down the lantern.
-
-"A small chamber about seven feet deep and four feet square lay open to
-us. At one side of this was a squat, brass-bound wooden box, the lid of
-which was hinged upwards, with this curious old-fashioned key projecting
-from the lock. It was furred outside by a thick layer of dust, and damp
-and worms had eaten through the wood, so that a crop of livid fungi
-was growing on the inside of it. Several discs of metal, old coins
-apparently, such as I hold here, were scattered over the bottom of the
-box, but it contained nothing else.
-
-"At the moment, however, we had no thought for the old chest, for our
-eyes were riveted upon that which crouched beside it. It was the figure
-of a man, clad in a suit of black, who squatted down upon his hams with
-his forehead sunk upon the edge of the box and his two arms thrown out
-on each side of it. The attitude had drawn all the stagnant blood to
-the face, and no man could have recognized that distorted liver-colored
-countenance; but his height, his dress, and his hair were all sufficient
-to show my client, when we had drawn the body up, that it was indeed his
-missing butler. He had been dead some days, but there was no wound or
-bruise upon his person to show how he had met his dreadful end. When
-his body had been carried from the cellar we found ourselves still
-confronted with a problem which was almost as formidable as that with
-which we had started.
-
-"I confess that so far, Watson, I had been disappointed in my
-investigation. I had reckoned upon solving the matter when once I had
-found the place referred to in the Ritual; but now I was there, and was
-apparently as far as ever from knowing what it was which the family had
-concealed with such elaborate precautions. It is true that I had thrown
-a light upon the fate of Brunton, but now I had to ascertain how that
-fate had come upon him, and what part had been played in the matter by
-the woman who had disappeared. I sat down upon a keg in the corner and
-thought the whole matter carefully over.
-
-"You know my methods in such cases, Watson. I put myself in the man's
-place and, having first gauged his intelligence, I try to imagine how I
-should myself have proceeded under the same circumstances. In this
-case the matter was simplified by Brunton's intelligence being quite
-first-rate, so that it was unnecessary to make any allowance for the
-personal equation, as the astronomers have dubbed it. He knew that
-something valuable was concealed. He had spotted the place. He found
-that the stone which covered it was just too heavy for a man to move
-unaided. What would he do next? He could not get help from outside, even
-if he had some one whom he could trust, without the unbarring of doors
-and considerable risk of detection. It was better, if he could, to have
-his helpmate inside the house. But whom could he ask? This girl had been
-devoted to him. A man always finds it hard to realize that he may have
-finally lost a woman's love, however badly he may have treated her. He
-would try by a few attentions to make his peace with the girl Howells,
-and then would engage her as his accomplice. Together they would come at
-night to the cellar, and their united force would suffice to raise the
-stone. So far I could follow their actions as if I had actually seen
-them.
-
-"But for two of them, and one a woman, it must have been heavy work the
-raising of that stone. A burly Sussex policeman and I had found it no
-light job. What would they do to assist them? Probably what I should
-have done myself. I rose and examined carefully the different billets
-of wood which were scattered round the floor. Almost at once I came
-upon what I expected. One piece, about three feet in length, had a very
-marked indentation at one end, while several were flattened at the sides
-as if they had been compressed by some considerable weight. Evidently,
-as they had dragged the stone up they had thrust the chunks of wood into
-the chink, until at last, when the opening was large enough to crawl
-through, they would hold it open by a billet placed lengthwise, which
-might very well become indented at the lower end, since the whole weight
-of the stone would press it down on to the edge of this other slab. So
-far I was still on safe ground.
-
-"And now how was I to proceed to reconstruct this midnight drama?
-Clearly, only one could fit into the hole, and that one was Brunton. The
-girl must have waited above. Brunton then unlocked the box, handed up
-the contents presumably--since they were not to be found--and then--and
-then what happened?
-
-"What smouldering fire of vengeance had suddenly sprung into flame in
-this passionate Celtic woman's soul when she saw the man who had wronged
-her--wronged her, perhaps, far more than we suspected--in her power?
-Was it a chance that the wood had slipped, and that the stone had shut
-Brunton into what had become his sepulchre? Had she only been guilty of
-silence as to his fate? Or had some sudden blow from her hand dashed the
-support away and sent the slab crashing down into its place? Be that
-as it might, I seemed to see that woman's figure still clutching at her
-treasure trove and flying wildly up the winding stair, with her ears
-ringing perhaps with the muffled screams from behind her and with the
-drumming of frenzied hands against the slab of stone which was choking
-her faithless lover's life out.
-
-"Here was the secret of her blanched face, her shaken nerves, her peals
-of hysterical laughter on the next morning. But what had been in the
-box? What had she done with that? Of course, it must have been the old
-metal and pebbles which my client had dragged from the mere. She had
-thrown them in there at the first opportunity to remove the last trace
-of her crime.
-
-"For twenty minutes I had sat motionless, thinking the matter out.
-Musgrave still stood with a very pale face, swinging his lantern and
-peering down into the hole.
-
-"'These are coins of Charles the First,' said he, holding out the few
-which had been in the box; 'you see we were right in fixing our date for
-the Ritual.'
-
-"'We may find something else of Charles the First,' I cried, as the
-probable meaning of the first two questions of the Ritual broke suddenly
-upon me. 'Let me see the contents of the bag which you fished from the
-mere.'
-
-
-"We ascended to his study, and he laid the debris before me. I could
-understand his regarding it as of small importance when I looked at it,
-for the metal was almost black and the stones lustreless and dull. I
-rubbed one of them on my sleeve, however, and it glowed afterwards like
-a spark in the dark hollow of my hand. The metal work was in the form
-of a double ring, but it had been bent and twisted out of its original
-shape.
-
-"'You must bear in mind,' said I, 'that the royal party made head in
-England even after the death of the king, and that when they at last
-fled they probably left many of their most precious possessions buried
-behind them, with the intention of returning for them in more peaceful
-times.'
-
-"'My ancestor, Sir Ralph Musgrave, was a prominent Cavalier and the
-right-hand man of Charles the Second in his wanderings,' said my friend.
-
-"'Ah, indeed!' I answered. 'Well now, I think that really should give us
-the last link that we wanted. I must congratulate you on coming into
-the possession, though in rather a tragic manner of a relic which is of
-great intrinsic value, but of even greater importance as an historical
-curiosity.'
-
-"'What is it, then?' he gasped in astonishment.
-
-"'It is nothing less than the ancient crown of the kings of England.'
-
-"'The crown!'
-
-"'Precisely. Consider what the Ritual says: How does it run? "Whose was
-it?" "His who is gone." That was after the execution of Charles. Then,
-"Who shall have it?" "He who will come." That was Charles the Second,
-whose advent was already foreseen. There can, I think, be no doubt that
-this battered and shapeless diadem once encircled the brows of the royal
-Stuarts.'
-
-"'And how came it in the pond?'
-
-"'Ah, that is a question that will take some time to answer.' And with
-that I sketched out to him the whole long chain of surmise and of proof
-which I had constructed. The twilight had closed in and the moon was
-shining brightly in the sky before my narrative was finished.
-
-"'And how was it then that Charles did not get his crown when he
-returned?' asked Musgrave, pushing back the relic into its linen bag.
-
-"'Ah, there you lay your finger upon the one point which we shall
-probably never be able to clear up. It is likely that the Musgrave who
-held the secret died in the interval, and by some oversight left this
-guide to his descendant without explaining the meaning of it. From that
-day to this it has been handed down from father to son, until at last
-it came within reach of a man who tore its secret out of it and lost his
-life in the venture.'
-
-
-"And that's the story of the Musgrave Ritual, Watson. They have the
-crown down at Hurlstone--though they had some legal bother and a
-considerable sum to pay before they were allowed to retain it. I am sure
-that if you mentioned my name they would be happy to show it to you. Of
-the woman nothing was ever heard, and the probability is that she got
-away out of England and carried herself and the memory of her crime to
-some land beyond the seas."
-
-
-
-
-Adventure VI. The Reigate Puzzle
-
-
-It was some time before the health of my friend Mr. Sherlock Holmes
-recovered from the strain caused by his immense exertions in the spring
-of '87. The whole question of the Netherland-Sumatra Company and of the
-colossal schemes of Baron Maupertuis are too recent in the minds of the
-public, and are too intimately concerned with politics and finance to be
-fitting subjects for this series of sketches. They led, however, in an
-indirect fashion to a singular and complex problem which gave my friend
-an opportunity of demonstrating the value of a fresh weapon among the
-many with which he waged his life-long battle against crime.
-
-On referring to my notes I see that it was upon the 14th of April that
-I received a telegram from Lyons which informed me that Holmes was
-lying ill in the Hotel Dulong. Within twenty-four hours I was in his
-sick-room, and was relieved to find that there was nothing formidable in
-his symptoms. Even his iron constitution, however, had broken down
-under the strain of an investigation which had extended over two months,
-during which period he had never worked less than fifteen hours a day,
-and had more than once, as he assured me, kept to his task for five days
-at a stretch. Even the triumphant issue of his labors could not save him
-from reaction after so terrible an exertion, and at a time when Europe
-was ringing with his name and when his room was literally ankle-deep
-with congratulatory telegrams I found him a prey to the blackest
-depression. Even the knowledge that he had succeeded where the police of
-three countries had failed, and that he had outmanoeuvred at every point
-the most accomplished swindler in Europe, was insufficient to rouse him
-from his nervous prostration.
-
-Three days later we were back in Baker Street together; but it was
-evident that my friend would be much the better for a change, and the
-thought of a week of spring time in the country was full of attractions
-to me also. My old friend, Colonel Hayter, who had come under my
-professional care in Afghanistan, had now taken a house near Reigate in
-Surrey, and had frequently asked me to come down to him upon a visit. On
-the last occasion he had remarked that if my friend would only come
-with me he would be glad to extend his hospitality to him also. A little
-diplomacy was needed, but when Holmes understood that the establishment
-was a bachelor one, and that he would be allowed the fullest freedom,
-he fell in with my plans and a week after our return from Lyons we were
-under the Colonel's roof. Hayter was a fine old soldier who had seen
-much of the world, and he soon found, as I had expected, that Holmes and
-he had much in common.
-
-On the evening of our arrival we were sitting in the Colonel's gun-room
-after dinner, Holmes stretched upon the sofa, while Hayter and I looked
-over his little armory of Eastern weapons.
-
-"By the way," said he suddenly, "I think I'll take one of these pistols
-upstairs with me in case we have an alarm."
-
-"An alarm!" said I.
-
-"Yes, we've had a scare in this part lately. Old Acton, who is one of
-our county magnates, had his house broken into last Monday. No great
-damage done, but the fellows are still at large."
-
-"No clue?" asked Holmes, cocking his eye at the Colonel.
-
-"None as yet. But the affair is a petty one, one of our little country
-crimes, which must seem too small for your attention, Mr. Holmes, after
-this great international affair."
-
-Holmes waved away the compliment, though his smile showed that it had
-pleased him.
-
-"Was there any feature of interest?"
-
-"I fancy not. The thieves ransacked the library and got very little for
-their pains. The whole place was turned upside down, drawers burst open,
-and presses ransacked, with the result that an odd volume of Pope's
-'Homer,' two plated candlesticks, an ivory letter-weight, a small oak
-barometer, and a ball of twine are all that have vanished."
-
-"What an extraordinary assortment!" I exclaimed.
-
-"Oh, the fellows evidently grabbed hold of everything they could get."
-
-Holmes grunted from the sofa.
-
-"The county police ought to make something of that," said he; "why, it
-is surely obvious that--"
-
-But I held up a warning finger.
-
-"You are here for a rest, my dear fellow. For Heaven's sake don't get
-started on a new problem when your nerves are all in shreds."
-
-Holmes shrugged his shoulders with a glance of comic resignation towards
-the Colonel, and the talk drifted away into less dangerous channels.
-
-It was destined, however, that all my professional caution should be
-wasted, for next morning the problem obtruded itself upon us in such a
-way that it was impossible to ignore it, and our country visit took a
-turn which neither of us could have anticipated. We were at breakfast
-when the Colonel's butler rushed in with all his propriety shaken out of
-him.
-
-"Have you heard the news, sir?" he gasped. "At the Cunningham's sir!"
-
-"Burglary!" cried the Colonel, with his coffee-cup in mid-air.
-
-"Murder!"
-
-The Colonel whistled. "By Jove!" said he. "Who's killed, then? The J.P.
-or his son?"
-
-"Neither, sir. It was William the coachman. Shot through the heart, sir,
-and never spoke again."
-
-"Who shot him, then?"
-
-"The burglar, sir. He was off like a shot and got clean away. He'd just
-broke in at the pantry window when William came on him and met his end
-in saving his master's property."
-
-"What time?"
-
-"It was last night, sir, somewhere about twelve."
-
-"Ah, then, we'll step over afterwards," said the Colonel, coolly
-settling down to his breakfast again. "It's a baddish business," he
-added when the butler had gone; "he's our leading man about here, is old
-Cunningham, and a very decent fellow too. He'll be cut up over this, for
-the man has been in his service for years and was a good servant. It's
-evidently the same villains who broke into Acton's."
-
-"And stole that very singular collection," said Holmes, thoughtfully.
-
-"Precisely."
-
-"Hum! It may prove the simplest matter in the world, but all the same
-at first glance this is just a little curious, is it not? A gang of
-burglars acting in the country might be expected to vary the scene of
-their operations, and not to crack two cribs in the same district within
-a few days. When you spoke last night of taking precautions I remember
-that it passed through my mind that this was probably the last parish
-in England to which the thief or thieves would be likely to turn their
-attention--which shows that I have still much to learn."
-
-"I fancy it's some local practitioner," said the Colonel. "In that case,
-of course, Acton's and Cunningham's are just the places he would go for,
-since they are far the largest about here."
-
-"And richest?"
-
-"Well, they ought to be, but they've had a lawsuit for some years which
-has sucked the blood out of both of them, I fancy. Old Acton has some
-claim on half Cunningham's estate, and the lawyers have been at it with
-both hands."
-
-"If it's a local villain there should not be much difficulty in running
-him down," said Holmes with a yawn. "All right, Watson, I don't intend
-to meddle."
-
-"Inspector Forrester, sir," said the butler, throwing open the door.
-
-The official, a smart, keen-faced young fellow, stepped into the room.
-"Good-morning, Colonel," said he; "I hope I don't intrude, but we hear
-that Mr. Holmes of Baker Street is here."
-
-The Colonel waved his hand towards my friend, and the Inspector bowed.
-
-"We thought that perhaps you would care to step across, Mr. Holmes."
-
-"The fates are against you, Watson," said he, laughing. "We were
-chatting about the matter when you came in, Inspector. Perhaps you
-can let us have a few details." As he leaned back in his chair in the
-familiar attitude I knew that the case was hopeless.
-
-"We had no clue in the Acton affair. But here we have plenty to go on,
-and there's no doubt it is the same party in each case. The man was
-seen."
-
-"Ah!"
-
-"Yes, sir. But he was off like a deer after the shot that killed poor
-William Kirwan was fired. Mr. Cunningham saw him from the bedroom
-window, and Mr. Alec Cunningham saw him from the back passage. It was
-quarter to twelve when the alarm broke out. Mr. Cunningham had just got
-into bed, and Mr. Alec was smoking a pipe in his dressing-gown. They
-both heard William the coachman calling for help, and Mr. Alec ran down
-to see what was the matter. The back door was open, and as he came to
-the foot of the stairs he saw two men wrestling together outside. One of
-them fired a shot, the other dropped, and the murderer rushed across the
-garden and over the hedge. Mr. Cunningham, looking out of his bedroom,
-saw the fellow as he gained the road, but lost sight of him at once. Mr.
-Alec stopped to see if he could help the dying man, and so the villain
-got clean away. Beyond the fact that he was a middle-sized man and
-dressed in some dark stuff, we have no personal clue; but we are making
-energetic inquiries, and if he is a stranger we shall soon find him
-out."
-
-"What was this William doing there? Did he say anything before he died?"
-
-"Not a word. He lives at the lodge with his mother, and as he was a
-very faithful fellow we imagine that he walked up to the house with
-the intention of seeing that all was right there. Of course this Acton
-business has put every one on their guard. The robber must have just
-burst open the door--the lock has been forced--when William came upon
-him."
-
-"Did William say anything to his mother before going out?"
-
-"She is very old and deaf, and we can get no information from her. The
-shock has made her half-witted, but I understand that she was never
-very bright. There is one very important circumstance, however. Look at
-this!"
-
-He took a small piece of torn paper from a note-book and spread it out
-upon his knee.
-
-"This was found between the finger and thumb of the dead man. It appears
-to be a fragment torn from a larger sheet. You will observe that the
-hour mentioned upon it is the very time at which the poor fellow met his
-fate. You see that his murderer might have torn the rest of the sheet
-from him or he might have taken this fragment from the murderer. It
-reads almost as though it were an appointment."
-
-Holmes took up the scrap of paper, a fac-simile of which is here
-reproduced.
-
-     d at quarter to twelve learn what maybe
-
-"Presuming that it is an appointment," continued the Inspector, "it is
-of course a conceivable theory that this William Kirwan--though he had
-the reputation of being an honest man, may have been in league with the
-thief. He may have met him there, may even have helped him to break in
-the door, and then they may have fallen out between themselves."
-
-"This writing is of extraordinary interest," said Holmes, who had been
-examining it with intense concentration. "These are much deeper waters
-than I had thought." He sank his head upon his hands, while the Inspector
-smiled at the effect which his case had had upon the famous London
-specialist.
-
-"Your last remark," said Holmes, presently, "as to the possibility of
-there being an understanding between the burglar and the servant, and
-this being a note of appointment from one to the other, is an ingenious
-and not entirely impossible supposition. But this writing opens up--" He
-sank his head into his hands again and remained for some minutes in the
-deepest thought. When he raised his face again, I was surprised to see
-that his cheek was tinged with color, and his eyes as bright as before
-his illness. He sprang to his feet with all his old energy.
-
-"I'll tell you what," said he, "I should like to have a quiet little
-glance into the details of this case. There is something in it which
-fascinates me extremely. If you will permit me, Colonel, I will leave my
-friend Watson and you, and I will step round with the Inspector to test
-the truth of one or two little fancies of mine. I will be with you again
-in half an hour."
-
-An hour and half had elapsed before the Inspector returned alone.
-
-"Mr. Holmes is walking up and down in the field outside," said he. "He
-wants us all four to go up to the house together."
-
-"To Mr. Cunningham's?"
-
-"Yes, sir."
-
-"What for?"
-
-The Inspector shrugged his shoulders. "I don't quite know, sir. Between
-ourselves, I think Mr. Holmes had not quite got over his illness yet.
-He's been behaving very queerly, and he is very much excited."
-
-"I don't think you need alarm yourself," said I. "I have usually found
-that there was method in his madness."
-
-"Some folks might say there was madness in his method," muttered the
-Inspector. "But he's all on fire to start, Colonel, so we had best go
-out if you are ready."
-
-We found Holmes pacing up and down in the field, his chin sunk upon his
-breast, and his hands thrust into his trousers pockets.
-
-"The matter grows in interest," said he. "Watson, your country-trip has
-been a distinct success. I have had a charming morning."
-
-"You have been up to the scene of the crime, I understand," said the
-Colonel.
-
-"Yes; the Inspector and I have made quite a little reconnaissance
-together."
-
-"Any success?"
-
-"Well, we have seen some very interesting things. I'll tell you what we
-did as we walk. First of all, we saw the body of this unfortunate man.
-He certainly died from a revolver wound as reported."
-
-"Had you doubted it, then?"
-
-"Oh, it is as well to test everything. Our inspection was not wasted. We
-then had an interview with Mr. Cunningham and his son, who were able
-to point out the exact spot where the murderer had broken through the
-garden-hedge in his flight. That was of great interest."
-
-"Naturally."
-
-"Then we had a look at this poor fellow's mother. We could get no
-information from her, however, as she is very old and feeble."
-
-"And what is the result of your investigations?"
-
-"The conviction that the crime is a very peculiar one. Perhaps our visit
-now may do something to make it less obscure. I think that we are both
-agreed, Inspector that the fragment of paper in the dead man's hand,
-bearing, as it does, the very hour of his death written upon it, is of
-extreme importance."
-
-"It should give a clue, Mr. Holmes."
-
-"It does give a clue. Whoever wrote that note was the man who brought
-William Kirwan out of his bed at that hour. But where is the rest of
-that sheet of paper?"
-
-"I examined the ground carefully in the hope of finding it," said the
-Inspector.
-
-"It was torn out of the dead man's hand. Why was some one so anxious to
-get possession of it? Because it incriminated him. And what would he do
-with it? Thrust it into his pocket, most likely, never noticing that a
-corner of it had been left in the grip of the corpse. If we could get
-the rest of that sheet it is obvious that we should have gone a long way
-towards solving the mystery."
-
-"Yes, but how can we get at the criminal's pocket before we catch the
-criminal?"
-
-"Well, well, it was worth thinking over. Then there is another obvious
-point. The note was sent to William. The man who wrote it could not have
-taken it; otherwise, of course, he might have delivered his own message
-by word of mouth. Who brought the note, then? Or did it come through the
-post?"
-
-"I have made inquiries," said the Inspector. "William received a letter
-by the afternoon post yesterday. The envelope was destroyed by him."
-
-"Excellent!" cried Holmes, clapping the Inspector on the back. "You've
-seen the postman. It is a pleasure to work with you. Well, here is the
-lodge, and if you will come up, Colonel, I will show you the scene of
-the crime."
-
-We passed the pretty cottage where the murdered man had lived, and
-walked up an oak-lined avenue to the fine old Queen Anne house, which
-bears the date of Malplaquet upon the lintel of the door. Holmes and
-the Inspector led us round it until we came to the side gate, which is
-separated by a stretch of garden from the hedge which lines the road. A
-constable was standing at the kitchen door.
-
-"Throw the door open, officer," said Holmes. "Now, it was on those
-stairs that young Mr. Cunningham stood and saw the two men struggling
-just where we are. Old Mr. Cunningham was at that window--the second on
-the left--and he saw the fellow get away just to the left of that bush.
-Then Mr. Alec ran out and knelt beside the wounded man. The ground is
-very hard, you see, and there are no marks to guide us." As he spoke two
-men came down the garden path, from round the angle of the house. The
-one was an elderly man, with a strong, deep-lined, heavy-eyed face; the
-other a dashing young fellow, whose bright, smiling expression and showy
-dress were in strange contract with the business which had brought us
-there.
-
-"Still at it, then?" said he to Holmes. "I thought you Londoners were
-never at fault. You don't seem to be so very quick, after all."
-
-"Ah, you must give us a little time," said Holmes good-humoredly.
-
-"You'll want it," said young Alec Cunningham. "Why, I don't see that we
-have any clue at all."
-
-"There's only one," answered the Inspector. "We thought that if we could
-only find--Good heavens, Mr. Holmes! What is the matter?"
-
-My poor friend's face had suddenly assumed the most dreadful expression.
-His eyes rolled upwards, his features writhed in agony, and with a
-suppressed groan he dropped on his face upon the ground. Horrified
-at the suddenness and severity of the attack, we carried him into the
-kitchen, where he lay back in a large chair, and breathed heavily for
-some minutes. Finally, with a shamefaced apology for his weakness, he
-rose once more.
-
-"Watson would tell you that I have only just recovered from a severe
-illness," he explained. "I am liable to these sudden nervous attacks."
-
-"Shall I send you home in my trap?" asked old Cunningham.
-
-"Well, since I am here, there is one point on which I should like to
-feel sure. We can very easily verify it."
-
-"What was it?"
-
-"Well, it seems to me that it is just possible that the arrival of
-this poor fellow William was not before, but after, the entrance of
-the burglary into the house. You appear to take it for granted that,
-although the door was forced, the robber never got in."
-
-"I fancy that is quite obvious," said Mr. Cunningham, gravely. "Why, my
-son Alec had not yet gone to bed, and he would certainly have heard any
-one moving about."
-
-"Where was he sitting?"
-
-"I was smoking in my dressing-room."
-
-"Which window is that?"
-
-"The last on the left next my father's."
-
-"Both of your lamps were lit, of course?"
-
-"Undoubtedly."
-
-"There are some very singular points here," said Holmes, smiling. "Is
-it not extraordinary that a burglary--and a burglar who had had some
-previous experience--should deliberately break into a house at a time
-when he could see from the lights that two of the family were still
-afoot?"
-
-"He must have been a cool hand."
-
-"Well, of course, if the case were not an odd one we should not have
-been driven to ask you for an explanation," said young Mr. Alec. "But as
-to your ideas that the man had robbed the house before William tackled
-him, I think it a most absurd notion. Wouldn't we have found the place
-disarranged, and missed the things which he had taken?"
-
-"It depends on what the things were," said Holmes. "You must remember
-that we are dealing with a burglar who is a very peculiar fellow, and
-who appears to work on lines of his own. Look, for example, at the
-queer lot of things which he took from Acton's--what was it?--a ball of
-string, a letter-weight, and I don't know what other odds and ends."
-
-"Well, we are quite in your hands, Mr. Holmes," said old Cunningham.
-"Anything which you or the Inspector may suggest will most certainly be
-done."
-
-"In the first place," said Holmes, "I should like you to offer a
-reward--coming from yourself, for the officials may take a little time
-before they would agree upon the sum, and these things cannot be done
-too promptly. I have jotted down the form here, if you would not mind
-signing it. Fifty pounds was quite enough, I thought."
-
-"I would willingly give five hundred," said the J.P., taking the slip
-of paper and the pencil which Holmes handed to him. "This is not quite
-correct, however," he added, glancing over the document.
-
-"I wrote it rather hurriedly."
-
-"You see you begin, 'Whereas, at about a quarter to one on Tuesday
-morning an attempt was made,' and so on. It was at a quarter to twelve,
-as a matter of fact."
-
-I was pained at the mistake, for I knew how keenly Holmes would feel any
-slip of the kind. It was his specialty to be accurate as to fact, but
-his recent illness had shaken him, and this one little incident was
-enough to show me that he was still far from being himself. He was
-obviously embarrassed for an instant, while the Inspector raised his
-eyebrows, and Alec Cunningham burst into a laugh. The old gentleman
-corrected the mistake, however, and handed the paper back to Holmes.
-
-"Get it printed as soon as possible," he said; "I think your idea is an
-excellent one."
-
-Holmes put the slip of paper carefully away into his pocket-book.
-
-"And now," said he, "it really would be a good thing that we should all
-go over the house together and make certain that this rather erratic
-burglar did not, after all, carry anything away with him."
-
-Before entering, Holmes made an examination of the door which had been
-forced. It was evident that a chisel or strong knife had been thrust
-in, and the lock forced back with it. We could see the marks in the wood
-where it had been pushed in.
-
-"You don't use bars, then?" he asked.
-
-"We have never found it necessary."
-
-"You don't keep a dog?"
-
-"Yes, but he is chained on the other side of the house."
-
-"When do the servants go to bed?"
-
-"About ten."
-
-"I understand that William was usually in bed also at that hour."
-
-"Yes."
-
-"It is singular that on this particular night he should have been up.
-Now, I should be very glad if you would have the kindness to show us
-over the house, Mr. Cunningham."
-
-A stone-flagged passage, with the kitchens branching away from it, led
-by a wooden staircase directly to the first floor of the house. It came
-out upon the landing opposite to a second more ornamental stair which
-came up from the front hall. Out of this landing opened the drawing-room
-and several bedrooms, including those of Mr. Cunningham and his son.
-Holmes walked slowly, taking keen note of the architecture of the house.
-I could tell from his expression that he was on a hot scent, and yet
-I could not in the least imagine in what direction his inferences were
-leading him.
-
-"My good sir," said Mr. Cunningham with some impatience, "this is surely
-very unnecessary. That is my room at the end of the stairs, and my
-son's is the one beyond it. I leave it to your judgment whether it was
-possible for the thief to have come up here without disturbing us."
-
-"You must try round and get on a fresh scent, I fancy," said the son
-with a rather malicious smile.
-
-"Still, I must ask you to humor me a little further. I should like, for
-example, to see how far the windows of the bedrooms command the front.
-This, I understand is your son's room"--he pushed open the door--"and
-that, I presume, is the dressing-room in which he sat smoking when the
-alarm was given. Where does the window of that look out to?" He stepped
-across the bedroom, pushed open the door, and glanced round the other
-chamber.
-
-"I hope that you are satisfied now?" said Mr. Cunningham, tartly.
-
-"Thank you, I think I have seen all that I wished."
-
-"Then if it is really necessary we can go into my room."
-
-"If it is not too much trouble."
-
-The J. P. shrugged his shoulders, and led the way into his own chamber,
-which was a plainly furnished and commonplace room. As we moved across
-it in the direction of the window, Holmes fell back until he and I were
-the last of the group. Near the foot of the bed stood a dish of oranges
-and a carafe of water. As we passed it Holmes, to my unutterable
-astonishment, leaned over in front of me and deliberately knocked the
-whole thing over. The glass smashed into a thousand pieces and the fruit
-rolled about into every corner of the room.
-
-"You've done it now, Watson," said he, coolly. "A pretty mess you've
-made of the carpet."
-
-I stooped in some confusion and began to pick up the fruit,
-understanding for some reason my companion desired me to take the blame
-upon myself. The others did the same, and set the table on its legs
-again.
-
-"Hullo!" cried the Inspector, "where's he got to?"
-
-Holmes had disappeared.
-
-"Wait here an instant," said young Alec Cunningham. "The fellow is off
-his head, in my opinion. Come with me, father, and see where he has got
-to!"
-
-They rushed out of the room, leaving the Inspector, the Colonel, and me
-staring at each other.
-
-"'Pon my word, I am inclined to agree with Master Alec," said the
-official. "It may be the effect of this illness, but it seems to me
-that--"
-
-His words were cut short by a sudden scream of "Help! Help! Murder!"
-With a thrill I recognized the voice of that of my friend. I rushed
-madly from the room on to the landing. The cries, which had sunk down
-into a hoarse, inarticulate shouting, came from the room which we had
-first visited. I dashed in, and on into the dressing-room beyond. The
-two Cunninghams were bending over the prostrate figure of Sherlock
-Holmes, the younger clutching his throat with both hands, while the
-elder seemed to be twisting one of his wrists. In an instant the three
-of us had torn them away from him, and Holmes staggered to his feet,
-very pale and evidently greatly exhausted.
-
-"Arrest these men, Inspector," he gasped.
-
-"On what charge?"
-
-"That of murdering their coachman, William Kirwan."
-
-The Inspector stared about him in bewilderment. "Oh, come now, Mr.
-Holmes," said he at last, "I'm sure you don't really mean to--"
-
-"Tut, man, look at their faces!" cried Holmes, curtly.
-
-Never certainly have I seen a plainer confession of guilt upon human
-countenances. The older man seemed numbed and dazed with a heavy, sullen
-expression upon his strongly-marked face. The son, on the other hand,
-had dropped all that jaunty, dashing style which had characterized him,
-and the ferocity of a dangerous wild beast gleamed in his dark eyes
-and distorted his handsome features. The Inspector said nothing, but,
-stepping to the door, he blew his whistle. Two of his constables came at
-the call.
-
-"I have no alternative, Mr. Cunningham," said he. "I trust that this may
-all prove to be an absurd mistake, but you can see that--Ah, would you?
-Drop it!" He struck out with his hand, and a revolver which the younger
-man was in the act of cocking clattered down upon the floor.
-
-"Keep that," said Holmes, quietly putting his foot upon it; "you will
-find it useful at the trial. But this is what we really wanted." He held
-up a little crumpled piece of paper.
-
-"The remainder of the sheet!" cried the Inspector.
-
-"Precisely."
-
-"And where was it?"
-
-"Where I was sure it must be. I'll make the whole matter clear to you
-presently. I think, Colonel, that you and Watson might return now, and
-I will be with you again in an hour at the furthest. The Inspector and I
-must have a word with the prisoners, but you will certainly see me back
-at luncheon time."
-
-
-Sherlock Holmes was as good as his word, for about one o'clock he
-rejoined us in the Colonel's smoking-room. He was accompanied by a
-little elderly gentleman, who was introduced to me as the Mr. Acton
-whose house had been the scene of the original burglary.
-
-"I wished Mr. Acton to be present while I demonstrated this small matter
-to you," said Holmes, "for it is natural that he should take a keen
-interest in the details. I am afraid, my dear Colonel, that you must
-regret the hour that you took in such a stormy petrel as I am."
-
-"On the contrary," answered the Colonel, warmly, "I consider it the
-greatest privilege to have been permitted to study your methods of
-working. I confess that they quite surpass my expectations, and that I
-am utterly unable to account for your result. I have not yet seen the
-vestige of a clue."
-
-"I am afraid that my explanation may disillusion you but it has always
-been my habit to hide none of my methods, either from my friend Watson
-or from any one who might take an intelligent interest in them. But,
-first, as I am rather shaken by the knocking about which I had in
-the dressing-room, I think that I shall help myself to a dash of your
-brandy, Colonel. My strength had been rather tried of late."
-
-"I trust that you had no more of those nervous attacks."
-
-Sherlock Holmes laughed heartily. "We will come to that in its turn,"
-said he. "I will lay an account of the case before you in its due order,
-showing you the various points which guided me in my decision. Pray
-interrupt me if there is any inference which is not perfectly clear to
-you.
-
-"It is of the highest importance in the art of detection to be able
-to recognize, out of a number of facts, which are incidental and which
-vital. Otherwise your energy and attention must be dissipated instead of
-being concentrated. Now, in this case there was not the slightest doubt
-in my mind from the first that the key of the whole matter must be
-looked for in the scrap of paper in the dead man's hand.
-
-"Before going into this, I would draw your attention to the fact that,
-if Alec Cunningham's narrative was correct, and if the assailant, after
-shooting William Kirwan, had instantly fled, then it obviously could not
-be he who tore the paper from the dead man's hand. But if it was not he,
-it must have been Alec Cunningham himself, for by the time that the old
-man had descended several servants were upon the scene. The point is a
-simple one, but the Inspector had overlooked it because he had started
-with the supposition that these county magnates had had nothing to do
-with the matter. Now, I make a point of never having any prejudices,
-and of following docilely wherever fact may lead me, and so, in the
-very first stage of the investigation, I found myself looking a little
-askance at the part which had been played by Mr. Alec Cunningham.
-
-"And now I made a very careful examination of the corner of paper which
-the Inspector had submitted to us. It was at once clear to me that it
-formed part of a very remarkable document. Here it is. Do you not now
-observe something very suggestive about it?"
-
-"It has a very irregular look," said the Colonel.
-
-"My dear sir," cried Holmes, "there cannot be the least doubt in the
-world that it has been written by two persons doing alternate words.
-When I draw your attention to the strong t's of 'at' and 'to', and ask
-you to compare them with the weak ones of 'quarter' and 'twelve,' you
-will instantly recognize the fact. A very brief analysis of these
-four words would enable you to say with the utmost confidence that the
-'learn' and the 'maybe' are written in the stronger hand, and the 'what'
-in the weaker."
-
-"By Jove, it's as clear as day!" cried the Colonel. "Why on earth should
-two men write a letter in such a fashion?"
-
-"Obviously the business was a bad one, and one of the men who distrusted
-the other was determined that, whatever was done, each should have an
-equal hand in it. Now, of the two men, it is clear that the one who
-wrote the 'at' and 'to' was the ringleader."
-
-"How do you get at that?"
-
-"We might deduce it from the mere character of the one hand as compared
-with the other. But we have more assured reasons than that for supposing
-it. If you examine this scrap with attention you will come to the
-conclusion that the man with the stronger hand wrote all his words
-first, leaving blanks for the other to fill up. These blanks were not
-always sufficient, and you can see that the second man had a squeeze
-to fit his 'quarter' in between the 'at' and the 'to,' showing that the
-latter were already written. The man who wrote all his words first is
-undoubtedly the man who planned the affair."
-
-"Excellent!" cried Mr. Acton.
-
-"But very superficial," said Holmes. "We come now, however, to a point
-which is of importance. You may not be aware that the deduction of a
-man's age from his writing is one which has brought to considerable
-accuracy by experts. In normal cases one can place a man in his true
-decade with tolerable confidence. I say normal cases, because ill-health
-and physical weakness reproduce the signs of old age, even when the
-invalid is a youth. In this case, looking at the bold, strong hand of
-the one, and the rather broken-backed appearance of the other, which
-still retains its legibility although the t's have begun to lose their
-crossing, we can say that the one was a young man and the other was
-advanced in years without being positively decrepit."
-
-"Excellent!" cried Mr. Acton again.
-
-"There is a further point, however, which is subtler and of greater
-interest. There is something in common between these hands. They belong
-to men who are blood-relatives. It may be most obvious to you in the
-Greek e's, but to me there are many small points which indicate the same
-thing. I have no doubt at all that a family mannerism can be traced in
-these two specimens of writing. I am only, of course, giving you
-the leading results now of my examination of the paper. There were
-twenty-three other deductions which would be of more interest to experts
-than to you. They all tend to deepen the impression upon my mind that
-the Cunninghams, father and son, had written this letter.
-
-"Having got so far, my next step was, of course, to examine into the
-details of the crime, and to see how far they would help us. I went up
-to the house with the Inspector, and saw all that was to be seen. The
-wound upon the dead man was, as I was able to determine with absolute
-confidence, fired from a revolver at the distance of something over
-four yards. There was no powder-blackening on the clothes. Evidently,
-therefore, Alec Cunningham had lied when he said that the two men were
-struggling when the shot was fired. Again, both father and son agreed
-as to the place where the man escaped into the road. At that point,
-however, as it happens, there is a broadish ditch, moist at the bottom.
-As there were no indications of bootmarks about this ditch, I was
-absolutely sure not only that the Cunninghams had again lied, but that
-there had never been any unknown man upon the scene at all.
-
-"And now I have to consider the motive of this singular crime. To get
-at this, I endeavored first of all to solve the reason of the original
-burglary at Mr. Acton's. I understood, from something which the Colonel
-told us, that a lawsuit had been going on between you, Mr. Acton, and
-the Cunninghams. Of course, it instantly occurred to me that they had
-broken into your library with the intention of getting at some document
-which might be of importance in the case."
-
-"Precisely so," said Mr. Acton. "There can be no possible doubt as to
-their intentions. I have the clearest claim upon half of their present
-estate, and if they could have found a single paper--which, fortunately,
-was in the strong-box of my solicitors--they would undoubtedly have
-crippled our case."
-
-"There you are," said Holmes, smiling. "It was a dangerous, reckless
-attempt, in which I seem to trace the influence of young Alec. Having
-found nothing they tried to divert suspicion by making it appear to be
-an ordinary burglary, to which end they carried off whatever they could
-lay their hands upon. That is all clear enough, but there was much that
-was still obscure. What I wanted above all was to get the missing part
-of that note. I was certain that Alec had torn it out of the dead man's
-hand, and almost certain that he must have thrust it into the pocket of
-his dressing-gown. Where else could he have put it? The only question
-was whether it was still there. It was worth an effort to find out, and
-for that object we all went up to the house.
-
-"The Cunninghams joined us, as you doubtless remember, outside the
-kitchen door. It was, of course, of the very first importance that they
-should not be reminded of the existence of this paper, otherwise they
-would naturally destroy it without delay. The Inspector was about to
-tell them the importance which we attached to it when, by the luckiest
-chance in the world, I tumbled down in a sort of fit and so changed the
-conversation.
-
-"Good heavens!" cried the Colonel, laughing, "do you mean to say all our
-sympathy was wasted and your fit an imposture?"
-
-"Speaking professionally, it was admirably done," cried I, looking in
-amazement at this man who was forever confounding me with some new phase
-of his astuteness.
-
-"It is an art which is often useful," said he. "When I recovered I
-managed, by a device which had perhaps some little merit of ingenuity,
-to get old Cunningham to write the word 'twelve,' so that I might
-compare it with the 'twelve' upon the paper."
-
-"Oh, what an ass I have been!" I exclaimed.
-
-"I could see that you were commiserating me over my weakness," said
-Holmes, laughing. "I was sorry to cause you the sympathetic pain which
-I know that you felt. We then went upstairs together, and having entered
-the room and seen the dressing-gown hanging up behind the door, I
-contrived, by upsetting a table, to engage their attention for the
-moment, and slipped back to examine the pockets. I had hardly got the
-paper, however--which was, as I had expected, in one of them--when the
-two Cunninghams were on me, and would, I verily believe, have murdered
-me then and there but for your prompt and friendly aid. As it is, I feel
-that young man's grip on my throat now, and the father has twisted my
-wrist round in the effort to get the paper out of my hand. They saw that
-I must know all about it, you see, and the sudden change from absolute
-security to complete despair made them perfectly desperate.
-
-"I had a little talk with old Cunningham afterwards as to the motive of
-the crime. He was tractable enough, though his son was a perfect demon,
-ready to blow out his own or anybody else's brains if he could have got
-to his revolver. When Cunningham saw that the case against him was so
-strong he lost all heart and made a clean breast of everything. It seems
-that William had secretly followed his two masters on the night when
-they made their raid upon Mr. Acton's, and having thus got them into
-his power, proceeded, under threats of exposure, to levy blackmail upon
-them. Mr. Alec, however, was a dangerous man to play games of that
-sort with. It was a stroke of positive genius on his part to see in the
-burglary scare which was convulsing the country side an opportunity of
-plausibly getting rid of the man whom he feared. William was decoyed up
-and shot, and had they only got the whole of the note and paid a little
-more attention to detail in the accessories, it is very possible that
-suspicion might never have been aroused."
-
-"And the note?" I asked.
-
-Sherlock Holmes placed the subjoined paper before us.
-
-     If you will only come around to the east gate you it will
-     very much surprise you and be of the greatest service to you
-     and also to Annie Morrison. But say nothing to anyone upon
-     the matter.
-
-"It is very much the sort of thing that I expected," said he. "Of
-course, we do not yet know what the relations may have been between Alec
-Cunningham, William Kirwan, and Annie Morrison. The results shows that
-the trap was skillfully baited. I am sure that you cannot fail to be
-delighted with the traces of heredity shown in the p's and in the tails
-of the g's. The absence of the i-dots in the old man's writing is also
-most characteristic. Watson, I think our quiet rest in the country has
-been a distinct success, and I shall certainly return much invigorated
-to Baker Street to-morrow."
-
-
-
-
-Adventure VII. The Crooked Man
-
-
-One summer night, a few months after my marriage, I was seated by my own
-hearth smoking a last pipe and nodding over a novel, for my day's work
-had been an exhausting one. My wife had already gone upstairs, and the
-sound of the locking of the hall door some time before told me that the
-servants had also retired. I had risen from my seat and was knocking out
-the ashes of my pipe when I suddenly heard the clang of the bell.
-
-I looked at the clock. It was a quarter to twelve. This could not be
-a visitor at so late an hour. A patient, evidently, and possibly an
-all-night sitting. With a wry face I went out into the hall and opened
-the door. To my astonishment it was Sherlock Holmes who stood upon my
-step.
-
-"Ah, Watson," said he, "I hoped that I might not be too late to catch
-you."
-
-"My dear fellow, pray come in."
-
-"You look surprised, and no wonder! Relieved, too, I fancy! Hum! You
-still smoke the Arcadia mixture of your bachelor days then! There's no
-mistaking that fluffy ash upon your coat. It's easy to tell that you
-have been accustomed to wear a uniform, Watson. You'll never pass as
-a pure-bred civilian as long as you keep that habit of carrying your
-handkerchief in your sleeve. Could you put me up to-night?"
-
-"With pleasure."
-
-"You told me that you had bachelor quarters for one, and I see that you
-have no gentleman visitor at present. Your hat-stand proclaims as much."
-
-"I shall be delighted if you will stay."
-
-"Thank you. I'll fill the vacant peg then. Sorry to see that you've had
-the British workman in the house. He's a token of evil. Not the drains,
-I hope?"
-
-"No, the gas."
-
-"Ah! He has left two nail-marks from his boot upon your linoleum
-just where the light strikes it. No, thank you, I had some supper at
-Waterloo, but I'll smoke a pipe with you with pleasure."
-
-I handed him my pouch, and he seated himself opposite to me and smoked
-for some time in silence. I was well aware that nothing but business
-of importance would have brought him to me at such an hour, so I waited
-patiently until he should come round to it.
-
-"I see that you are professionally rather busy just now," said he,
-glancing very keenly across at me.
-
-"Yes, I've had a busy day," I answered. "It may seem very foolish in
-your eyes," I added, "but really I don't know how you deduced it."
-
-Holmes chuckled to himself.
-
-"I have the advantage of knowing your habits, my dear Watson," said he.
-"When your round is a short one you walk, and when it is a long one you
-use a hansom. As I perceive that your boots, although used, are by
-no means dirty, I cannot doubt that you are at present busy enough to
-justify the hansom."
-
-"Excellent!" I cried.
-
-"Elementary," said he. "It is one of those instances where the reasoner
-can produce an effect which seems remarkable to his neighbor, because
-the latter has missed the one little point which is the basis of the
-deduction. The same may be said, my dear fellow, for the effect of
-some of these little sketches of yours, which is entirely meretricious,
-depending as it does upon your retaining in your own hands some factors
-in the problem which are never imparted to the reader. Now, at present
-I am in the position of these same readers, for I hold in this hand
-several threads of one of the strangest cases which ever perplexed a
-man's brain, and yet I lack the one or two which are needful to complete
-my theory. But I'll have them, Watson, I'll have them!" His eyes kindled
-and a slight flush sprang into his thin cheeks. For an instant only.
-When I glanced again his face had resumed that red-Indian composure
-which had made so many regard him as a machine rather than a man.
-
-"The problem presents features of interest," said he. "I may even say
-exceptional features of interest. I have already looked into the matter,
-and have come, as I think, within sight of my solution. If you could
-accompany me in that last step you might be of considerable service to
-me."
-
-"I should be delighted."
-
-"Could you go as far as Aldershot to-morrow?"
-
-"I have no doubt Jackson would take my practice."
-
-"Very good. I want to start by the 11.10 from Waterloo."
-
-"That would give me time."
-
-"Then, if you are not too sleepy, I will give you a sketch of what has
-happened, and of what remains to be done."
-
-"I was sleepy before you came. I am quite wakeful now."
-
-"I will compress the story as far as may be done without omitting
-anything vital to the case. It is conceivable that you may even have
-read some account of the matter. It is the supposed murder of Colonel
-Barclay, of the Royal Munsters, at Aldershot, which I am investigating."
-
-"I have heard nothing of it."
-
-"It has not excited much attention yet, except locally. The facts are
-only two days old. Briefly they are these:
-
-"The Royal Munsters is, as you know, one of the most famous Irish
-regiments in the British army. It did wonders both in the Crimea and the
-Mutiny, and has since that time distinguished itself upon every possible
-occasion. It was commanded up to Monday night by James Barclay,
-a gallant veteran, who started as a full private, was raised to
-commissioned rank for his bravery at the time of the Mutiny, and so
-lived to command the regiment in which he had once carried a musket.
-
-"Colonel Barclay had married at the time when he was a sergeant, and
-his wife, whose maiden name was Miss Nancy Devoy, was the daughter of a
-former color-sergeant in the same corps. There was, therefore, as can
-be imagined, some little social friction when the young couple (for
-they were still young) found themselves in their new surroundings. They
-appear, however, to have quickly adapted themselves, and Mrs. Barclay
-has always, I understand, been as popular with the ladies of the
-regiment as her husband was with his brother officers. I may add that
-she was a woman of great beauty, and that even now, when she has been
-married for upwards of thirty years, she is still of a striking and
-queenly appearance.
-
-"Colonel Barclay's family life appears to have been a uniformly happy
-one. Major Murphy, to whom I owe most of my facts, assures me that he
-has never heard of any misunderstanding between the pair. On the whole,
-he thinks that Barclay's devotion to his wife was greater than his
-wife's to Barclay. He was acutely uneasy if he were absent from her for
-a day. She, on the other hand, though devoted and faithful, was less
-obtrusively affectionate. But they were regarded in the regiment as
-the very model of a middle-aged couple. There was absolutely nothing in
-their mutual relations to prepare people for the tragedy which was to
-follow.
-
-"Colonel Barclay himself seems to have had some singular traits in his
-character. He was a dashing, jovial old soldier in his usual mood,
-but there were occasions on which he seemed to show himself capable
-of considerable violence and vindictiveness. This side of his nature,
-however, appears never to have been turned towards his wife. Another
-fact, which had struck Major Murphy and three out of five of the other
-officers with whom I conversed, was the singular sort of depression
-which came upon him at times. As the major expressed it, the smile had
-often been struck from his mouth, as if by some invisible hand, when he
-has been joining the gayeties and chaff of the mess-table. For days on
-end, when the mood was on him, he has been sunk in the deepest gloom.
-This and a certain tinge of superstition were the only unusual traits
-in his character which his brother officers had observed. The latter
-peculiarity took the form of a dislike to being left alone, especially
-after dark. This puerile feature in a nature which was conspicuously
-manly had often given rise to comment and conjecture.
-
-"The first battalion of the Royal Munsters (which is the old 117th) has
-been stationed at Aldershot for some years. The married officers live
-out of barracks, and the Colonel has during all this time occupied a
-villa called Lachine, about half a mile from the north camp. The house
-stands in its own grounds, but the west side of it is not more than
-thirty yards from the high-road. A coachman and two maids form the
-staff of servants. These with their master and mistress were the sole
-occupants of Lachine, for the Barclays had no children, nor was it usual
-for them to have resident visitors.
-
-"Now for the events at Lachine between nine and ten on the evening of
-last Monday."
-
-"Mrs. Barclay was, it appears, a member of the Roman Catholic Church,
-and had interested herself very much in the establishment of the Guild
-of St. George, which was formed in connection with the Watt Street
-Chapel for the purpose of supplying the poor with cast-off clothing.
-A meeting of the Guild had been held that evening at eight, and Mrs.
-Barclay had hurried over her dinner in order to be present at it. When
-leaving the house she was heard by the coachman to make some commonplace
-remark to her husband, and to assure him that she would be back before
-very long. She then called for Miss Morrison, a young lady who lives
-in the next villa, and the two went off together to their meeting. It
-lasted forty minutes, and at a quarter-past nine Mrs. Barclay returned
-home, having left Miss Morrison at her door as she passed.
-
-"There is a room which is used as a morning-room at Lachine. This faces
-the road and opens by a large glass folding-door on to the lawn. The
-lawn is thirty yards across, and is only divided from the highway by
-a low wall with an iron rail above it. It was into this room that Mrs.
-Barclay went upon her return. The blinds were not down, for the room was
-seldom used in the evening, but Mrs. Barclay herself lit the lamp and
-then rang the bell, asking Jane Stewart, the house-maid, to bring her
-a cup of tea, which was quite contrary to her usual habits. The Colonel
-had been sitting in the dining-room, but hearing that his wife had
-returned he joined her in the morning-room. The coachman saw him cross
-the hall and enter it. He was never seen again alive.
-
-"The tea which had been ordered was brought up at the end of ten
-minutes; but the maid, as she approached the door, was surprised to
-hear the voices of her master and mistress in furious altercation. She
-knocked without receiving any answer, and even turned the handle, but
-only to find that the door was locked upon the inside. Naturally enough
-she ran down to tell the cook, and the two women with the coachman came
-up into the hall and listened to the dispute which was still raging.
-They all agreed that only two voices were to be heard, those of Barclay
-and of his wife. Barclay's remarks were subdued and abrupt, so that none
-of them were audible to the listeners. The lady's, on the other hand,
-were most bitter, and when she raised her voice could be plainly heard.
-'You coward!' she repeated over and over again. 'What can be done now?
-What can be done now? Give me back my life. I will never so much as
-breathe the same air with you again! You coward! You coward!' Those were
-scraps of her conversation, ending in a sudden dreadful cry in the man's
-voice, with a crash, and a piercing scream from the woman. Convinced
-that some tragedy had occurred, the coachman rushed to the door and
-strove to force it, while scream after scream issued from within. He was
-unable, however, to make his way in, and the maids were too distracted
-with fear to be of any assistance to him. A sudden thought struck him,
-however, and he ran through the hall door and round to the lawn upon
-which the long French windows open. One side of the window was open,
-which I understand was quite usual in the summer-time, and he passed
-without difficulty into the room. His mistress had ceased to scream and
-was stretched insensible upon a couch, while with his feet tilted over
-the side of an arm-chair, and his head upon the ground near the corner
-of the fender, was lying the unfortunate soldier stone dead in a pool of
-his own blood.
-
-"Naturally, the coachman's first thought, on finding that he could do
-nothing for his master, was to open the door. But here an unexpected and
-singular difficulty presented itself. The key was not in the inner side
-of the door, nor could he find it anywhere in the room. He went out
-again, therefore, through the window, and having obtained the help of
-a policeman and of a medical man, he returned. The lady, against whom
-naturally the strongest suspicion rested, was removed to her room, still
-in a state of insensibility. The Colonel's body was then placed upon the
-sofa, and a careful examination made of the scene of the tragedy.
-
-"The injury from which the unfortunate veteran was suffering was found
-to be a jagged cut some two inches long at the back part of his head,
-which had evidently been caused by a violent blow from a blunt weapon.
-Nor was it difficult to guess what that weapon may have been. Upon the
-floor, close to the body, was lying a singular club of hard carved wood
-with a bone handle. The Colonel possessed a varied collection of weapons
-brought from the different countries in which he had fought, and it
-is conjectured by the police that his club was among his trophies. The
-servants deny having seen it before, but among the numerous curiosities
-in the house it is possible that it may have been overlooked. Nothing
-else of importance was discovered in the room by the police, save the
-inexplicable fact that neither upon Mrs. Barclay's person nor upon that
-of the victim nor in any part of the room was the missing key to
-be found. The door had eventually to be opened by a locksmith from
-Aldershot.
-
-"That was the state of things, Watson, when upon the Tuesday morning I,
-at the request of Major Murphy, went down to Aldershot to supplement
-the efforts of the police. I think that you will acknowledge that the
-problem was already one of interest, but my observations soon made me
-realize that it was in truth much more extraordinary than would at first
-sight appear.
-
-"Before examining the room I cross-questioned the servants, but only
-succeeded in eliciting the facts which I have already stated. One other
-detail of interest was remembered by Jane Stewart, the housemaid. You
-will remember that on hearing the sound of the quarrel she descended and
-returned with the other servants. On that first occasion, when she was
-alone, she says that the voices of her master and mistress were sunk
-so low that she could hear hardly anything, and judged by their tones
-rather than their words that they had fallen out. On my pressing her,
-however, she remembered that she heard the word David uttered twice by
-the lady. The point is of the utmost importance as guiding us towards
-the reason of the sudden quarrel. The Colonel's name, you remember, was
-James.
-
-"There was one thing in the case which had made the deepest impression
-both upon the servants and the police. This was the contortion of the
-Colonel's face. It had set, according to their account, into the most
-dreadful expression of fear and horror which a human countenance is
-capable of assuming. More than one person fainted at the mere sight
-of him, so terrible was the effect. It was quite certain that he had
-foreseen his fate, and that it had caused him the utmost horror. This,
-of course, fitted in well enough with the police theory, if the Colonel
-could have seen his wife making a murderous attack upon him. Nor was
-the fact of the wound being on the back of his head a fatal objection to
-this, as he might have turned to avoid the blow. No information could
-be got from the lady herself, who was temporarily insane from an acute
-attack of brain-fever.
-
-"From the police I learned that Miss Morrison, who you remember went out
-that evening with Mrs. Barclay, denied having any knowledge of what it
-was which had caused the ill-humor in which her companion had returned.
-
-"Having gathered these facts, Watson, I smoked several pipes over them,
-trying to separate those which were crucial from others which were
-merely incidental. There could be no question that the most distinctive
-and suggestive point in the case was the singular disappearance of the
-door-key. A most careful search had failed to discover it in the room.
-Therefore it must have been taken from it. But neither the Colonel
-nor the Colonel's wife could have taken it. That was perfectly clear.
-Therefore a third person must have entered the room. And that third
-person could only have come in through the window. It seemed to me that
-a careful examination of the room and the lawn might possibly reveal
-some traces of this mysterious individual. You know my methods, Watson.
-There was not one of them which I did not apply to the inquiry. And it
-ended by my discovering traces, but very different ones from those which
-I had expected. There had been a man in the room, and he had crossed
-the lawn coming from the road. I was able to obtain five very clear
-impressions of his foot-marks: one in the roadway itself, at the point
-where he had climbed the low wall, two on the lawn, and two very faint
-ones upon the stained boards near the window where he had entered.
-He had apparently rushed across the lawn, for his toe-marks were much
-deeper than his heels. But it was not the man who surprised me. It was
-his companion."
-
-"His companion!"
-
-Holmes pulled a large sheet of tissue-paper out of his pocket and
-carefully unfolded it upon his knee.
-
-"What do you make of that?" he asked.
-
-The paper was covered with he tracings of the foot-marks of some small
-animal. It had five well-marked foot-pads, an indication of long nails,
-and the whole print might be nearly as large as a dessert-spoon.
-
-"It's a dog," said I.
-
-"Did you ever hear of a dog running up a curtain? I found distinct
-traces that this creature had done so."
-
-"A monkey, then?"
-
-"But it is not the print of a monkey."
-
-"What can it be, then?"
-
-"Neither dog nor cat nor monkey nor any creature that we are familiar
-with. I have tried to reconstruct it from the measurements. Here are
-four prints where the beast has been standing motionless. You see that
-it is no less than fifteen inches from fore-foot to hind. Add to that
-the length of neck and head, and you get a creature not much less than
-two feet long--probably more if there is any tail. But now observe this
-other measurement. The animal has been moving, and we have the length
-of its stride. In each case it is only about three inches. You have an
-indication, you see, of a long body with very short legs attached to it.
-It has not been considerate enough to leave any of its hair behind it.
-But its general shape must be what I have indicated, and it can run up a
-curtain, and it is carnivorous."
-
-"How do you deduce that?"
-
-"Because it ran up the curtain. A canary's cage was hanging in the
-window, and its aim seems to have been to get at the bird."
-
-"Then what was the beast?"
-
-"Ah, if I could give it a name it might go a long way towards solving
-the case. On the whole, it was probably some creature of the weasel and
-stoat tribe--and yet it is larger than any of these that I have seen."
-
-"But what had it to do with the crime?"
-
-"That, also, is still obscure. But we have learned a good deal, you
-perceive. We know that a man stood in the road looking at the quarrel
-between the Barclays--the blinds were up and the room lighted. We know,
-also, that he ran across the lawn, entered the room, accompanied by a
-strange animal, and that he either struck the Colonel or, as is equally
-possible, that the Colonel fell down from sheer fright at the sight of
-him, and cut his head on the corner of the fender. Finally, we have the
-curious fact that the intruder carried away the key with him when he
-left."
-
-"Your discoveries seem to have left the business more obscure that it
-was before," said I.
-
-"Quite so. They undoubtedly showed that the affair was much deeper than
-was at first conjectured. I thought the matter over, and I came to
-the conclusion that I must approach the case from another aspect. But
-really, Watson, I am keeping you up, and I might just as well tell you
-all this on our way to Aldershot to-morrow."
-
-"Thank you, you have gone rather too far to stop."
-
-"It is quite certain that when Mrs. Barclay left the house at half-past
-seven she was on good terms with her husband. She was never, as I think
-I have said, ostentatiously affectionate, but she was heard by the
-coachman chatting with the Colonel in a friendly fashion. Now, it was
-equally certain that, immediately on her return, she had gone to the
-room in which she was least likely to see her husband, had flown to tea
-as an agitated woman will, and finally, on his coming in to her, had
-broken into violent recriminations. Therefore something had occurred
-between seven-thirty and nine o'clock which had completely altered her
-feelings towards him. But Miss Morrison had been with her during the
-whole of that hour and a half. It was absolutely certain, therefore, in
-spite of her denial, that she must know something of the matter.
-
-"My first conjecture was, that possibly there had been some passages
-between this young lady and the old soldier, which the former had now
-confessed to the wife. That would account for the angry return, and
-also for the girl's denial that anything had occurred. Nor would it be
-entirely incompatible with most of the words overhead. But there was the
-reference to David, and there was the known affection of the Colonel for
-his wife, to weigh against it, to say nothing of the tragic intrusion
-of this other man, which might, of course, be entirely disconnected with
-what had gone before. It was not easy to pick one's steps, but, on the
-whole, I was inclined to dismiss the idea that there had been anything
-between the Colonel and Miss Morrison, but more than ever convinced that
-the young lady held the clue as to what it was which had turned Mrs.
-Barclay to hatred of her husband. I took the obvious course, therefore,
-of calling upon Miss M., of explaining to her that I was perfectly
-certain that she held the facts in her possession, and of assuring her
-that her friend, Mrs. Barclay, might find herself in the dock upon a
-capital charge unless the matter were cleared up.
-
-"Miss Morrison is a little ethereal slip of a girl, with timid eyes
-and blond hair, but I found her by no means wanting in shrewdness and
-common-sense. She sat thinking for some time after I had spoken, and
-then, turning to me with a brisk air of resolution, she broke into a
-remarkable statement which I will condense for your benefit.
-
-"'I promised my friend that I would say nothing of the matter, and a
-promise is a promise,' said she; 'but if I can really help her when
-so serious a charge is laid against her, and when her own mouth, poor
-darling, is closed by illness, then I think I am absolved from my
-promise. I will tell you exactly what happened upon Monday evening.
-
-"'We were returning from the Watt Street Mission about a quarter to nine
-o'clock. On our way we had to pass through Hudson Street, which is
-a very quiet thoroughfare. There is only one lamp in it, upon the
-left-hand side, and as we approached this lamp I saw a man coming
-towards us with his back very bent, and something like a box slung over
-one of his shoulders. He appeared to be deformed, for he carried his
-head low and walked with his knees bent. We were passing him when he
-raised his face to look at us in the circle of light thrown by the lamp,
-and as he did so he stopped and screamed out in a dreadful voice, "My
-God, it's Nancy!" Mrs. Barclay turned as white as death, and would have
-fallen down had the dreadful-looking creature not caught hold of her. I
-was going to call for the police, but she, to my surprise, spoke quite
-civilly to the fellow.
-
-"'"I thought you had been dead this thirty years, Henry," said she, in a
-shaking voice.
-
-"'"So I have," said he, and it was awful to hear the tones that he said
-it in. He had a very dark, fearsome face, and a gleam in his eyes that
-comes back to me in my dreams. His hair and whiskers were shot with
-gray, and his face was all crinkled and puckered like a withered apple.
-
-"'"Just walk on a little way, dear," said Mrs. Barclay; "I want to have
-a word with this man. There is nothing to be afraid of." She tried to
-speak boldly, but she was still deadly pale and could hardly get her
-words out for the trembling of her lips.
-
-"'I did as she asked me, and they talked together for a few minutes.
-Then she came down the street with her eyes blazing, and I saw the
-crippled wretch standing by the lamp-post and shaking his clenched fists
-in the air as if he were mad with rage. She never said a word until we
-were at the door here, when she took me by the hand and begged me to
-tell no one what had happened.
-
-"'"It's an old acquaintance of mine who has come down in the world,"
-said she. When I promised her I would say nothing she kissed me, and I
-have never seen her since. I have told you now the whole truth, and if
-I withheld it from the police it is because I did not realize then the
-danger in which my dear friend stood. I know that it can only be to her
-advantage that everything should be known.'
-
-"There was her statement, Watson, and to me, as you can imagine, it was
-like a light on a dark night. Everything which had been disconnected
-before began at once to assume its true place, and I had a shadowy
-presentiment of the whole sequence of events. My next step obviously was
-to find the man who had produced such a remarkable impression upon Mrs.
-Barclay. If he were still in Aldershot it should not be a very difficult
-matter. There are not such a very great number of civilians, and a
-deformed man was sure to have attracted attention. I spent a day in the
-search, and by evening--this very evening, Watson--I had run him down.
-The man's name is Henry Wood, and he lives in lodgings in this same
-street in which the ladies met him. He has only been five days in the
-place. In the character of a registration-agent I had a most interesting
-gossip with his landlady. The man is by trade a conjurer and performer,
-going round the canteens after nightfall, and giving a little
-entertainment at each. He carries some creature about with him in that
-box; about which the landlady seemed to be in considerable trepidation,
-for she had never seen an animal like it. He uses it in some of his
-tricks according to her account. So much the woman was able to tell me,
-and also that it was a wonder the man lived, seeing how twisted he was,
-and that he spoke in a strange tongue sometimes, and that for the last
-two nights she had heard him groaning and weeping in his bedroom. He
-was all right, as far as money went, but in his deposit he had given her
-what looked like a bad florin. She showed it to me, Watson, and it was
-an Indian rupee.
-
-"So now, my dear fellow, you see exactly how we stand and why it is I
-want you. It is perfectly plain that after the ladies parted from this
-man he followed them at a distance, that he saw the quarrel between
-husband and wife through the window, that he rushed in, and that
-the creature which he carried in his box got loose. That is all very
-certain. But he is the only person in this world who can tell us exactly
-what happened in that room."
-
-"And you intend to ask him?"
-
-"Most certainly--but in the presence of a witness."
-
-"And I am the witness?"
-
-"If you will be so good. If he can clear the matter up, well and good.
-If he refuses, we have no alternative but to apply for a warrant."
-
-"But how do you know he'll be there when we return?"
-
-"You may be sure that I took some precautions. I have one of my Baker
-Street boys mounting guard over him who would stick to him like a burr,
-go where he might. We shall find him in Hudson Street to-morrow, Watson,
-and meanwhile I should be the criminal myself if I kept you out of bed
-any longer."
-
-It was midday when we found ourselves at the scene of the tragedy, and,
-under my companion's guidance, we made our way at once to Hudson Street.
-In spite of his capacity for concealing his emotions, I could easily see
-that Holmes was in a state of suppressed excitement, while I was myself
-tingling with that half-sporting, half-intellectual pleasure which
-I invariably experienced when I associated myself with him in his
-investigations.
-
-"This is the street," said he, as we turned into a short thoroughfare
-lined with plain two-storied brick houses. "Ah, here is Simpson to
-report."
-
-"He's in all right, Mr. Holmes," cried a small street Arab, running up
-to us.
-
-"Good, Simpson!" said Holmes, patting him on the head. "Come along,
-Watson. This is the house." He sent in his card with a message that he
-had come on important business, and a moment later we were face to face
-with the man whom we had come to see. In spite of the warm weather he
-was crouching over a fire, and the little room was like an oven. The
-man sat all twisted and huddled in his chair in a way which gave an
-indescribably impression of deformity; but the face which he turned
-towards us, though worn and swarthy, must at some time have been
-remarkable for its beauty. He looked suspiciously at us now out of
-yellow-shot, bilious eyes, and, without speaking or rising, he waved
-towards two chairs.
-
-"Mr. Henry Wood, late of India, I believe," said Holmes, affably. "I've
-come over this little matter of Colonel Barclay's death."
-
-"What should I know about that?"
-
-"That's what I want to ascertain. You know, I suppose, that unless the
-matter is cleared up, Mrs. Barclay, who is an old friend of yours, will
-in all probability be tried for murder."
-
-The man gave a violent start.
-
-"I don't know who you are," he cried, "nor how you come to know what you
-do know, but will you swear that this is true that you tell me?"
-
-"Why, they are only waiting for her to come to her senses to arrest
-her."
-
-"My God! Are you in the police yourself?"
-
-"No."
-
-"What business is it of yours, then?"
-
-"It's every man's business to see justice done."
-
-"You can take my word that she is innocent."
-
-"Then you are guilty."
-
-"No, I am not."
-
-"Who killed Colonel James Barclay, then?"
-
-"It was a just providence that killed him. But, mind you this, that if
-I had knocked his brains out, as it was in my heart to do, he would have
-had no more than his due from my hands. If his own guilty conscience had
-not struck him down it is likely enough that I might have had his blood
-upon my soul. You want me to tell the story. Well, I don't know why I
-shouldn't, for there's no cause for me to be ashamed of it.
-
-"It was in this way, sir. You see me now with my back like a camel and
-my ribs all awry, but there was a time when Corporal Henry Wood was the
-smartest man in the 117th foot. We were in India then, in cantonments,
-at a place we'll call Bhurtee. Barclay, who died the other day, was
-sergeant in the same company as myself, and the belle of the regiment,
-ay, and the finest girl that ever had the breath of life between her
-lips, was Nancy Devoy, the daughter of the color-sergeant. There were
-two men that loved her, and one that she loved, and you'll smile when
-you look at this poor thing huddled before the fire, and hear me say
-that it was for my good looks that she loved me.
-
-"Well, though I had her heart, her father was set upon her marrying
-Barclay. I was a harum-scarum, reckless lad, and he had had an
-education, and was already marked for the sword-belt. But the girl held
-true to me, and it seemed that I would have had her when the Mutiny
-broke out, and all hell was loose in the country.
-
-"We were shut up in Bhurtee, the regiment of us with half a battery of
-artillery, a company of Sikhs, and a lot of civilians and women-folk.
-There were ten thousand rebels round us, and they were as keen as a set
-of terriers round a rat-cage. About the second week of it our water gave
-out, and it was a question whether we could communicate with General
-Neill's column, which was moving up country. It was our only chance, for
-we could not hope to fight our way out with all the women and children,
-so I volunteered to go out and to warn General Neill of our danger. My
-offer was accepted, and I talked it over with Sergeant Barclay, who was
-supposed to know the ground better than any other man, and who drew up
-a route by which I might get through the rebel lines. At ten o'clock the
-same night I started off upon my journey. There were a thousand lives to
-save, but it was of only one that I was thinking when I dropped over the
-wall that night.
-
-"My way ran down a dried-up watercourse, which we hoped would screen
-me from the enemy's sentries; but as I crept round the corner of it
-I walked right into six of them, who were crouching down in the dark
-waiting for me. In an instant I was stunned with a blow and bound hand
-and foot. But the real blow was to my heart and not to my head, for as
-I came to and listened to as much as I could understand of their talk,
-I heard enough to tell me that my comrade, the very man who had arranged
-the way that I was to take, had betrayed me by means of a native servant
-into the hands of the enemy.
-
-"Well, there's no need for me to dwell on that part of it. You know now
-what James Barclay was capable of. Bhurtee was relieved by Neill next
-day, but the rebels took me away with them in their retreat, and it was
-many a long year before ever I saw a white face again. I was tortured
-and tried to get away, and was captured and tortured again. You can see
-for yourselves the state in which I was left. Some of them that fled
-into Nepaul took me with them, and then afterwards I was up past
-Darjeeling. The hill-folk up there murdered the rebels who had me, and
-I became their slave for a time until I escaped; but instead of going
-south I had to go north, until I found myself among the Afghans. There
-I wandered about for many a year, and at last came back to the Punjab,
-where I lived mostly among the natives and picked up a living by the
-conjuring tricks that I had learned. What use was it for me, a wretched
-cripple, to go back to England or to make myself known to my old
-comrades? Even my wish for revenge would not make me do that. I had
-rather that Nancy and my old pals should think of Harry Wood as having
-died with a straight back, than see him living and crawling with a stick
-like a chimpanzee. They never doubted that I was dead, and I meant that
-they never should. I heard that Barclay had married Nancy, and that he
-was rising rapidly in the regiment, but even that did not make me speak.
-
-"But when one gets old one has a longing for home. For years I've been
-dreaming of the bright green fields and the hedges of England. At last I
-determined to see them before I died. I saved enough to bring me across,
-and then I came here where the soldiers are, for I know their ways and
-how to amuse them and so earn enough to keep me."
-
-"Your narrative is most interesting," said Sherlock Holmes. "I have
-already heard of your meeting with Mrs. Barclay, and your mutual
-recognition. You then, as I understand, followed her home and saw
-through the window an altercation between her husband and her, in which
-she doubtless cast his conduct to you in his teeth. Your own feelings
-overcame you, and you ran across the lawn and broke in upon them."
-
-"I did, sir, and at the sight of me he looked as I have never seen a man
-look before, and over he went with his head on the fender. But he was
-dead before he fell. I read death on his face as plain as I can read
-that text over the fire. The bare sight of me was like a bullet through
-his guilty heart."
-
-"And then?"
-
-"Then Nancy fainted, and I caught up the key of the door from her hand,
-intending to unlock it and get help. But as I was doing it it seemed to
-me better to leave it alone and get away, for the thing might look black
-against me, and any way my secret would be out if I were taken. In my
-haste I thrust the key into my pocket, and dropped my stick while I was
-chasing Teddy, who had run up the curtain. When I got him into his box,
-from which he had slipped, I was off as fast as I could run."
-
-"Who's Teddy?" asked Holmes.
-
-The man leaned over and pulled up the front of a kind of hutch in
-the corner. In an instant out there slipped a beautiful reddish-brown
-creature, thin and lithe, with the legs of a stoat, a long, thin nose,
-and a pair of the finest red eyes that ever I saw in an animal's head.
-
-"It's a mongoose," I cried.
-
-"Well, some call them that, and some call them ichneumon," said the
-man. "Snake-catcher is what I call them, and Teddy is amazing quick on
-cobras. I have one here without the fangs, and Teddy catches it every
-night to please the folk in the canteen.
-
-"Any other point, sir?"
-
-"Well, we may have to apply to you again if Mrs. Barclay should prove to
-be in serious trouble."
-
-"In that case, of course, I'd come forward."
-
-"But if not, there is no object in raking up this scandal against a
-dead man, foully as he has acted. You have at least the satisfaction
-of knowing that for thirty years of his life his conscience bitterly
-reproached him for this wicked deed. Ah, there goes Major Murphy on the
-other side of the street. Good-by, Wood. I want to learn if anything has
-happened since yesterday."
-
-We were in time to overtake the major before he reached the corner.
-
-"Ah, Holmes," he said: "I suppose you have heard that all this fuss has
-come to nothing?"
-
-"What then?"
-
-"The inquest is just over. The medical evidence showed conclusively
-that death was due to apoplexy. You see it was quite a simple case after
-all."
-
-"Oh, remarkably superficial," said Holmes, smiling. "Come, Watson, I
-don't think we shall be wanted in Aldershot any more."
-
-"There's one thing," said I, as we walked down to the station. "If the
-husband's name was James, and the other was Henry, what was this talk
-about David?"
-
-"That one word, my dear Watson, should have told me the whole story had
-I been the ideal reasoner which you are so fond of depicting. It was
-evidently a term of reproach."
-
-"Of reproach?"
-
-"Yes; David strayed a little occasionally, you know, and on one occasion
-in the same direction as Sergeant James Barclay. You remember the small
-affair of Uriah and Bathsheba? My biblical knowledge is a trifle rusty,
-I fear, but you will find the story in the first or second of Samuel."
-
-
-
-
-Adventure VIII. The Resident Patient
-
-
-Glancing over the somewhat incoherent series of Memoirs with which I
-have endeavored to illustrate a few of the mental peculiarities of my
-friend Mr. Sherlock Holmes, I have been struck by the difficulty which I
-have experienced in picking out examples which shall in every way answer
-my purpose. For in those cases in which Holmes has performed some tour
-de force of analytical reasoning, and has demonstrated the value of his
-peculiar methods of investigation, the facts themselves have often been
-so slight or so commonplace that I could not feel justified in laying
-them before the public. On the other hand, it has frequently happened
-that he has been concerned in some research where the facts have been of
-the most remarkable and dramatic character, but where the share which he
-has himself taken in determining their causes has been less pronounced
-than I, as his biographer, could wish. The small matter which I have
-chronicled under the heading of "A Study in Scarlet," and that other
-later one connected with the loss of the Gloria Scott, may serve as
-examples of this Scylla and Charybdis which are forever threatening the
-historian. It may be that in the business of which I am now about to
-write the part which my friend played is not sufficiently accentuated;
-and yet the whole train of circumstances is so remarkable that I cannot
-bring myself to omit it entirely from this series.
-
-It had been a close, rainy day in October. Our blinds were half-drawn,
-and Holmes lay curled upon the sofa, reading and re-reading a letter
-which he had received by the morning post. For myself, my term of
-service in India had trained me to stand heat better than cold, and
-a thermometer of 90 was no hardship. But the paper was uninteresting.
-Parliament had risen. Everybody was out of town, and I yearned for the
-glades of the New Forest or the shingle of Southsea. A depleted bank
-account had caused me to postpone my holiday, and as to my companion,
-neither the country nor the sea presented the slightest attraction to
-him. He loved to lie in the very centre of five millions of people, with
-his filaments stretching out and running through them, responsive to
-every little rumor or suspicion of unsolved crime. Appreciation of
-Nature found no place among his many gifts, and his only change was
-when he turned his mind from the evil-doer of the town to track down his
-brother of the country.
-
-Finding that Holmes was too absorbed for conversation, I had tossed
-aside the barren paper, and leaning back in my chair, I fell into a
-brown study. Suddenly my companion's voice broke in upon my thoughts.
-
-"You are right, Watson," said he. "It does seem a very preposterous way
-of settling a dispute."
-
-"Most preposterous!" I exclaimed, and then, suddenly realizing how
-he had echoed the inmost thought of my soul, I sat up in my chair and
-stared at him in blank amazement.
-
-"What is this, Holmes?" I cried. "This is beyond anything which I could
-have imagined."
-
-He laughed heartily at my perplexity.
-
-"You remember," said he, "that some little time ago, when I read you the
-passage in one of Poe's sketches, in which a close reasoner follows the
-unspoken thought of his companion, you were inclined to treat the
-matter as a mere tour de force of the author. On my remarking that I
-was constantly in the habit of doing the same thing you expressed
-incredulity."
-
-"Oh, no!"
-
-"Perhaps not with your tongue, my dear Watson, but certainly with your
-eyebrows. So when I saw you throw down your paper and enter upon a train
-of thought, I was very happy to have the opportunity of reading it
-off, and eventually of breaking into it, as a proof that I had been in
-rapport with you."
-
-But I was still far from satisfied. "In the example which you read to
-me," said I, "the reasoner drew his conclusions from the actions of the
-man whom he observed. If I remember right, he stumbled over a heap
-of stones, looked up at the stars, and so on. But I have been seated
-quietly in my chair, and what clues can I have given you?"
-
-"You do yourself an injustice. The features are given to man as the
-means by which he shall express his emotions, and yours are faithful
-servants."
-
-"Do you mean to say that you read my train of thoughts from my
-features?"
-
-"Your features, and especially your eyes. Perhaps you cannot yourself
-recall how your reverie commenced?"
-
-"No, I cannot."
-
-"Then I will tell you. After throwing down your paper, which was the
-action which drew my attention to you, you sat for half a minute with
-a vacant expression. Then your eyes fixed themselves upon your
-newly-framed picture of General Gordon, and I saw by the alteration in
-your face that a train of thought had been started. But it did not lead
-very far. Your eyes turned across to the unframed portrait of Henry Ward
-Beecher which stands upon the top of your books. You then glanced up at
-the wall, and of course your meaning was obvious. You were thinking
-that if the portrait were framed it would just cover that bare space and
-correspond with Gordon's picture over there."
-
-"You have followed me wonderfully!" I exclaimed.
-
-"So far I could hardly have gone astray. But now your thoughts went
-back to Beecher, and you looked hard across as if you were studying
-the character in his features. Then your eyes ceased to pucker, but
-you continued to look across, and your face was thoughtful. You were
-recalling the incidents of Beecher's career. I was well aware that you
-could not do this without thinking of the mission which he undertook
-on behalf of the North at the time of the Civil War, for I remember
-you expressing your passionate indignation at the way in which he was
-received by the more turbulent of our people. You felt so strongly about
-it that I knew you could not think of Beecher without thinking of that
-also. When a moment later I saw your eyes wander away from the picture,
-I suspected that your mind had now turned to the Civil War, and when
-I observed that your lips set, your eyes sparkled, and your hands
-clinched, I was positive that you were indeed thinking of the gallantry
-which was shown by both sides in that desperate struggle. But then,
-again, your face grew sadder; you shook your head. You were dwelling
-upon the sadness and horror and useless waste of life. Your hand stole
-towards your own old wound, and a smile quivered on your lips,
-which showed me that the ridiculous side of this method of settling
-international questions had forced itself upon your mind. At this point
-I agreed with you that it was preposterous, and was glad to find that
-all my deductions had been correct."
-
-"Absolutely!" said I. "And now that you have explained it, I confess
-that I am as amazed as before."
-
-"It was very superficial, my dear Watson, I assure you. I should not
-have intruded it upon your attention had you not shown some incredulity
-the other day. But the evening has brought a breeze with it. What do you
-say to a ramble through London?"
-
-I was weary of our little sitting-room and gladly acquiesced. For
-three hours we strolled about together, watching the ever-changing
-kaleidoscope of life as it ebbs and flows through Fleet Street and the
-Strand. His characteristic talk, with its keen observance of detail
-and subtle power of inference held me amused and enthralled. It was ten
-o'clock before we reached Baker Street again. A brougham was waiting at
-our door.
-
-"Hum! A doctor's--general practitioner, I perceive," said Holmes. "Not
-been long in practice, but has had a good deal to do. Come to consult
-us, I fancy! Lucky we came back!"
-
-I was sufficiently conversant with Holmes's methods to be able to follow
-his reasoning, and to see that the nature and state of the various
-medical instruments in the wicker basket which hung in the lamplight
-inside the brougham had given him the data for his swift deduction.
-The light in our window above showed that this late visit was indeed
-intended for us. With some curiosity as to what could have sent a
-brother medico to us at such an hour, I followed Holmes into our
-sanctum.
-
-A pale, taper-faced man with sandy whiskers rose up from a chair by the
-fire as we entered. His age may not have been more than three or four
-and thirty, but his haggard expression and unhealthy hue told of a life
-which has sapped his strength and robbed him of his youth. His manner
-was nervous and shy, like that of a sensitive gentleman, and the thin
-white hand which he laid on the mantelpiece as he rose was that of an
-artist rather than of a surgeon. His dress was quiet and sombre--a black
-frock-coat, dark trousers, and a touch of color about his necktie.
-
-"Good-evening, doctor," said Holmes, cheerily. "I am glad to see that
-you have only been waiting a very few minutes."
-
-"You spoke to my coachman, then?"
-
-"No, it was the candle on the side-table that told me. Pray resume your
-seat and let me know how I can serve you."
-
-"My name is Doctor Percy Trevelyan," said our visitor, "and I live at
-403 Brook Street."
-
-"Are you not the author of a monograph upon obscure nervous lesions?" I
-asked.
-
-His pale cheeks flushed with pleasure at hearing that his work was known
-to me.
-
-"I so seldom hear of the work that I thought it was quite dead," said
-he. "My publishers gave me a most discouraging account of its sale. You
-are yourself, I presume, a medical man?"
-
-"A retired army surgeon."
-
-"My own hobby has always been nervous disease. I should wish to make it
-an absolute specialty, but, of course, a man must take what he can get
-at first. This, however, is beside the question, Mr. Sherlock Holmes,
-and I quite appreciate how valuable your time is. The fact is that a
-very singular train of events has occurred recently at my house in Brook
-Street, and to-night they came to such a head that I felt it was quite
-impossible for me to wait another hour before asking for your advice and
-assistance."
-
-Sherlock Holmes sat down and lit his pipe. "You are very welcome
-to both," said he. "Pray let me have a detailed account of what the
-circumstances are which have disturbed you."
-
-"One or two of them are so trivial," said Dr. Trevelyan, "that really
-I am almost ashamed to mention them. But the matter is so inexplicable,
-and the recent turn which it has taken is so elaborate, that I shall
-lay it all before you, and you shall judge what is essential and what is
-not.
-
-"I am compelled, to begin with, to say something of my own college
-career. I am a London University man, you know, and I am sure that your
-will not think that I am unduly singing my own praises if I say that my
-student career was considered by my professors to be a very promising
-one. After I had graduated I continued to devote myself to research,
-occupying a minor position in King's College Hospital, and I was
-fortunate enough to excite considerable interest by my research into the
-pathology of catalepsy, and finally to win the Bruce Pinkerton prize and
-medal by the monograph on nervous lesions to which your friend has
-just alluded. I should not go too far if I were to say that there was a
-general impression at that time that a distinguished career lay before
-me.
-
-"But the one great stumbling-block lay in my want of capital. As you
-will readily understand, a specialist who aims high is compelled to
-start in one of a dozen streets in the Cavendish Square quarter, all
-of which entail enormous rents and furnishing expenses. Besides this
-preliminary outlay, he must be prepared to keep himself for some years,
-and to hire a presentable carriage and horse. To do this was quite
-beyond my power, and I could only hope that by economy I might in ten
-years' time save enough to enable me to put up my plate. Suddenly,
-however, an unexpected incident opened up quite a new prospect to me.
-
-"This was a visit from a gentleman of the name of Blessington, who was a
-complete stranger to me. He came up to my room one morning, and plunged
-into business in an instant.
-
-"'You are the same Percy Trevelyan who has had so distinguished a career
-and won a great prize lately?' said he.
-
-"I bowed.
-
-"'Answer me frankly,' he continued, 'for you will find it to your
-interest to do so. You have all the cleverness which makes a successful
-man. Have you the tact?'
-
-"I could not help smiling at the abruptness of the question.
-
-"'I trust that I have my share,' I said.
-
-"'Any bad habits? Not drawn towards drink, eh?'
-
-"'Really, sir!' I cried.
-
-"'Quite right! That's all right! But I was bound to ask. With all these
-qualities, why are you not in practice?'
-
-"I shrugged my shoulders.
-
-"'Come, come!' said he, in his bustling way. 'It's the old story. More
-in your brains than in your pocket, eh? What would you say if I were to
-start you in Brook Street?'
-
-"I stared at him in astonishment.
-
-"'Oh, it's for my sake, not for yours,' he cried. 'I'll be perfectly
-frank with you, and if it suits you it will suit me very well. I have a
-few thousands to invest, d'ye see, and I think I'll sink them in you.'
-
-"'But why?' I gasped.
-
-"'Well, it's just like any other speculation, and safer than most.'
-
-"'What am I to do, then?'
-
-"'I'll tell you. I'll take the house, furnish it, pay the maids, and run
-the whole place. All you have to do is just to wear out your chair in
-the consulting-room. I'll let you have pocket-money and everything. Then
-you hand over to me three quarters of what you earn, and you keep the
-other quarter for yourself.'
-
-"This was the strange proposal, Mr. Holmes, with which the man
-Blessington approached me. I won't weary you with the account of how
-we bargained and negotiated. It ended in my moving into the house next
-Lady-day, and starting in practice on very much the same conditions as
-he had suggested. He came himself to live with me in the character of a
-resident patient. His heart was weak, it appears, and he needed constant
-medical supervision. He turned the two best rooms of the first floor
-into a sitting-room and bedroom for himself. He was a man of singular
-habits, shunning company and very seldom going out. His life was
-irregular, but in one respect he was regularity itself. Every evening,
-at the same hour, he walked into the consulting-room, examined the
-books, put down five and three-pence for every guinea that I had earned,
-and carried the rest off to the strong-box in his own room.
-
-"I may say with confidence that he never had occasion to regret his
-speculation. From the first it was a success. A few good cases and the
-reputation which I had won in the hospital brought me rapidly to the
-front, and during the last few years I have made him a rich man.
-
-"So much, Mr. Holmes, for my past history and my relations with Mr.
-Blessington. It only remains for me now to tell you what has occurred to
-bring me here to-night.
-
-"Some weeks ago Mr. Blessington came down to me in, as it seemed to me,
-a state of considerable agitation. He spoke of some burglary which, he
-said, had been committed in the West End, and he appeared, I remember,
-to be quite unnecessarily excited about it, declaring that a day should
-not pass before we should add stronger bolts to our windows and doors.
-For a week he continued to be in a peculiar state of restlessness,
-peering continually out of the windows, and ceasing to take the short
-walk which had usually been the prelude to his dinner. From his manner
-it struck me that he was in mortal dread of something or somebody, but
-when I questioned him upon the point he became so offensive that I was
-compelled to drop the subject. Gradually, as time passed, his fears
-appeared to die away, and he had renewed his former habits, when a fresh
-event reduced him to the pitiable state of prostration in which he now
-lies.
-
-"What happened was this. Two days ago I received the letter which I now
-read to you. Neither address nor date is attached to it.
-
-"'A Russian nobleman who is now resident in England,' it runs, 'would
-be glad to avail himself of the professional assistance of Dr. Percy
-Trevelyan. He has been for some years a victim to cataleptic attacks, on
-which, as is well known, Dr. Trevelyan is an authority. He proposes to
-call at about quarter past six to-morrow evening, if Dr. Trevelyan will
-make it convenient to be at home.'
-
-"This letter interested me deeply, because the chief difficulty in the
-study of catalepsy is the rareness of the disease. You may believe,
-then, that I was in my consulting-room when, at the appointed hour, the
-page showed in the patient.
-
-"He was an elderly man, thin, demure, and commonplace--by no means the
-conception one forms of a Russian nobleman. I was much more struck by
-the appearance of his companion. This was a tall young man, surprisingly
-handsome, with a dark, fierce face, and the limbs and chest of a
-Hercules. He had his hand under the other's arm as they entered, and
-helped him to a chair with a tenderness which one would hardly have
-expected from his appearance.
-
-"'You will excuse my coming in, doctor,' said he to me, speaking English
-with a slight lisp. 'This is my father, and his health is a matter of
-the most overwhelming importance to me.'
-
-"I was touched by this filial anxiety. 'You would, perhaps, care to
-remain during the consultation?' said I.
-
-"'Not for the world,' he cried with a gesture of horror. 'It is more
-painful to me than I can express. If I were to see my father in one of
-these dreadful seizures I am convinced that I should never survive
-it. My own nervous system is an exceptionally sensitive one. With your
-permission, I will remain in the waiting-room while you go into my
-father's case.'
-
-"To this, of course, I assented, and the young man withdrew. The patient
-and I then plunged into a discussion of his case, of which I took
-exhaustive notes. He was not remarkable for intelligence, and his
-answers were frequently obscure, which I attributed to his limited
-acquaintance with our language. Suddenly, however, as I sat writing,
-he ceased to give any answer at all to my inquiries, and on my turning
-towards him I was shocked to see that he was sitting bolt upright in his
-chair, staring at me with a perfectly blank and rigid face. He was again
-in the grip of his mysterious malady.
-
-"My first feeling, as I have just said, was one of pity and horror.
-My second, I fear, was rather one of professional satisfaction. I made
-notes of my patient's pulse and temperature, tested the rigidity of his
-muscles, and examined his reflexes. There was nothing markedly abnormal
-in any of these conditions, which harmonized with my former experiences.
-I had obtained good results in such cases by the inhalation of nitrite
-of amyl, and the present seemed an admirable opportunity of testing
-its virtues. The bottle was downstairs in my laboratory, so leaving my
-patient seated in his chair, I ran down to get it. There was some little
-delay in finding it--five minutes, let us say--and then I returned.
-Imagine my amazement to find the room empty and the patient gone.
-
-"Of course, my first act was to run into the waiting-room. The son had
-gone also. The hall door had been closed, but not shut. My page who
-admits patients is a new boy and by no means quick. He waits downstairs,
-and runs up to show patients out when I ring the consulting-room bell.
-He had heard nothing, and the affair remained a complete mystery. Mr.
-Blessington came in from his walk shortly afterwards, but I did not say
-anything to him upon the subject, for, to tell the truth, I have got in
-the way of late of holding as little communication with him as possible.
-
-"Well, I never thought that I should see anything more of the Russian
-and his son, so you can imagine my amazement when, at the very same hour
-this evening, they both came marching into my consulting-room, just as
-they had done before.
-
-"'I feel that I owe you a great many apologies for my abrupt departure
-yesterday, doctor,' said my patient.
-
-"'I confess that I was very much surprised at it,' said I.
-
-"'Well, the fact is,' he remarked, 'that when I recover from these
-attacks my mind is always very clouded as to all that has gone before. I
-woke up in a strange room, as it seemed to me, and made my way out into
-the street in a sort of dazed way when you were absent.'
-
-"'And I,' said the son, 'seeing my father pass the door of the
-waiting-room, naturally thought that the consultation had come to an
-end. It was not until we had reached home that I began to realize the
-true state of affairs.'
-
-"'Well,' said I, laughing, 'there is no harm done except that you
-puzzled me terribly; so if you, sir, would kindly step into the
-waiting-room I shall be happy to continue our consultation which was
-brought to so abrupt an ending.'
-
-"'For half an hour or so I discussed that old gentleman's symptoms with
-him, and then, having prescribed for him, I saw him go off upon the arm
-of his son.
-
-"I have told you that Mr. Blessington generally chose this hour of the
-day for his exercise. He came in shortly afterwards and passed upstairs.
-An instant later I heard him running down, and he burst into my
-consulting-room like a man who is mad with panic.
-
-"'Who has been in my room?' he cried.
-
-"'No one,' said I.
-
-"'It's a lie! He yelled. 'Come up and look!'
-
-"I passed over the grossness of his language, as he seemed half out of
-his mind with fear. When I went upstairs with him he pointed to several
-footprints upon the light carpet.
-
-"'D'you mean to say those are mine?' he cried.
-
-"They were certainly very much larger than any which he could have made,
-and were evidently quite fresh. It rained hard this afternoon, as you
-know, and my patients were the only people who called. It must have been
-the case, then, that the man in the waiting-room had, for some unknown
-reason, while I was busy with the other, ascended to the room of my
-resident patient. Nothing had been touched or taken, but there were the
-footprints to prove that the intrusion was an undoubted fact.
-
-"Mr. Blessington seemed more excited over the matter than I should have
-thought possible, though of course it was enough to disturb anybody's
-peace of mind. He actually sat crying in an arm-chair, and I could
-hardly get him to speak coherently. It was his suggestion that I should
-come round to you, and of course I at once saw the propriety of it,
-for certainly the incident is a very singular one, though he appears to
-completely overrate its importance. If you would only come back with me
-in my brougham, you would at least be able to soothe him, though I
-can hardly hope that you will be able to explain this remarkable
-occurrence."
-
-Sherlock Holmes had listened to this long narrative with an intentness
-which showed me that his interest was keenly aroused. His face was as
-impassive as ever, but his lids had drooped more heavily over his eyes,
-and his smoke had curled up more thickly from his pipe to emphasize each
-curious episode in the doctor's tale. As our visitor concluded, Holmes
-sprang up without a word, handed me my hat, picked his own from the
-table, and followed Dr. Trevelyan to the door. Within a quarter of an
-hour we had been dropped at the door of the physician's residence
-in Brook Street, one of those sombre, flat-faced houses which one
-associates with a West-End practice. A small page admitted us, and we
-began at once to ascend the broad, well-carpeted stair.
-
-But a singular interruption brought us to a standstill. The light at
-the top was suddenly whisked out, and from the darkness came a reedy,
-quivering voice.
-
-"I have a pistol," it cried. "I give you my word that I'll fire if you
-come any nearer."
-
-"This really grows outrageous, Mr. Blessington," cried Dr. Trevelyan.
-
-"Oh, then it is you, doctor," said the voice, with a great heave of
-relief. "But those other gentlemen, are they what they pretend to be?"
-
-We were conscious of a long scrutiny out of the darkness.
-
-"Yes, yes, it's all right," said the voice at last. "You can come up,
-and I am sorry if my precautions have annoyed you."
-
-He relit the stair gas as he spoke, and we saw before us a
-singular-looking man, whose appearance, as well as his voice, testified
-to his jangled nerves. He was very fat, but had apparently at some time
-been much fatter, so that the skin hung about his face in loose pouches,
-like the cheeks of a blood-hound. He was of a sickly color, and his
-thin, sandy hair seemed to bristle up with the intensity of his emotion.
-In his hand he held a pistol, but he thrust it into his pocket as we
-advanced.
-
-"Good-evening, Mr. Holmes," said he. "I am sure I am very much obliged
-to you for coming round. No one ever needed your advice more than I do.
-I suppose that Dr. Trevelyan has told you of this most unwarrantable
-intrusion into my rooms."
-
-"Quite so," said Holmes. "Who are these two men Mr. Blessington, and why
-do they wish to molest you?"
-
-"Well, well," said the resident patient, in a nervous fashion, "of
-course it is hard to say that. You can hardly expect me to answer that,
-Mr. Holmes."
-
-"Do you mean that you don't know?"
-
-"Come in here, if you please. Just have the kindness to step in here."
-
-He led the way into his bedroom, which was large and comfortably
-furnished.
-
-"You see that," said he, pointing to a big black box at the end of his
-bed. "I have never been a very rich man, Mr. Holmes--never made but
-one investment in my life, as Dr. Trevelyan would tell you. But I don't
-believe in bankers. I would never trust a banker, Mr. Holmes. Between
-ourselves, what little I have is in that box, so you can understand what
-it means to me when unknown people force themselves into my rooms."
-
-Holmes looked at Blessington in his questioning way and shook his head.
-
-"I cannot possibly advise you if you try to deceive me," said he.
-
-"But I have told you everything."
-
-Holmes turned on his heel with a gesture of disgust. "Good-night, Dr.
-Trevelyan," said he.
-
-"And no advice for me?" cried Blessington, in a breaking voice.
-
-"My advice to you, sir, is to speak the truth."
-
-A minute later we were in the street and walking for home. We had
-crossed Oxford Street and were half way down Harley Street before I
-could get a word from my companion.
-
-"Sorry to bring you out on such a fool's errand, Watson," he said at
-last. "It is an interesting case, too, at the bottom of it."
-
-"I can make little of it," I confessed.
-
-"Well, it is quite evident that there are two men--more, perhaps, but
-at least two--who are determined for some reason to get at this fellow
-Blessington. I have no doubt in my mind that both on the first and on
-the second occasion that young man penetrated to Blessington's room,
-while his confederate, by an ingenious device, kept the doctor from
-interfering."
-
-"And the catalepsy?"
-
-"A fraudulent imitation, Watson, though I should hardly dare to hint as
-much to our specialist. It is a very easy complaint to imitate. I have
-done it myself."
-
-"And then?"
-
-"By the purest chance Blessington was out on each occasion. Their reason
-for choosing so unusual an hour for a consultation was obviously to
-insure that there should be no other patient in the waiting-room. It
-just happened, however, that this hour coincided with Blessington's
-constitutional, which seems to show that they were not very well
-acquainted with his daily routine. Of course, if they had been merely
-after plunder they would at least have made some attempt to search for
-it. Besides, I can read in a man's eye when it is his own skin that he
-is frightened for. It is inconceivable that this fellow could have made
-two such vindictive enemies as these appear to be without knowing of it.
-I hold it, therefore, to be certain that he does know who these men are,
-and that for reasons of his own he suppresses it. It is just possible
-that to-morrow may find him in a more communicative mood."
-
-"Is there not one alternative," I suggested, "grotesquely improbably,
-no doubt, but still just conceivable? Might the whole story of the
-cataleptic Russian and his son be a concoction of Dr. Trevelyan's, who
-has, for his own purposes, been in Blessington's rooms?"
-
-I saw in the gaslight that Holmes wore an amused smile at this brilliant
-departure of mine.
-
-"My dear fellow," said he, "it was one of the first solutions which
-occurred to me, but I was soon able to corroborate the doctor's tale.
-This young man has left prints upon the stair-carpet which made it quite
-superfluous for me to ask to see those which he had made in the room.
-When I tell you that his shoes were square-toed instead of being pointed
-like Blessington's, and were quite an inch and a third longer than the
-doctor's, you will acknowledge that there can be no doubt as to his
-individuality. But we may sleep on it now, for I shall be surprised if
-we do not hear something further from Brook Street in the morning."
-
-
-Sherlock Holmes's prophecy was soon fulfilled, and in a dramatic
-fashion. At half-past seven next morning, in the first glimmer of
-daylight, I found him standing by my bedside in his dressing-gown.
-
-"There's a brougham waiting for us, Watson," said he.
-
-"What's the matter, then?"
-
-"The Brook Street business."
-
-"Any fresh news?"
-
-"Tragic, but ambiguous," said he, pulling up the blind. "Look at this--a
-sheet from a note-book, with 'For God's sake come at once--P. T.,'
-scrawled upon it in pencil. Our friend, the doctor, was hard put to
-it when he wrote this. Come along, my dear fellow, for it's an urgent
-call."
-
-In a quarter of an hour or so we were back at the physician's house. He
-came running out to meet us with a face of horror.
-
-"Oh, such a business!" he cried, with his hands to his temples.
-
-"What then?"
-
-"Blessington has committed suicide!"
-
-Holmes whistled.
-
-"Yes, he hanged himself during the night."
-
-We had entered, and the doctor had preceded us into what was evidently
-his waiting-room.
-
-"I really hardly know what I am doing," he cried. "The police are
-already upstairs. It has shaken me most dreadfully."
-
-"When did you find it out?"
-
-"He has a cup of tea taken in to him early every morning. When the maid
-entered, about seven, there the unfortunate fellow was hanging in the
-middle of the room. He had tied his cord to the hook on which the heavy
-lamp used to hang, and he had jumped off from the top of the very box
-that he showed us yesterday."
-
-Holmes stood for a moment in deep thought.
-
-"With your permission," said he at last, "I should like to go upstairs
-and look into the matter."
-
-We both ascended, followed by the doctor.
-
-It was a dreadful sight which met us as we entered the bedroom door. I
-have spoken of the impression of flabbiness which this man Blessington
-conveyed. As he dangled from the hook it was exaggerated and intensified
-until he was scarce human in his appearance. The neck was drawn out
-like a plucked chicken's, making the rest of him seem the more obese and
-unnatural by the contrast. He was clad only in his long night-dress, and
-his swollen ankles and ungainly feet protruded starkly from beneath it.
-Beside him stood a smart-looking police-inspector, who was taking notes
-in a pocket-book.
-
-"Ah, Mr. Holmes," said he, heartily, as my friend entered, "I am
-delighted to see you."
-
-"Good-morning, Lanner," answered Holmes; "you won't think me an
-intruder, I am sure. Have you heard of the events which led up to this
-affair?"
-
-"Yes, I heard something of them."
-
-"Have you formed any opinion?"
-
-"As far as I can see, the man has been driven out of his senses by
-fright. The bed has been well slept in, you see. There's his impression
-deep enough. It's about five in the morning, you know, that suicides are
-most common. That would be about his time for hanging himself. It seems
-to have been a very deliberate affair."
-
-"I should say that he has been dead about three hours, judging by the
-rigidity of the muscles," said I.
-
-"Noticed anything peculiar about the room?" asked Holmes.
-
-"Found a screw-driver and some screws on the wash-hand stand. Seems to
-have smoked heavily during the night, too. Here are four cigar-ends that
-I picked out of the fireplace."
-
-"Hum!" said Holmes, "have you got his cigar-holder?"
-
-"No, I have seen none."
-
-"His cigar-case, then?"
-
-"Yes, it was in his coat-pocket."
-
-Holmes opened it and smelled the single cigar which it contained.
-
-"Oh, this is an Havana, and these others are cigars of the peculiar sort
-which are imported by the Dutch from their East Indian colonies. They
-are usually wrapped in straw, you know, and are thinner for their length
-than any other brand." He picked up the four ends and examined them with
-his pocket-lens.
-
-"Two of these have been smoked from a holder and two without," said he.
-"Two have been cut by a not very sharp knife, and two have had the ends
-bitten off by a set of excellent teeth. This is no suicide, Mr. Lanner.
-It is a very deeply planned and cold-blooded murder."
-
-"Impossible!" cried the inspector.
-
-"And why?"
-
-"Why should any one murder a man in so clumsy a fashion as by hanging
-him?"
-
-"That is what we have to find out."
-
-"How could they get in?"
-
-"Through the front door."
-
-"It was barred in the morning."
-
-"Then it was barred after them."
-
-"How do you know?"
-
-"I saw their traces. Excuse me a moment, and I may be able to give you
-some further information about it."
-
-He went over to the door, and turning the lock he examined it in his
-methodical way. Then he took out the key, which was on the inside, and
-inspected that also. The bed, the carpet, the chairs the mantelpiece,
-the dead body, and the rope were each in turn examined, until at last he
-professed himself satisfied, and with my aid and that of the inspector
-cut down the wretched object and laid it reverently under a sheet.
-
-"How about this rope?" he asked.
-
-"It is cut off this," said Dr. Trevelyan, drawing a large coil from
-under the bed. "He was morbidly nervous of fire, and always kept this
-beside him, so that he might escape by the window in case the stairs
-were burning."
-
-"That must have saved them trouble," said Holmes, thoughtfully. "Yes,
-the actual facts are very plain, and I shall be surprised if by the
-afternoon I cannot give you the reasons for them as well. I will take
-this photograph of Blessington, which I see upon the mantelpiece, as it
-may help me in my inquiries."
-
-"But you have told us nothing!" cried the doctor.
-
-"Oh, there can be no doubt as to the sequence of events," said Holmes.
-"There were three of them in it: the young man, the old man, and a
-third, to whose identity I have no clue. The first two, I need hardly
-remark, are the same who masqueraded as the Russian count and his son,
-so we can give a very full description of them. They were admitted by
-a confederate inside the house. If I might offer you a word of advice,
-Inspector, it would be to arrest the page, who, as I understand, has
-only recently come into your service, Doctor."
-
-"The young imp cannot be found," said Dr. Trevelyan; "the maid and the
-cook have just been searching for him."
-
-Holmes shrugged his shoulders.
-
-"He has played a not unimportant part in this drama," said he. "The
-three men having ascended the stairs, which they did on tiptoe, the
-elder man first, the younger man second, and the unknown man in the
-rear--"
-
-"My dear Holmes!" I ejaculated.
-
-"Oh, there could be no question as to the superimposing of the
-footmarks. I had the advantage of learning which was which last night.
-They ascended, then, to Mr. Blessington's room, the door of which they
-found to be locked. With the help of a wire, however, they forced round
-the key. Even without the lens you will perceive, by the scratches on
-this ward, where the pressure was applied.
-
-"On entering the room their first proceeding must have been to gag Mr.
-Blessington. He may have been asleep, or he may have been so paralyzed
-with terror as to have been unable to cry out. These walls are thick,
-and it is conceivable that his shriek, if he had time to utter one, was
-unheard.
-
-"Having secured him, it is evident to me that a consultation of some
-sort was held. Probably it was something in the nature of a judicial
-proceeding. It must have lasted for some time, for it was then that
-these cigars were smoked. The older man sat in that wicker chair; it
-was he who used the cigar-holder. The younger man sat over yonder; he
-knocked his ash off against the chest of drawers. The third fellow paced
-up and down. Blessington, I think, sat upright in the bed, but of that I
-cannot be absolutely certain.
-
-"Well, it ended by their taking Blessington and hanging him. The matter
-was so prearranged that it is my belief that they brought with them
-some sort of block or pulley which might serve as a gallows. That
-screw-driver and those screws were, as I conceive, for fixing it up.
-Seeing the hook, however they naturally saved themselves the trouble.
-Having finished their work they made off, and the door was barred behind
-them by their confederate."
-
-We had all listened with the deepest interest to this sketch of the
-night's doings, which Holmes had deduced from signs so subtle and minute
-that, even when he had pointed them out to us, we could scarcely follow
-him in his reasoning. The inspector hurried away on the instant to make
-inquiries about the page, while Holmes and I returned to Baker Street
-for breakfast.
-
-"I'll be back by three," said he, when we had finished our meal. "Both
-the inspector and the doctor will meet me here at that hour, and I hope
-by that time to have cleared up any little obscurity which the case may
-still present."
-
-
-Our visitors arrived at the appointed time, but it was a quarter to
-four before my friend put in an appearance. From his expression as he
-entered, however, I could see that all had gone well with him.
-
-"Any news, Inspector?"
-
-"We have got the boy, sir."
-
-"Excellent, and I have got the men."
-
-"You have got them!" we cried, all three.
-
-"Well, at least I have got their identity. This so-called Blessington
-is, as I expected, well known at headquarters, and so are his
-assailants. Their names are Biddle, Hayward, and Moffat."
-
-"The Worthingdon bank gang," cried the inspector.
-
-"Precisely," said Holmes.
-
-"Then Blessington must have been Sutton."
-
-"Exactly," said Holmes.
-
-"Why, that makes it as clear as crystal," said the inspector.
-
-But Trevelyan and I looked at each other in bewilderment.
-
-"You must surely remember the great Worthingdon bank business," said
-Holmes. "Five men were in it--these four and a fifth called Cartwright.
-Tobin, the care-taker, was murdered, and the thieves got away with seven
-thousand pounds. This was in 1875. They were all five arrested, but the
-evidence against them was by no means conclusive. This Blessington or
-Sutton, who was the worst of the gang, turned informer. On his evidence
-Cartwright was hanged and the other three got fifteen years apiece. When
-they got out the other day, which was some years before their full term,
-they set themselves, as you perceive, to hunt down the traitor and to
-avenge the death of their comrade upon him. Twice they tried to get at
-him and failed; a third time, you see, it came off. Is there anything
-further which I can explain, Dr. Trevelyan?"
-
-"I think you have made it all remarkable clear," said the doctor. "No
-doubt the day on which he was perturbed was the day when he had seen of
-their release in the newspapers."
-
-"Quite so. His talk about a burglary was the merest blind."
-
-"But why could he not tell you this?"
-
-"Well, my dear sir, knowing the vindictive character of his old
-associates, he was trying to hide his own identity from everybody as
-long as he could. His secret was a shameful one, and he could not bring
-himself to divulge it. However, wretch as he was, he was still living
-under the shield of British law, and I have no doubt, Inspector, that
-you will see that, though that shield may fail to guard, the sword of
-justice is still there to avenge."
-
-
-Such were the singular circumstances in connection with the Resident
-Patient and the Brook Street Doctor. From that night nothing has
-been seen of the three murderers by the police, and it is surmised
-at Scotland Yard that they were among the passengers of the ill-fated
-steamer Norah Creina, which was lost some years ago with all hands
-upon the Portuguese coast, some leagues to the north of Oporto. The
-proceedings against the page broke down for want of evidence, and the
-Brook Street Mystery, as it was called, has never until now been fully
-dealt with in any public print.
-
-
-
-
-Adventure IX. The Greek Interpreter
-
-
-During my long and intimate acquaintance with Mr. Sherlock Holmes I had
-never heard him refer to his relations, and hardly ever to his own early
-life. This reticence upon his part had increased the somewhat inhuman
-effect which he produced upon me, until sometimes I found myself
-regarding him as an isolated phenomenon, a brain without a heart, as
-deficient in human sympathy as he was pre-eminent in intelligence. His
-aversion to women and his disinclination to form new friendships were
-both typical of his unemotional character, but not more so than his
-complete suppression of every reference to his own people. I had come to
-believe that he was an orphan with no relatives living, but one day, to
-my very great surprise, he began to talk to me about his brother.
-
-It was after tea on a summer evening, and the conversation, which had
-roamed in a desultory, spasmodic fashion from golf clubs to the causes
-of the change in the obliquity of the ecliptic, came round at last
-to the question of atavism and hereditary aptitudes. The point under
-discussion was, how far any singular gift in an individual was due to
-his ancestry and how far to his own early training.
-
-"In your own case," said I, "from all that you have told me, it seems
-obvious that your faculty of observation and your peculiar facility for
-deduction are due to your own systematic training."
-
-"To some extent," he answered, thoughtfully. "My ancestors were country
-squires, who appear to have led much the same life as is natural to
-their class. But, none the less, my turn that way is in my veins, and
-may have come with my grandmother, who was the sister of Vernet, the
-French artist. Art in the blood is liable to take the strangest forms."
-
-"But how do you know that it is hereditary?"
-
-"Because my brother Mycroft possesses it in a larger degree than I do."
-
-This was news to me indeed. If there were another man with such singular
-powers in England, how was it that neither police nor public had heard
-of him? I put the question, with a hint that it was my companion's
-modesty which made him acknowledge his brother as his superior. Holmes
-laughed at my suggestion.
-
-"My dear Watson," said he, "I cannot agree with those who rank modesty
-among the virtues. To the logician all things should be seen exactly as
-they are, and to underestimate one's self is as much a departure from
-truth as to exaggerate one's own powers. When I say, therefore, that
-Mycroft has better powers of observation than I, you may take it that I
-am speaking the exact and literal truth."
-
-"Is he your junior?"
-
-"Seven years my senior."
-
-"How comes it that he is unknown?"
-
-"Oh, he is very well known in his own circle."
-
-"Where, then?"
-
-"Well, in the Diogenes Club, for example."
-
-I had never heard of the institution, and my face must have proclaimed
-as much, for Sherlock Holmes pulled out his watch.
-
-"The Diogenes Club is the queerest club in London, and Mycroft one of
-the queerest men. He's always there from quarter to five to twenty to
-eight. It's six now, so if you care for a stroll this beautiful evening
-I shall be very happy to introduce you to two curiosities."
-
-Five minutes later we were in the street, walking towards Regent's
-Circus.
-
-"You wonder," said my companion, "why it is that Mycroft does not use
-his powers for detective work. He is incapable of it."
-
-"But I thought you said--"
-
-"I said that he was my superior in observation and deduction. If the
-art of the detective began and ended in reasoning from an arm-chair, my
-brother would be the greatest criminal agent that ever lived. But he has
-no ambition and no energy. He will not even go out of his way to verify
-his own solutions, and would rather be considered wrong than take the
-trouble to prove himself right. Again and again I have taken a problem
-to him, and have received an explanation which has afterwards proved to
-be the correct one. And yet he was absolutely incapable of working out
-the practical points which must be gone into before a case could be laid
-before a judge or jury."
-
-"It is not his profession, then?"
-
-"By no means. What is to me a means of livelihood is to him the merest
-hobby of a dilettante. He has an extraordinary faculty for figures, and
-audits the books in some of the government departments. Mycroft lodges
-in Pall Mall, and he walks round the corner into Whitehall every morning
-and back every evening. From year's end to year's end he takes no other
-exercise, and is seen nowhere else, except only in the Diogenes Club,
-which is just opposite his rooms."
-
-"I cannot recall the name."
-
-"Very likely not. There are many men in London, you know, who, some from
-shyness, some from misanthropy, have no wish for the company of their
-fellows. Yet they are not averse to comfortable chairs and the latest
-periodicals. It is for the convenience of these that the Diogenes Club
-was started, and it now contains the most unsociable and unclubable men
-in town. No member is permitted to take the least notice of any
-other one. Save in the Stranger's Room, no talking is, under any
-circumstances, allowed, and three offences, if brought to the notice of
-the committee, render the talker liable to expulsion. My brother was one
-of the founders, and I have myself found it a very soothing atmosphere."
-
-We had reached Pall Mall as we talked, and were walking down it from the
-St. James's end. Sherlock Holmes stopped at a door some little distance
-from the Carlton, and, cautioning me not to speak, he led the way into
-the hall. Through the glass paneling I caught a glimpse of a large and
-luxurious room, in which a considerable number of men were sitting about
-and reading papers, each in his own little nook. Holmes showed me into a
-small chamber which looked out into Pall Mall, and then, leaving me for
-a minute, he came back with a companion whom I knew could only be his
-brother.
-
-Mycroft Holmes was a much larger and stouter man than Sherlock. His body
-was absolutely corpulent, but his face, though massive, had preserved
-something of the sharpness of expression which was so remarkable in that
-of his brother. His eyes, which were of a peculiarly light, watery gray,
-seemed to always retain that far-away, introspective look which I had
-only observed in Sherlock's when he was exerting his full powers.
-
-"I am glad to meet you, sir," said he, putting out a broad, fat hand
-like the flipper of a seal. "I hear of Sherlock everywhere since you
-became his chronicler. By the way, Sherlock, I expected to see you round
-last week, to consult me over that Manor House case. I thought you might
-be a little out of your depth."
-
-"No, I solved it," said my friend, smiling.
-
-"It was Adams, of course."
-
-"Yes, it was Adams."
-
-"I was sure of it from the first." The two sat down together in the
-bow-window of the club. "To any one who wishes to study mankind this is
-the spot," said Mycroft. "Look at the magnificent types! Look at these
-two men who are coming towards us, for example."
-
-"The billiard-marker and the other?"
-
-"Precisely. What do you make of the other?"
-
-The two men had stopped opposite the window. Some chalk marks over the
-waistcoat pocket were the only signs of billiards which I could see
-in one of them. The other was a very small, dark fellow, with his hat
-pushed back and several packages under his arm.
-
-"An old soldier, I perceive," said Sherlock.
-
-"And very recently discharged," remarked the brother.
-
-"Served in India, I see."
-
-"And a non-commissioned officer."
-
-"Royal Artillery, I fancy," said Sherlock.
-
-"And a widower."
-
-"But with a child."
-
-"Children, my dear boy, children."
-
-"Come," said I, laughing, "this is a little too much."
-
-"Surely," answered Holmes, "it is not hard to say that a man with that
-bearing, expression of authority, and sunbaked skin, is a soldier, is
-more than a private, and is not long from India."
-
-"That he has not left the service long is shown by his still wearing his
-ammunition boots, as they are called," observed Mycroft.
-
-"He had not the cavalry stride, yet he wore his hat on one side, as
-is shown by the lighter skin of that side of his brow. His weight is
-against his being a sapper. He is in the artillery."
-
-"Then, of course, his complete mourning shows that he has lost some one
-very dear. The fact that he is doing his own shopping looks as though
-it were his wife. He has been buying things for children, you perceive.
-There is a rattle, which shows that one of them is very young. The wife
-probably died in childbed. The fact that he has a picture-book under his
-arm shows that there is another child to be thought of."
-
-I began to understand what my friend meant when he said that his brother
-possessed even keener faculties that he did himself. He glanced across
-at me and smiled. Mycroft took snuff from a tortoise-shell box, and
-brushed away the wandering grains from his coat front with a large, red
-silk handkerchief.
-
-"By the way, Sherlock," said he, "I have had something quite after your
-own heart--a most singular problem--submitted to my judgment. I really
-had not the energy to follow it up save in a very incomplete fashion,
-but it gave me a basis for some pleasing speculation. If you would care
-to hear the facts--"
-
-"My dear Mycroft, I should be delighted."
-
-The brother scribbled a note upon a leaf of his pocket-book, and,
-ringing the bell, he handed it to the waiter.
-
-"I have asked Mr. Melas to step across," said he. "He lodges on the
-floor above me, and I have some slight acquaintance with him, which led
-him to come to me in his perplexity. Mr. Melas is a Greek by extraction,
-as I understand, and he is a remarkable linguist. He earns his living
-partly as interpreter in the law courts and partly by acting as guide to
-any wealthy Orientals who may visit the Northumberland Avenue hotels. I
-think I will leave him to tell his very remarkable experience in his own
-fashion."
-
-A few minutes later we were joined by a short, stout man whose olive
-face and coal-black hair proclaimed his Southern origin, though his
-speech was that of an educated Englishman. He shook hands eagerly
-with Sherlock Holmes, and his dark eyes sparkled with pleasure when he
-understood that the specialist was anxious to hear his story.
-
-"I do not believe that the police credit me--on my word, I do not," said
-he in a wailing voice. "Just because they have never heard of it before,
-they think that such a thing cannot be. But I know that I shall never
-be easy in my mind until I know what has become of my poor man with the
-sticking-plaster upon his face."
-
-"I am all attention," said Sherlock Holmes.
-
-"This is Wednesday evening," said Mr. Melas. "Well then, it was Monday
-night--only two days ago, you understand--that all this happened. I am
-an interpreter, as perhaps my neighbor there has told you. I interpret
-all languages--or nearly all--but as I am a Greek by birth and with a
-Grecian name, it is with that particular tongue that I am principally
-associated. For many years I have been the chief Greek interpreter in
-London, and my name is very well known in the hotels.
-
-"It happens not unfrequently that I am sent for at strange hours by
-foreigners who get into difficulties, or by travelers who arrive late
-and wish my services. I was not surprised, therefore, on Monday night
-when a Mr. Latimer, a very fashionably dressed young man, came up to my
-rooms and asked me to accompany him in a cab which was waiting at the
-door. A Greek friend had come to see him upon business, he said, and
-as he could speak nothing but his own tongue, the services of an
-interpreter were indispensable. He gave me to understand that his house
-was some little distance off, in Kensington, and he seemed to be in a
-great hurry, bustling me rapidly into the cab when we had descended to
-the street.
-
-"I say into the cab, but I soon became doubtful as to whether it was not
-a carriage in which I found myself. It was certainly more roomy than
-the ordinary four-wheeled disgrace to London, and the fittings, though
-frayed, were of rich quality. Mr. Latimer seated himself opposite to me
-and we started off through Charing Cross and up the Shaftesbury Avenue.
-We had come out upon Oxford Street and I had ventured some remark as to
-this being a roundabout way to Kensington, when my words were arrested
-by the extraordinary conduct of my companion.
-
-"He began by drawing a most formidable-looking bludgeon loaded with lead
-from his pocket, and switching it backward and forward several times,
-as if to test its weight and strength. Then he placed it without a word
-upon the seat beside him. Having done this, he drew up the windows on
-each side, and I found to my astonishment that they were covered with
-paper so as to prevent my seeing through them.
-
-"'I am sorry to cut off your view, Mr. Melas,' said he. 'The fact is
-that I have no intention that you should see what the place is to which
-we are driving. It might possibly be inconvenient to me if you could
-find your way there again.'
-
-"As you can imagine, I was utterly taken aback by such an address. My
-companion was a powerful, broad-shouldered young fellow, and, apart from
-the weapon, I should not have had the slightest chance in a struggle
-with him.
-
-"'This is very extraordinary conduct, Mr. Latimer,' I stammered. 'You
-must be aware that what you are doing is quite illegal.'
-
-"'It is somewhat of a liberty, no doubt,' said he, 'but we'll make it
-up to you. I must warn you, however, Mr. Melas, that if at any time
-to-night you attempt to raise an alarm or do anything which is against
-my interests, you will find it a very serious thing. I beg you to
-remember that no one knows where you are, and that, whether you are in
-this carriage or in my house, you are equally in my power.'
-
-"His words were quiet, but he had a rasping way of saying them which
-was very menacing. I sat in silence wondering what on earth could be
-his reason for kidnapping me in this extraordinary fashion. Whatever it
-might be, it was perfectly clear that there was no possible use in my
-resisting, and that I could only wait to see what might befall.
-
-"For nearly two hours we drove without my having the least clue as to
-where we were going. Sometimes the rattle of the stones told of a paved
-causeway, and at others our smooth, silent course suggested asphalt;
-but, save by this variation in sound, there was nothing at all which
-could in the remotest way help me to form a guess as to where we were.
-The paper over each window was impenetrable to light, and a blue curtain
-was drawn across the glass work in front. It was a quarter-past seven
-when we left Pall Mall, and my watch showed me that it was ten minutes
-to nine when we at last came to a standstill. My companion let down
-the window, and I caught a glimpse of a low, arched doorway with a lamp
-burning above it. As I was hurried from the carriage it swung open, and
-I found myself inside the house, with a vague impression of a lawn
-and trees on each side of me as I entered. Whether these were private
-grounds, however, or bona-fide country was more than I could possibly
-venture to say.
-
-"There was a colored gas-lamp inside which was turned so low that I
-could see little save that the hall was of some size and hung with
-pictures. In the dim light I could make out that the person who had
-opened the door was a small, mean-looking, middle-aged man with rounded
-shoulders. As he turned towards us the glint of the light showed me that
-he was wearing glasses.
-
-"'Is this Mr. Melas, Harold?' said he.
-
-"'Yes.'
-
-"'Well done, well done! No ill-will, Mr. Melas, I hope, but we could not
-get on without you. If you deal fair with us you'll not regret it,
-but if you try any tricks, God help you!' He spoke in a nervous, jerky
-fashion, and with little giggling laughs in between, but somehow he
-impressed me with fear more than the other.
-
-"'What do you want with me?' I asked.
-
-"'Only to ask a few questions of a Greek gentleman who is visiting us,
-and to let us have the answers. But say no more than you are told to
-say, or--' here came the nervous giggle again--'you had better never
-have been born.'
-
-"As he spoke he opened a door and showed the way into a room which
-appeared to be very richly furnished, but again the only light was
-afforded by a single lamp half-turned down. The chamber was certainly
-large, and the way in which my feet sank into the carpet as I stepped
-across it told me of its richness. I caught glimpses of velvet chairs, a
-high white marble mantel-piece, and what seemed to be a suit of Japanese
-armor at one side of it. There was a chair just under the lamp, and the
-elderly man motioned that I should sit in it. The younger had left
-us, but he suddenly returned through another door, leading with him
-a gentleman clad in some sort of loose dressing-gown who moved slowly
-towards us. As he came into the circle of dim light which enables me to
-see him more clearly I was thrilled with horror at his appearance. He
-was deadly pale and terribly emaciated, with the protruding, brilliant
-eyes of a man whose spirit was greater than his strength. But what
-shocked me more than any signs of physical weakness was that his face
-was grotesquely criss-crossed with sticking-plaster, and that one large
-pad of it was fastened over his mouth.
-
-"'Have you the slate, Harold?' cried the older man, as this strange
-being fell rather than sat down into a chair. 'Are his hands loose? Now,
-then, give him the pencil. You are to ask the questions, Mr. Melas, and
-he will write the answers. Ask him first of all whether he is prepared
-to sign the papers?'
-
-"The man's eyes flashed fire.
-
-"'Never!' he wrote in Greek upon the slate.
-
-"'On no condition?' I asked, at the bidding of our tyrant.
-
-"'Only if I see her married in my presence by a Greek priest whom I
-know.'
-
-"The man giggled in his venomous way.
-
-"'You know what awaits you, then?'
-
-"'I care nothing for myself.'
-
-"These are samples of the questions and answers which made up our
-strange half-spoken, half-written conversation. Again and again I had to
-ask him whether he would give in and sign the documents. Again and again
-I had the same indignant reply. But soon a happy thought came to me. I
-took to adding on little sentences of my own to each question, innocent
-ones at first, to test whether either of our companions knew anything
-of the matter, and then, as I found that they showed no signs I played a
-more dangerous game. Our conversation ran something like this:
-
-"'You can do no good by this obstinacy. Who are you?'
-
-"'I care not. I am a stranger in London.'
-
-"'Your fate will be upon your own head. How long have you been here?'
-
-"'Let it be so. Three weeks.'
-
-"'The property can never be yours. What ails you?'
-
-"'It shall not go to villains. They are starving me.'
-
-"'You shall go free if you sign. What house is this?'
-
-"'I will never sign. I do not know.'
-
-"'You are not doing her any service. What is your name?'
-
-"'Let me hear her say so. Kratides.'
-
-"'You shall see her if you sign. Where are you from?'
-
-"'Then I shall never see her. Athens.'
-
-"Another five minutes, Mr. Holmes, and I should have wormed out the
-whole story under their very noses. My very next question might have
-cleared the matter up, but at that instant the door opened and a woman
-stepped into the room. I could not see her clearly enough to know more
-than that she was tall and graceful, with black hair, and clad in some
-sort of loose white gown.
-
-"'Harold,' said she, speaking English with a broken accent. 'I could not
-stay away longer. It is so lonely up there with only--Oh, my God, it is
-Paul!'
-
-"These last words were in Greek, and at the same instant the man with
-a convulsive effort tore the plaster from his lips, and screaming out
-'Sophy! Sophy!' rushed into the woman's arms. Their embrace was but for
-an instant, however, for the younger man seized the woman and pushed
-her out of the room, while the elder easily overpowered his emaciated
-victim, and dragged him away through the other door. For a moment I was
-left alone in the room, and I sprang to my feet with some vague idea
-that I might in some way get a clue to what this house was in which I
-found myself. Fortunately, however, I took no steps, for looking up I
-saw that the older man was standing in the door-way with his eyes fixed
-upon me.
-
-"'That will do, Mr. Melas,' said he. 'You perceive that we have taken
-you into our confidence over some very private business. We should not
-have troubled you, only that our friend who speaks Greek and who began
-these negotiations has been forced to return to the East. It was
-quite necessary for us to find some one to take his place, and we were
-fortunate in hearing of your powers.'
-
-"I bowed.
-
-"'There are five sovereigns here,' said he, walking up to me, 'which
-will, I hope, be a sufficient fee. But remember,' he added, tapping me
-lightly on the chest and giggling, 'if you speak to a human soul about
-this--one human soul, mind--well, may God have mercy upon your soul!"
-
-"I cannot tell you the loathing and horror with which this
-insignificant-looking man inspired me. I could see him better now as the
-lamp-light shone upon him. His features were peaky and sallow, and his
-little pointed beard was thready and ill-nourished. He pushed his face
-forward as he spoke and his lips and eyelids were continually twitching
-like a man with St. Vitus's dance. I could not help thinking that his
-strange, catchy little laugh was also a symptom of some nervous malady.
-The terror of his face lay in his eyes, however, steel gray, and
-glistening coldly with a malignant, inexorable cruelty in their depths.
-
-"'We shall know if you speak of this,' said he. 'We have our own means
-of information. Now you will find the carriage waiting, and my friend
-will see you on your way.'
-
-"I was hurried through the hall and into the vehicle, again obtaining
-that momentary glimpse of trees and a garden. Mr. Latimer followed
-closely at my heels, and took his place opposite to me without a word.
-In silence we again drove for an interminable distance with the windows
-raised, until at last, just after midnight, the carriage pulled up.
-
-"'You will get down here, Mr. Melas,' said my companion. 'I am sorry
-to leave you so far from your house, but there is no alternative. Any
-attempt upon your part to follow the carriage can only end in injury to
-yourself.'
-
-"He opened the door as he spoke, and I had hardly time to spring out
-when the coachman lashed the horse and the carriage rattled away. I
-looked around me in astonishment. I was on some sort of a heathy common
-mottled over with dark clumps of furze-bushes. Far away stretched a
-line of houses, with a light here and there in the upper windows. On the
-other side I saw the red signal-lamps of a railway.
-
-"The carriage which had brought me was already out of sight. I stood
-gazing round and wondering where on earth I might be, when I saw some
-one coming towards me in the darkness. As he came up to me I made out
-that he was a railway porter.
-
-"'Can you tell me what place this is?' I asked.
-
-"'Wandsworth Common,' said he.
-
-"'Can I get a train into town?'
-
-"'If you walk on a mile or so to Clapham Junction,' said he, 'you'll
-just be in time for the last to Victoria.'
-
-"So that was the end of my adventure, Mr. Holmes. I do not know where I
-was, nor whom I spoke with, nor anything save what I have told you. But
-I know that there is foul play going on, and I want to help that unhappy
-man if I can. I told the whole story to Mr. Mycroft Holmes next morning,
-and subsequently to the police."
-
-We all sat in silence for some little time after listening to this
-extraordinary narrative. Then Sherlock looked across at his brother.
-
-"Any steps?" he asked.
-
-Mycroft picked up the Daily News, which was lying on the side-table.
-
-"'Anybody supplying any information to the whereabouts of a Greek
-gentleman named Paul Kratides, from Athens, who is unable to speak
-English, will be rewarded. A similar reward paid to any one giving
-information about a Greek lady whose first name is Sophy. X 2473.' That
-was in all the dailies. No answer."
-
-"How about the Greek Legation?"
-
-"I have inquired. They know nothing."
-
-"A wire to the head of the Athens police, then?"
-
-"Sherlock has all the energy of the family," said Mycroft, turning to
-me. "Well, you take the case up by all means, and let me know if you do
-any good."
-
-"Certainly," answered my friend, rising from his chair. "I'll let you
-know, and Mr. Melas also. In the meantime, Mr. Melas, I should certainly
-be on my guard, if I were you, for of course they must know through
-these advertisements that you have betrayed them."
-
-As we walked home together, Holmes stopped at a telegraph office and
-sent off several wires.
-
-"You see, Watson," he remarked, "our evening has been by no means
-wasted. Some of my most interesting cases have come to me in this way
-through Mycroft. The problem which we have just listened to, although
-it can admit of but one explanation, has still some distinguishing
-features."
-
-"You have hopes of solving it?"
-
-"Well, knowing as much as we do, it will be singular indeed if we fail
-to discover the rest. You must yourself have formed some theory which
-will explain the facts to which we have listened."
-
-"In a vague way, yes."
-
-"What was your idea, then?"
-
-"It seemed to me to be obvious that this Greek girl had been carried off
-by the young Englishman named Harold Latimer."
-
-"Carried off from where?"
-
-"Athens, perhaps."
-
-Sherlock Holmes shook his head. "This young man could not talk a word of
-Greek. The lady could talk English fairly well. Inference--that she had
-been in England some little time, but he had not been in Greece."
-
-"Well, then, we will presume that she had come on a visit to England,
-and that this Harold had persuaded her to fly with him."
-
-"That is more probable."
-
-"Then the brother--for that, I fancy, must be the relationship--comes
-over from Greece to interfere. He imprudently puts himself into the
-power of the young man and his older associate. They seize him and use
-violence towards him in order to make him sign some papers to make over
-the girl's fortune--of which he may be trustee--to them. This he refuses
-to do. In order to negotiate with him they have to get an interpreter,
-and they pitch upon this Mr. Melas, having used some other one before.
-The girl is not told of the arrival of her brother, and finds it out by
-the merest accident."
-
-"Excellent, Watson!" cried Holmes. "I really fancy that you are not far
-from the truth. You see that we hold all the cards, and we have only to
-fear some sudden act of violence on their part. If they give us time we
-must have them."
-
-"But how can we find where this house lies?"
-
-"Well, if our conjecture is correct and the girl's name is or was Sophy
-Kratides, we should have no difficulty in tracing her. That must be our
-main hope, for the brother is, of course, a complete stranger. It is
-clear that some time has elapsed since this Harold established these
-relations with the girl--some weeks, at any rate--since the brother in
-Greece has had time to hear of it and come across. If they have been
-living in the same place during this time, it is probable that we shall
-have some answer to Mycroft's advertisement."
-
-We had reached our house in Baker Street while we had been talking.
-Holmes ascended the stair first, and as he opened the door of our room
-he gave a start of surprise. Looking over his shoulder, I was equally
-astonished. His brother Mycroft was sitting smoking in the arm-chair.
-
-"Come in, Sherlock! Come in, sir," said he blandly, smiling at our
-surprised faces. "You don't expect such energy from me, do you,
-Sherlock? But somehow this case attracts me."
-
-"How did you get here?"
-
-"I passed you in a hansom."
-
-"There has been some new development?"
-
-"I had an answer to my advertisement."
-
-"Ah!"
-
-"Yes, it came within a few minutes of your leaving."
-
-"And to what effect?"
-
-Mycroft Holmes took out a sheet of paper.
-
-"Here it is," said he, "written with a J pen on royal cream paper by a
-middle-aged man with a weak constitution. 'Sir,' he says, 'in answer to
-your advertisement of to-day's date, I beg to inform you that I know the
-young lady in question very well. If you should care to call upon me I
-could give you some particulars as to her painful history. She is living
-at present at The Myrtles, Beckenham. Yours faithfully, J. Davenport.'
-
-"He writes from Lower Brixton," said Mycroft Holmes. "Do you not think
-that we might drive to him now, Sherlock, and learn these particulars?"
-
-"My dear Mycroft, the brother's life is more valuable than the sister's
-story. I think we should call at Scotland Yard for Inspector Gregson,
-and go straight out to Beckenham. We know that a man is being done to
-death, and every hour may be vital."
-
-"Better pick up Mr. Melas on our way," I suggested. "We may need an
-interpreter."
-
-"Excellent," said Sherlock Holmes. "Send the boy for a four-wheeler, and
-we shall be off at once." He opened the table-drawer as he spoke, and I
-noticed that he slipped his revolver into his pocket. "Yes," said he, in
-answer to my glance; "I should say from what we have heard, that we are
-dealing with a particularly dangerous gang."
-
-It was almost dark before we found ourselves in Pall Mall, at the rooms
-of Mr. Melas. A gentleman had just called for him, and he was gone.
-
-"Can you tell me where?" asked Mycroft Holmes.
-
-"I don't know, sir," answered the woman who had opened the door; "I only
-know that he drove away with the gentleman in a carriage."
-
-"Did the gentleman give a name?"
-
-"No, sir."
-
-"He wasn't a tall, handsome, dark young man?"
-
-"Oh, no, sir. He was a little gentleman, with glasses, thin in the face,
-but very pleasant in his ways, for he was laughing all the time that he
-was talking."
-
-"Come along!" cried Sherlock Holmes, abruptly. "This grows serious,"
-he observed, as we drove to Scotland Yard. "These men have got hold of
-Melas again. He is a man of no physical courage, as they are well
-aware from their experience the other night. This villain was able to
-terrorize him the instant that he got into his presence. No doubt
-they want his professional services, but, having used him, they may be
-inclined to punish him for what they will regard as his treachery."
-
-Our hope was that, by taking train, we might get to Beckenham as soon
-or sooner than the carriage. On reaching Scotland Yard, however, it was
-more than an hour before we could get Inspector Gregson and comply with
-the legal formalities which would enable us to enter the house. It was a
-quarter to ten before we reached London Bridge, and half past before the
-four of us alighted on the Beckenham platform. A drive of half a mile
-brought us to The Myrtles--a large, dark house standing back from the
-road in its own grounds. Here we dismissed our cab, and made our way up
-the drive together.
-
-"The windows are all dark," remarked the inspector. "The house seems
-deserted."
-
-"Our birds are flown and the nest empty," said Holmes.
-
-"Why do you say so?"
-
-"A carriage heavily loaded with luggage has passed out during the last
-hour."
-
-The inspector laughed. "I saw the wheel-tracks in the light of the
-gate-lamp, but where does the luggage come in?"
-
-"You may have observed the same wheel-tracks going the other way. But
-the outward-bound ones were very much deeper--so much so that we can
-say for a certainty that there was a very considerable weight on the
-carriage."
-
-"You get a trifle beyond me there," said the inspector, shrugging his
-shoulder. "It will not be an easy door to force, but we will try if we
-cannot make some one hear us."
-
-He hammered loudly at the knocker and pulled at the bell, but without
-any success. Holmes had slipped away, but he came back in a few minutes.
-
-"I have a window open," said he.
-
-"It is a mercy that you are on the side of the force, and not against
-it, Mr. Holmes," remarked the inspector, as he noted the clever way in
-which my friend had forced back the catch. "Well, I think that under the
-circumstances we may enter without an invitation."
-
-One after the other we made our way into a large apartment, which was
-evidently that in which Mr. Melas had found himself. The inspector
-had lit his lantern, and by its light we could see the two doors, the
-curtain, the lamp, and the suit of Japanese mail as he had described
-them. On the table lay two glasses, and empty brandy-bottle, and the
-remains of a meal.
-
-"What is that?" asked Holmes, suddenly.
-
-We all stood still and listened. A low moaning sound was coming from
-somewhere over our heads. Holmes rushed to the door and out into the
-hall. The dismal noise came from upstairs. He dashed up, the inspector
-and I at his heels, while his brother Mycroft followed as quickly as his
-great bulk would permit.
-
-Three doors faced up upon the second floor, and it was from the central
-of these that the sinister sounds were issuing, sinking sometimes into a
-dull mumble and rising again into a shrill whine. It was locked, but the
-key had been left on the outside. Holmes flung open the door and rushed
-in, but he was out again in an instant, with his hand to his throat.
-
-"It's charcoal," he cried. "Give it time. It will clear."
-
-Peering in, we could see that the only light in the room came from a
-dull blue flame which flickered from a small brass tripod in the centre.
-It threw a livid, unnatural circle upon the floor, while in the shadows
-beyond we saw the vague loom of two figures which crouched against the
-wall. From the open door there reeked a horrible poisonous exhalation
-which set us gasping and coughing. Holmes rushed to the top of the
-stairs to draw in the fresh air, and then, dashing into the room, he
-threw up the window and hurled the brazen tripod out into the garden.
-
-"We can enter in a minute," he gasped, darting out again. "Where is a
-candle? I doubt if we could strike a match in that atmosphere. Hold the
-light at the door and we shall get them out, Mycroft, now!"
-
-With a rush we got to the poisoned men and dragged them out into the
-well-lit hall. Both of them were blue-lipped and insensible, with
-swollen, congested faces and protruding eyes. Indeed, so distorted were
-their features that, save for his black beard and stout figure, we might
-have failed to recognize in one of them the Greek interpreter who had
-parted from us only a few hours before at the Diogenes Club. His hands
-and feet were securely strapped together, and he bore over one eye
-the marks of a violent blow. The other, who was secured in a similar
-fashion, was a tall man in the last stage of emaciation, with several
-strips of sticking-plaster arranged in a grotesque pattern over his
-face. He had ceased to moan as we laid him down, and a glance showed
-me that for him at least our aid had come too late. Mr. Melas, however,
-still lived, and in less than an hour, with the aid of ammonia and
-brandy I had the satisfaction of seeing him open his eyes, and of
-knowing that my hand had drawn him back from that dark valley in which
-all paths meet.
-
-It was a simple story which he had to tell, and one which did but
-confirm our own deductions. His visitor, on entering his rooms, had
-drawn a life-preserver from his sleeve, and had so impressed him with
-the fear of instant and inevitable death that he had kidnapped him for
-the second time. Indeed, it was almost mesmeric, the effect which this
-giggling ruffian had produced upon the unfortunate linguist, for he
-could not speak of him save with trembling hands and a blanched cheek.
-He had been taken swiftly to Beckenham, and had acted as interpreter in
-a second interview, even more dramatic than the first, in which the two
-Englishmen had menaced their prisoner with instant death if he did not
-comply with their demands. Finally, finding him proof against every
-threat, they had hurled him back into his prison, and after
-reproaching Melas with his treachery, which appeared from the newspaper
-advertisement, they had stunned him with a blow from a stick, and he
-remembered nothing more until he found us bending over him.
-
-And this was the singular case of the Grecian Interpreter, the
-explanation of which is still involved in some mystery. We were able
-to find out, by communicating with the gentleman who had answered the
-advertisement, that the unfortunate young lady came of a wealthy Grecian
-family, and that she had been on a visit to some friends in England.
-While there she had met a young man named Harold Latimer, who had
-acquired an ascendancy over he and had eventually persuaded her to fly
-with him. Her friends, shocked at the event, had contented themselves
-with informing her brother at Athens, and had then washed their hands
-of the matter. The brother, on his arrival in England, had imprudently
-placed himself in the power of Latimer and of his associate, whose name
-was Wilson Kemp--a man of the foulest antecedents. These two, finding
-that through his ignorance of the language he was helpless in their
-hands, had kept him a prisoner, and had endeavored by cruelty and
-starvation to make him sign away his own and his sister's property. They
-had kept him in the house without the girl's knowledge, and the plaster
-over the face had been for the purpose of making recognition difficult
-in case she should ever catch a glimpse of him. Her feminine perception,
-however, had instantly seen through the disguise when, on the occasion
-of the interpreter's visit, she had seen him for the first time. The
-poor girl, however, was herself a prisoner, for there was no one about
-the house except the man who acted as coachman, and his wife, both of
-whom were tools of the conspirators. Finding that their secret was out,
-and that their prisoner was not to be coerced, the two villains with the
-girl had fled away at a few hours' notice from the furnished house which
-they had hired, having first, as they thought, taken vengeance both upon
-the man who had defied and the one who had betrayed them.
-
-Months afterwards a curious newspaper cutting reached us from
-Buda-Pesth. It told how two Englishmen who had been traveling with a
-woman had met with a tragic end. They had each been stabbed, it seems,
-and the Hungarian police were of opinion that they had quarreled and had
-inflicted mortal injuries upon each other. Holmes, however, is, I fancy,
-of a different way of thinking, and holds to this day that, if one could
-find the Grecian girl, one might learn how the wrongs of herself and her
-brother came to be avenged.
-
-
-
-
-Adventure X. The Naval Treaty
-
-
-The July which immediately succeeded my marriage was made memorable
-by three cases of interest, in which I had the privilege of being
-associated with Sherlock Holmes and of studying his methods. I find them
-recorded in my notes under the headings of "The Adventure of the Second
-Stain," "The Adventure of the Naval Treaty," and "The Adventure of the
-Tired Captain." The first of these, however, deals with interest of such
-importance and implicates so many of the first families in the kingdom
-that for many years it will be impossible to make it public. No case,
-however, in which Holmes was engaged has ever illustrated the value
-of his analytical methods so clearly or has impressed those who were
-associated with him so deeply. I still retain an almost verbatim report
-of the interview in which he demonstrated the true facts of the case
-to Monsieur Dubugue of the Paris police, and Fritz von Waldbaum, the
-well-known specialist of Dantzig, both of whom had wasted their energies
-upon what proved to be side-issues. The new century will have come,
-however, before the story can be safely told. Meanwhile I pass on to
-the second on my list, which promised also at one time to be of national
-importance, and was marked by several incidents which give it a quite
-unique character.
-
-During my school-days I had been intimately associated with a lad named
-Percy Phelps, who was of much the same age as myself, though he was two
-classes ahead of me. He was a very brilliant boy, and carried away every
-prize which the school had to offer, finished his exploits by winning
-a scholarship which sent him on to continue his triumphant career at
-Cambridge. He was, I remember, extremely well connected, and even when
-we were all little boys together we knew that his mother's brother
-was Lord Holdhurst, the great conservative politician. This gaudy
-relationship did him little good at school. On the contrary, it seemed
-rather a piquant thing to us to chevy him about the playground and hit
-him over the shins with a wicket. But it was another thing when he
-came out into the world. I heard vaguely that his abilities and the
-influences which he commanded had won him a good position at the Foreign
-Office, and then he passed completely out of my mind until the following
-letter recalled his existence:
-
-
-Briarbrae, Woking. My dear Watson,--I have no doubt that you can
-remember "Tadpole" Phelps, who was in the fifth form when you were in
-the third. It is possible even that you may have heard that through my
-uncle's influence I obtained a good appointment at the Foreign Office,
-and that I was in a situation of trust and honor until a horrible
-misfortune came suddenly to blast my career.
-
-There is no use writing of the details of that dreadful event. In the
-event of your acceding to my request it is probably that I shall have
-to narrate them to you. I have only just recovered from nine weeks of
-brain-fever, and am still exceedingly weak. Do you think that you could
-bring your friend Mr. Holmes down to see me? I should like to have his
-opinion of the case, though the authorities assure me that nothing more
-can be done. Do try to bring him down, and as soon as possible. Every
-minute seems an hour while I live in this state of horrible suspense.
-Assure him that if I have not asked his advice sooner it was not because
-I did not appreciate his talents, but because I have been off my head
-ever since the blow fell. Now I am clear again, though I dare not think
-of it too much for fear of a relapse. I am still so weak that I have to
-write, as you see, by dictating. Do try to bring him.
-
-Your old school-fellow,
-
-Percy Phelps.
-
-
-There was something that touched me as I read this letter, something
-pitiable in the reiterated appeals to bring Holmes. So moved was I
-that even had it been a difficult matter I should have tried it, but
-of course I knew well that Holmes loved his art, so that he was ever
-as ready to bring his aid as his client could be to receive it. My wife
-agreed with me that not a moment should be lost in laying the matter
-before him, and so within an hour of breakfast-time I found myself back
-once more in the old rooms in Baker Street.
-
-Holmes was seated at his side-table clad in his dressing-gown, and
-working hard over a chemical investigation. A large curved retort
-was boiling furiously in the bluish flame of a Bunsen burner, and the
-distilled drops were condensing into a two-litre measure. My friend
-hardly glanced up as I entered, and I, seeing that his investigation
-must be of importance, seated myself in an arm-chair and waited. He
-dipped into this bottle or that, drawing out a few drops of each with
-his glass pipette, and finally brought a test-tube containing a solution
-over to the table. In his right hand he held a slip of litmus-paper.
-
-"You come at a crisis, Watson," said he. "If this paper remains blue,
-all is well. If it turns red, it means a man's life." He dipped it into
-the test-tube and it flushed at once into a dull, dirty crimson. "Hum!
-I thought as much!" he cried. "I will be at your service in an instant,
-Watson. You will find tobacco in the Persian slipper." He turned to his
-desk and scribbled off several telegrams, which were handed over to the
-page-boy. Then he threw himself down into the chair opposite, and drew
-up his knees until his fingers clasped round his long, thin shins.
-
-"A very commonplace little murder," said he. "You've got something
-better, I fancy. You are the stormy petrel of crime, Watson. What is
-it?"
-
-I handed him the letter, which he read with the most concentrated
-attention.
-
-"It does not tell us very much, does it?" he remarked, as he handed it
-back to me.
-
-"Hardly anything."
-
-"And yet the writing is of interest."
-
-"But the writing is not his own."
-
-"Precisely. It is a woman's."
-
-"A man's surely," I cried.
-
-"No, a woman's, and a woman of rare character. You see, at the
-commencement of an investigation it is something to know that your
-client is in close contact with some one who, for good or evil, has an
-exceptional nature. My interest is already awakened in the case. If you
-are ready we will start at once for Woking, and see this diplomatist who
-is in such evil case, and the lady to whom he dictates his letters."
-
-We were fortunate enough to catch an early train at Waterloo, and in
-a little under an hour we found ourselves among the fir-woods and
-the heather of Woking. Briarbrae proved to be a large detached house
-standing in extensive grounds within a few minutes' walk of the station.
-On sending in our cards we were shown into an elegantly appointed
-drawing-room, where we were joined in a few minutes by a rather stout
-man who received us with much hospitality. His age may have been nearer
-forty than thirty, but his cheeks were so ruddy and his eyes so merry
-that he still conveyed the impression of a plump and mischievous boy.
-
-"I am so glad that you have come," said he, shaking our hands with
-effusion. "Percy has been inquiring for you all morning. Ah, poor old
-chap, he clings to any straw! His father and his mother asked me to see
-you, for the mere mention of the subject is very painful to them."
-
-"We have had no details yet," observed Holmes. "I perceive that you are
-not yourself a member of the family."
-
-Our acquaintance looked surprised, and then, glancing down, he began to
-laugh.
-
-"Of course you saw the J H monogram on my locket," said he. "For a
-moment I thought you had done something clever. Joseph Harrison is my
-name, and as Percy is to marry my sister Annie I shall at least be a
-relation by marriage. You will find my sister in his room, for she has
-nursed him hand-and-foot this two months back. Perhaps we'd better go in
-at once, for I know how impatient he is."
-
-The chamber in which we were shown was on the same floor as the
-drawing-room. It was furnished partly as a sitting and partly as a
-bedroom, with flowers arranged daintily in every nook and corner. A
-young man, very pale and worn, was lying upon a sofa near the open
-window, through which came the rich scent of the garden and the balmy
-summer air. A woman was sitting beside him, who rose as we entered.
-
-"Shall I leave, Percy?" she asked.
-
-He clutched her hand to detain her. "How are you, Watson?" said he,
-cordially. "I should never have known you under that moustache, and I
-dare say you would not be prepared to swear to me. This I presume is
-your celebrated friend, Mr. Sherlock Holmes?"
-
-I introduced him in a few words, and we both sat down. The stout young
-man had left us, but his sister still remained with her hand in that of
-the invalid. She was a striking-looking woman, a little short and
-thick for symmetry, but with a beautiful olive complexion, large, dark,
-Italian eyes, and a wealth of deep black hair. Her rich tints made the
-white face of her companion the more worn and haggard by the contrast.
-
-"I won't waste your time," said he, raising himself upon the sofa.
-"I'll plunge into the matter without further preamble. I was a happy
-and successful man, Mr. Holmes, and on the eve of being married, when a
-sudden and dreadful misfortune wrecked all my prospects in life.
-
-"I was, as Watson may have told you, in the Foreign Office, and
-through the influences of my uncle, Lord Holdhurst, I rose rapidly to
-a responsible position. When my uncle became foreign minister in this
-administration he gave me several missions of trust, and as I always
-brought them to a successful conclusion, he came at last to have the
-utmost confidence in my ability and tact.
-
-"Nearly ten weeks ago--to be more accurate, on the 23d of May--he called
-me into his private room, and, after complimenting me on the good work
-which I had done, he informed me that he had a new commission of trust
-for me to execute.
-
-"'This,' said he, taking a gray roll of paper from his bureau, 'is the
-original of that secret treaty between England and Italy of which, I
-regret to say, some rumors have already got into the public press. It is
-of enormous importance that nothing further should leak out. The French
-or the Russian embassy would pay an immense sum to learn the contents
-of these papers. They should not leave my bureau were it not that it
-is absolutely necessary to have them copied. You have a desk in your
-office?"
-
-"'Yes, sir.'
-
-"'Then take the treaty and lock it up there. I shall give directions
-that you may remain behind when the others go, so that you may copy
-it at your leisure without fear of being overlooked. When you have
-finished, relock both the original and the draft in the desk, and hand
-them over to me personally to-morrow morning.'
-
-"I took the papers and--"
-
-"Excuse me an instant," said Holmes. "Were you alone during this
-conversation?"
-
-"Absolutely."
-
-"In a large room?"
-
-"Thirty feet each way."
-
-"In the centre?"
-
-"Yes, about it."
-
-"And speaking low?"
-
-"My uncle's voice is always remarkably low. I hardly spoke at all."
-
-"Thank you," said Holmes, shutting his eyes; "pray go on."
-
-"I did exactly what he indicated, and waited until the other clerks had
-departed. One of them in my room, Charles Gorot, had some arrears
-of work to make up, so I left him there and went out to dine. When I
-returned he was gone. I was anxious to hurry my work, for I knew that
-Joseph--the Mr. Harrison whom you saw just now--was in town, and that he
-would travel down to Woking by the eleven-o'clock train, and I wanted if
-possible to catch it.
-
-"When I came to examine the treaty I saw at once that it was of such
-importance that my uncle had been guilty of no exaggeration in what
-he had said. Without going into details, I may say that it defined the
-position of Great Britain towards the Triple Alliance, and fore-shadowed
-the policy which this country would pursue in the event of the
-French fleet gaining a complete ascendancy over that of Italy in the
-Mediterranean. The questions treated in it were purely naval. At the end
-were the signatures of the high dignitaries who had signed it. I glanced
-my eyes over it, and then settled down to my task of copying.
-
-"It was a long document, written in the French language, and containing
-twenty-six separate articles. I copied as quickly as I could, but at
-nine o'clock I had only done nine articles, and it seemed hopeless for
-me to attempt to catch my train. I was feeling drowsy and stupid, partly
-from my dinner and also from the effects of a long day's work. A cup of
-coffee would clear my brain. A commissionnaire remains all night in a
-little lodge at the foot of the stairs, and is in the habit of making
-coffee at his spirit-lamp for any of the officials who may be working
-over time. I rang the bell, therefore, to summon him.
-
-"To my surprise, it was a woman who answered the summons, a large,
-coarse-faced, elderly woman, in an apron. She explained that she was the
-commissionnaire's wife, who did the charing, and I gave her the order
-for the coffee.
-
-"I wrote two more articles and then, feeling more drowsy than ever, I
-rose and walked up and down the room to stretch my legs. My coffee had
-not yet come, and I wondered what was the cause of the delay could be.
-Opening the door, I started down the corridor to find out. There was a
-straight passage, dimly lighted, which led from the room in which I
-had been working, and was the only exit from it. It ended in a curving
-staircase, with the commissionnaire's lodge in the passage at the
-bottom. Half way down this staircase is a small landing, with another
-passage running into it at right angles. This second one leads by means
-of a second small stair to a side door, used by servants, and also as
-a short cut by clerks when coming from Charles Street. Here is a rough
-chart of the place."
-
-"Thank you. I think that I quite follow you," said Sherlock Holmes.
-
-"It is of the utmost importance that you should notice this point.
-I went down the stairs and into the hall, where I found the
-commissionnaire fast asleep in his box, with the kettle boiling
-furiously upon the spirit-lamp. I took off the kettle and blew out the
-lamp, for the water was spurting over the floor. Then I put out my hand
-and was about to shake the man, who was still sleeping soundly, when a
-bell over his head rang loudly, and he woke with a start.
-
-"'Mr. Phelps, sir!' said he, looking at me in bewilderment.
-
-"'I came down to see if my coffee was ready.'
-
-"'I was boiling the kettle when I fell asleep, sir.' He looked at me and
-then up at the still quivering bell with an ever-growing astonishment
-upon his face.
-
-"'If you was here, sir, then who rang the bell?' he asked.
-
-"'The bell!' I cried. 'What bell is it?'
-
-"'It's the bell of the room you were working in.'
-
-"A cold hand seemed to close round my heart. Some one, then, was in that
-room where my precious treaty lay upon the table. I ran frantically up
-the stair and along the passage. There was no one in the corridors, Mr.
-Holmes. There was no one in the room. All was exactly as I left it, save
-only that the papers which had been committed to my care had been taken
-from the desk on which they lay. The copy was there, and the original
-was gone."
-
-Holmes sat up in his chair and rubbed his hands. I could see that the
-problem was entirely to his heart. "Pray, what did you do then?" he
-murmured.
-
-"I recognized in an instant that the thief must have come up the stairs
-from the side door. Of course I must have met him if he had come the
-other way."
-
-"You were satisfied that he could not have been concealed in the room
-all the time, or in the corridor which you have just described as dimly
-lighted?"
-
-"It is absolutely impossible. A rat could not conceal himself either in
-the room or the corridor. There is no cover at all."
-
-"Thank you. Pray proceed."
-
-"The commissionnaire, seeing by my pale face that something was to be
-feared, had followed me upstairs. Now we both rushed along the corridor
-and down the steep steps which led to Charles Street. The door at the
-bottom was closed, but unlocked. We flung it open and rushed out. I can
-distinctly remember that as we did so there came three chimes from a
-neighboring clock. It was quarter to ten."
-
-"That is of enormous importance," said Holmes, making a note upon his
-shirt-cuff.
-
-"The night was very dark, and a thin, warm rain was falling. There was
-no one in Charles Street, but a great traffic was going on, as usual, in
-Whitehall, at the extremity. We rushed along the pavement, bare-headed
-as we were, and at the far corner we found a policeman standing.
-
-"'A robbery has been committed,' I gasped. 'A document of immense value
-has been stolen from the Foreign Office. Has any one passed this way?'
-
-"'I have been standing here for a quarter of an hour, sir,' said he;
-'only one person has passed during that time--a woman, tall and elderly,
-with a Paisley shawl.'
-
-"'Ah, that is only my wife,' cried the commissionnaire; 'has no one else
-passed?'
-
-"'No one.'
-
-"'Then it must be the other way that the thief took,' cried the fellow,
-tugging at my sleeve.
-
-"'But I was not satisfied, and the attempts which he made to draw me
-away increased my suspicions.
-
-"'Which way did the woman go?' I cried.
-
-"'I don't know, sir. I noticed her pass, but I had no special reason for
-watching her. She seemed to be in a hurry.'
-
-"'How long ago was it?'
-
-"'Oh, not very many minutes.'
-
-"'Within the last five?'
-
-"'Well, it could not be more than five.'
-
-"'You're only wasting your time, sir, and every minute now is of
-importance,' cried the commissionnaire; 'take my word for it that my old
-woman has nothing to do with it, and come down to the other end of the
-street. Well, if you won't, I will.' And with that he rushed off in the
-other direction.
-
-"But I was after him in an instant and caught him by the sleeve.
-
-"'Where do you live?' said I.
-
-"'16 Ivy Lane, Brixton,' he answered. 'But don't let yourself be drawn
-away upon a false scent, Mr. Phelps. Come to the other end of the street
-and let us see if we can hear of anything.'
-
-"Nothing was to be lost by following his advice. With the policeman we
-both hurried down, but only to find the street full of traffic, many
-people coming and going, but all only too eager to get to a place of
-safety upon so wet a night. There was no lounger who could tell us who
-had passed.
-
-"Then we returned to the office, and searched the stairs and the passage
-without result. The corridor which led to the room was laid down with
-a kind of creamy linoleum which shows an impression very easily. We
-examined it very carefully, but found no outline of any footmark."
-
-"Had it been raining all evening?"
-
-"Since about seven."
-
-"How is it, then, that the woman who came into the room about nine left
-no traces with her muddy boots?"
-
-"I am glad you raised the point. It occurred to me at the time.
-The charwomen are in the habit of taking off their boots at the
-commissionnaire's office, and putting on list slippers."
-
-"That is very clear. There were no marks, then, though the night was a
-wet one? The chain of events is certainly one of extraordinary interest.
-What did you do next?
-
-"We examined the room also. There is no possibility of a secret door,
-and the windows are quite thirty feet from the ground. Both of them
-were fastened on the inside. The carpet prevents any possibility of a
-trap-door, and the ceiling is of the ordinary whitewashed kind. I will
-pledge my life that whoever stole my papers could only have come through
-the door."
-
-"How about the fireplace?"
-
-"They use none. There is a stove. The bell-rope hangs from the wire just
-to the right of my desk. Whoever rang it must have come right up to the
-desk to do it. But why should any criminal wish to ring the bell? It is
-a most insoluble mystery."
-
-"Certainly the incident was unusual. What were your next steps? You
-examined the room, I presume, to see if the intruder had left any
-traces--any cigar-end or dropped glove or hairpin or other trifle?"
-
-"There was nothing of the sort."
-
-"No smell?"
-
-"Well, we never thought of that."
-
-"Ah, a scent of tobacco would have been worth a great deal to us in such
-an investigation."
-
-"I never smoke myself, so I think I should have observed it if there had
-been any smell of tobacco. There was absolutely no clue of any kind. The
-only tangible fact was that the commissionnaire's wife--Mrs. Tangey was
-the name--had hurried out of the place. He could give no explanation
-save that it was about the time when the woman always went home. The
-policeman and I agreed that our best plan would be to seize the woman
-before she could get rid of the papers, presuming that she had them.
-
-"The alarm had reached Scotland Yard by this time, and Mr. Forbes, the
-detective, came round at once and took up the case with a great deal of
-energy. We hired a hansom, and in half an hour we were at the address
-which had been given to us. A young woman opened the door, who proved to
-be Mrs. Tangey's eldest daughter. Her mother had not come back yet, and
-we were shown into the front room to wait.
-
-"About ten minutes later a knock came at the door, and here we made the
-one serious mistake for which I blame myself. Instead of opening the
-door ourselves, we allowed the girl to do so. We heard her say, 'Mother,
-there are two men in the house waiting to see you,' and an instant
-afterwards we heard the patter of feet rushing down the passage. Forbes
-flung open the door, and we both ran into the back room or kitchen, but
-the woman had got there before us. She stared at us with defiant
-eyes, and then, suddenly recognizing me, an expression of absolute
-astonishment came over her face.
-
-"'Why, if it isn't Mr. Phelps, of the office!' she cried.
-
-"'Come, come, who did you think we were when you ran away from us?'
-asked my companion.
-
-"'I thought you were the brokers,' said she, 'we have had some trouble
-with a tradesman.'
-
-"'That's not quite good enough,' answered Forbes. 'We have reason to
-believe that you have taken a paper of importance from the Foreign
-Office, and that you ran in here to dispose of it. You must come back
-with us to Scotland Yard to be searched.'
-
-"It was in vain that she protested and resisted. A four-wheeler was
-brought, and we all three drove back in it. We had first made an
-examination of the kitchen, and especially of the kitchen fire, to see
-whether she might have made away with the papers during the instant that
-she was alone. There were no signs, however, of any ashes or scraps.
-When we reached Scotland Yard she was handed over at once to the female
-searcher. I waited in an agony of suspense until she came back with her
-report. There were no signs of the papers.
-
-"Then for the first time the horror of my situation came in its full
-force. Hitherto I had been acting, and action had numbed thought. I had
-been so confident of regaining the treaty at once that I had not dared
-to think of what would be the consequence if I failed to do so. But
-now there was nothing more to be done, and I had leisure to realize
-my position. It was horrible. Watson there would tell you that I was a
-nervous, sensitive boy at school. It is my nature. I thought of my uncle
-and of his colleagues in the Cabinet, of the shame which I had brought
-upon him, upon myself, upon every one connected with me. What though I
-was the victim of an extraordinary accident? No allowance is made
-for accidents where diplomatic interests are at stake. I was ruined,
-shamefully, hopelessly ruined. I don't know what I did. I fancy I must
-have made a scene. I have a dim recollection of a group of officials who
-crowded round me, endeavoring to soothe me. One of them drove down with
-me to Waterloo, and saw me into the Woking train. I believe that he
-would have come all the way had it not been that Dr. Ferrier, who lives
-near me, was going down by that very train. The doctor most kindly took
-charge of me, and it was well he did so, for I had a fit in the station,
-and before we reached home I was practically a raving maniac.
-
-"You can imagine the state of things here when they were roused from
-their beds by the doctor's ringing and found me in this condition. Poor
-Annie here and my mother were broken-hearted. Dr. Ferrier had just heard
-enough from the detective at the station to be able to give an idea of
-what had happened, and his story did not mend matters. It was evident to
-all that I was in for a long illness, so Joseph was bundled out of this
-cheery bedroom, and it was turned into a sick-room for me. Here I have
-lain, Mr. Holmes, for over nine weeks, unconscious, and raving with
-brain-fever. If it had not been for Miss Harrison here and for the
-doctor's care I should not be speaking to you now. She has nursed me by
-day and a hired nurse has looked after me by night, for in my mad fits
-I was capable of anything. Slowly my reason has cleared, but it is only
-during the last three days that my memory has quite returned. Sometimes
-I wish that it never had. The first thing that I did was to wire to
-Mr. Forbes, who had the case in hand. He came out, and assures me that,
-though everything has been done, no trace of a clue has been discovered.
-The commissionnaire and his wife have been examined in every way without
-any light being thrown upon the matter. The suspicions of the police
-then rested upon young Gorot, who, as you may remember, stayed over time
-in the office that night. His remaining behind and his French name were
-really the only two points which could suggest suspicion; but, as a
-matter of fact, I did not begin work until he had gone, and his people
-are of Huguenot extraction, but as English in sympathy and tradition as
-you and I are. Nothing was found to implicate him in any way, and there
-the matter dropped. I turn to you, Mr. Holmes, as absolutely my last
-hope. If you fail me, then my honor as well as my position are forever
-forfeited."
-
-The invalid sank back upon his cushions, tired out by this long recital,
-while his nurse poured him out a glass of some stimulating medicine.
-Holmes sat silently, with his head thrown back and his eyes closed, in
-an attitude which might seem listless to a stranger, but which I knew
-betokened the most intense self-absorption.
-
-"You statement has been so explicit," said he at last, "that you have
-really left me very few questions to ask. There is one of the very
-utmost importance, however. Did you tell any one that you had this
-special task to perform?"
-
-"No one."
-
-"Not Miss Harrison here, for example?"
-
-"No. I had not been back to Woking between getting the order and
-executing the commission."
-
-"And none of your people had by chance been to see you?"
-
-"None."
-
-"Did any of them know their way about in the office?"
-
-"Oh, yes, all of them had been shown over it."
-
-"Still, of course, if you said nothing to any one about the treaty these
-inquiries are irrelevant."
-
-"I said nothing."
-
-"Do you know anything of the commissionnaire?"
-
-"Nothing except that he is an old soldier."
-
-"What regiment?"
-
-"Oh, I have heard--Coldstream Guards."
-
-"Thank you. I have no doubt I can get details from Forbes. The
-authorities are excellent at amassing facts, though they do not always
-use them to advantage. What a lovely thing a rose is!"
-
-He walked past the couch to the open window, and held up the drooping
-stalk of a moss-rose, looking down at the dainty blend of crimson and
-green. It was a new phase of his character to me, for I had never before
-seen him show any keen interest in natural objects.
-
-"There is nothing in which deduction is so necessary as in religion,"
-said he, leaning with his back against the shutters. "It can be built
-up as an exact science by the reasoner. Our highest assurance of the
-goodness of Providence seems to me to rest in the flowers. All other
-things, our powers our desires, our food, are all really necessary for
-our existence in the first instance. But this rose is an extra. Its
-smell and its color are an embellishment of life, not a condition of it.
-It is only goodness which gives extras, and so I say again that we have
-much to hope from the flowers."
-
-Percy Phelps and his nurse looked at Holmes during this demonstration
-with surprise and a good deal of disappointment written upon their
-faces. He had fallen into a reverie, with the moss-rose between his
-fingers. It had lasted some minutes before the young lady broke in upon
-it.
-
-"Do you see any prospect of solving this mystery, Mr. Holmes?" she
-asked, with a touch of asperity in her voice.
-
-"Oh, the mystery!" he answered, coming back with a start to the
-realities of life. "Well, it would be absurd to deny that the case is
-a very abstruse and complicated one, but I can promise you that I will
-look into the matter and let you know any points which may strike me."
-
-"Do you see any clue?"
-
-"You have furnished me with seven, but, of course, I must test them
-before I can pronounce upon their value."
-
-"You suspect some one?"
-
-"I suspect myself."
-
-"What!"
-
-"Of coming to conclusions too rapidly."
-
-"Then go to London and test your conclusions."
-
-"Your advice is very excellent, Miss Harrison," said Holmes, rising. "I
-think, Watson, we cannot do better. Do not allow yourself to indulge in
-false hopes, Mr. Phelps. The affair is a very tangled one."
-
-"I shall be in a fever until I see you again," cried the diplomatist.
-
-"Well, I'll come out by the same train to-morrow, though it's more than
-likely that my report will be a negative one."
-
-"God bless you for promising to come," cried our client. "It gives me
-fresh life to know that something is being done. By the way, I have had
-a letter from Lord Holdhurst."
-
-"Ha! What did he say?"
-
-"He was cold, but not harsh. I dare say my severe illness prevented
-him from being that. He repeated that the matter was of the utmost
-importance, and added that no steps would be taken about my future--by
-which he means, of course, my dismissal--until my health was restored
-and I had an opportunity of repairing my misfortune."
-
-"Well, that was reasonable and considerate," said Holmes. "Come, Watson,
-for we have a good day's work before us in town."
-
-Mr. Joseph Harrison drove us down to the station, and we were soon
-whirling up in a Portsmouth train. Holmes was sunk in profound thought,
-and hardly opened his mouth until we had passed Clapham Junction.
-
-"It's a very cheery thing to come into London by any of these lines
-which run high, and allow you to look down upon the houses like this."
-
-I thought he was joking, for the view was sordid enough, but he soon
-explained himself.
-
-"Look at those big, isolated clumps of building rising up above the
-slates, like brick islands in a lead-colored sea."
-
-"The board-schools."
-
-"Light-houses, my boy! Beacons of the future! Capsules with hundreds of
-bright little seeds in each, out of which will spring the wise, better
-England of the future. I suppose that man Phelps does not drink?"
-
-"I should not think so."
-
-"Nor should I, but we are bound to take every possibility into account.
-The poor devil has certainly got himself into very deep water, and it's
-a question whether we shall ever be able to get him ashore. What did you
-think of Miss Harrison?"
-
-"A girl of strong character."
-
-"Yes, but she is a good sort, or I am mistaken. She and her brother are
-the only children of an iron-master somewhere up Northumberland way. He
-got engaged to her when traveling last winter, and she came down to
-be introduced to his people, with her brother as escort. Then came
-the smash, and she stayed on to nurse her lover, while brother Joseph,
-finding himself pretty snug, stayed on too. I've been making a few
-independent inquiries, you see. But to-day must be a day of inquiries."
-
-"My practice--" I began.
-
-"Oh, if you find your own cases more interesting than mine--" said
-Holmes, with some asperity.
-
-"I was going to say that my practice could get along very well for a day
-or two, since it is the slackest time in the year."
-
-"Excellent," said he, recovering his good-humor. "Then we'll look into
-this matter together. I think that we should begin by seeing Forbes.
-He can probably tell us all the details we want until we know from what
-side the case is to be approached."
-
-"You said you had a clue?"
-
-"Well, we have several, but we can only test their value by further
-inquiry. The most difficult crime to track is the one which is
-purposeless. Now this is not purposeless. Who is it who profits by it?
-There is the French ambassador, there is the Russian, there is whoever
-might sell it to either of these, and there is Lord Holdhurst."
-
-"Lord Holdhurst!"
-
-"Well, it is just conceivable that a statesman might find himself in
-a position where he was not sorry to have such a document accidentally
-destroyed."
-
-"Not a statesman with the honorable record of Lord Holdhurst?"
-
-"It is a possibility and we cannot afford to disregard it. We shall see
-the noble lord to-day and find out if he can tell us anything. Meanwhile
-I have already set inquiries on foot."
-
-"Already?"
-
-"Yes, I sent wires from Woking station to every evening paper in London.
-This advertisement will appear in each of them."
-
-He handed over a sheet torn from a note-book. On it was scribbled in
-pencil: "L10 reward. The number of the cab which dropped a fare at or
-about the door of the Foreign Office in Charles Street at quarter to ten
-in the evening of May 23d. Apply 221 B, Baker Street."
-
-"You are confident that the thief came in a cab?"
-
-"If not, there is no harm done. But if Mr. Phelps is correct in stating
-that there is no hiding-place either in the room or the corridors, then
-the person must have come from outside. If he came from outside on so
-wet a night, and yet left no trace of damp upon the linoleum, which
-was examined within a few minutes of his passing, then it is exceeding
-probable that he came in a cab. Yes, I think that we may safely deduce a
-cab."
-
-"It sounds plausible."
-
-"That is one of the clues of which I spoke. It may lead us to something.
-And then, of course, there is the bell--which is the most distinctive
-feature of the case. Why should the bell ring? Was it the thief who did
-it out of bravado? Or was it some one who was with the thief who did it
-in order to prevent the crime? Or was it an accident? Or was it--?" He
-sank back into the state of intense and silent thought from which he
-had emerged; but it seemed to me, accustomed as I was to his every mood,
-that some new possibility had dawned suddenly upon him.
-
-It was twenty past three when we reached our terminus, and after a hasty
-luncheon at the buffet we pushed on at once to Scotland Yard. Holmes
-had already wired to Forbes, and we found him waiting to receive us--a
-small, foxy man with a sharp but by no means amiable expression. He
-was decidedly frigid in his manner to us, especially when he heard the
-errand upon which we had come.
-
-"I've heard of your methods before now, Mr. Holmes," said he, tartly.
-"You are ready enough to use all the information that the police can lay
-at your disposal, and then you try to finish the case yourself and bring
-discredit on them."
-
-"On the contrary," said Holmes, "out of my last fifty-three cases my
-name has only appeared in four, and the police have had all the credit
-in forty-nine. I don't blame you for not knowing this, for you are young
-and inexperienced, but if you wish to get on in your new duties you will
-work with me and not against me."
-
-"I'd be very glad of a hint or two," said the detective, changing his
-manner. "I've certainly had no credit from the case so far."
-
-"What steps have you taken?"
-
-"Tangey, the commissionnaire, has been shadowed. He left the Guards with
-a good character and we can find nothing against him. His wife is a bad
-lot, though. I fancy she knows more about this than appears."
-
-"Have you shadowed her?"
-
-"We have set one of our women on to her. Mrs. Tangey drinks, and our
-woman has been with her twice when she was well on, but she could get
-nothing out of her."
-
-"I understand that they have had brokers in the house?"
-
-"Yes, but they were paid off."
-
-"Where did the money come from?"
-
-"That was all right. His pension was due. They have not shown any sign
-of being in funds."
-
-"What explanation did she give of having answered the bell when Mr.
-Phelps rang for the coffee?"
-
-"She said that he husband was very tired and she wished to relieve him."
-
-"Well, certainly that would agree with his being found a little later
-asleep in his chair. There is nothing against them then but the woman's
-character. Did you ask her why she hurried away that night? Her haste
-attracted the attention of the police constable."
-
-"She was later than usual and wanted to get home."
-
-"Did you point out to her that you and Mr. Phelps, who started at least
-twenty minutes after her, got home before her?"
-
-"She explains that by the difference between a 'bus and a hansom."
-
-"Did she make it clear why, on reaching her house, she ran into the back
-kitchen?"
-
-"Because she had the money there with which to pay off the brokers."
-
-"She has at least an answer for everything. Did you ask her whether in
-leaving she met any one or saw any one loitering about Charles Street?"
-
-"She saw no one but the constable."
-
-"Well, you seem to have cross-examined her pretty thoroughly. What else
-have you done?"
-
-"The clerk Gorot has been shadowed all these nine weeks, but without
-result. We can show nothing against him."
-
-"Anything else?"
-
-"Well, we have nothing else to go upon--no evidence of any kind."
-
-"Have you formed a theory about how that bell rang?"
-
-"Well, I must confess that it beats me. It was a cool hand, whoever it
-was, to go and give the alarm like that."
-
-"Yes, it was queer thing to do. Many thanks to you for what you have
-told me. If I can put the man into your hands you shall hear from me.
-Come along, Watson."
-
-"Where are we going to now?" I asked, as we left the office.
-
-"We are now going to interview Lord Holdhurst, the cabinet minister and
-future premier of England."
-
-We were fortunate in finding that Lord Holdhurst was still in his
-chambers in Downing Street, and on Holmes sending in his card we were
-instantly shown up. The statesman received us with that old-fashioned
-courtesy for which he is remarkable, and seated us on the two luxuriant
-lounges on either side of the fireplace. Standing on the rug between us,
-with his slight, tall figure, his sharp features, thoughtful face, and
-curling hair prematurely tinged with gray, he seemed to represent that
-not too common type, a nobleman who is in truth noble.
-
-"Your name is very familiar to me, Mr. Holmes," said he, smiling. "And,
-of course, I cannot pretend to be ignorant of the object of your visit.
-There has only been one occurrence in these offices which could call for
-your attention. In whose interest are you acting, may I ask?"
-
-"In that of Mr. Percy Phelps," answered Holmes.
-
-"Ah, my unfortunate nephew! You can understand that our kinship makes
-it the more impossible for me to screen him in any way. I fear that the
-incident must have a very prejudicial effect upon his career."
-
-"But if the document is found?"
-
-"Ah, that, of course, would be different."
-
-"I had one or two questions which I wished to ask you, Lord Holdhurst."
-
-"I shall be happy to give you any information in my power."
-
-"Was it in this room that you gave your instructions as to the copying
-of the document?"
-
-"It was."
-
-"Then you could hardly have been overheard?"
-
-"It is out of the question."
-
-"Did you ever mention to any one that it was your intention to give any
-one the treaty to be copied?"
-
-"Never."
-
-"You are certain of that?"
-
-"Absolutely."
-
-"Well, since you never said so, and Mr. Phelps never said so, and nobody
-else knew anything of the matter, then the thief's presence in the room
-was purely accidental. He saw his chance and he took it."
-
-The statesman smiled. "You take me out of my province there," said he.
-
-Holmes considered for a moment. "There is another very important
-point which I wish to discuss with you," said he. "You feared, as I
-understand, that very grave results might follow from the details of
-this treaty becoming known."
-
-A shadow passed over the expressive face of the statesman. "Very grave
-results indeed."
-
-"Any have they occurred?"
-
-"Not yet."
-
-"If the treaty had reached, let us say, the French or Russian Foreign
-Office, you would expect to hear of it?"
-
-"I should," said Lord Holdhurst, with a wry face.
-
-"Since nearly ten weeks have elapsed, then, and nothing has been heard,
-it is not unfair to suppose that for some reason the treaty has not
-reached them."
-
-Lord Holdhurst shrugged his shoulders.
-
-"We can hardly suppose, Mr. Holmes, that the thief took the treaty in
-order to frame it and hang it up."
-
-"Perhaps he is waiting for a better price."
-
-"If he waits a little longer he will get no price at all. The treaty
-will cease to be secret in a few months."
-
-"That is most important," said Holmes. "Of course, it is a possible
-supposition that the thief has had a sudden illness--"
-
-"An attack of brain-fever, for example?" asked the statesman, flashing a
-swift glance at him.
-
-"I did not say so," said Holmes, imperturbably. "And now, Lord
-Holdhurst, we have already taken up too much of your valuable time, and
-we shall wish you good-day."
-
-"Every success to your investigation, be the criminal who it may,"
-answered the nobleman, as he bowed us out the door.
-
-"He's a fine fellow," said Holmes, as we came out into Whitehall. "But
-he has a struggle to keep up his position. He is far from rich and has
-many calls. You noticed, of course, that his boots had been resoled.
-Now, Watson, I won't detain you from your legitimate work any longer.
-I shall do nothing more to-day, unless I have an answer to my cab
-advertisement. But I should be extremely obliged to you if you would
-come down with me to Woking to-morrow, by the same train which we took
-yesterday."
-
-
-I met him accordingly next morning and we traveled down to Woking
-together. He had had no answer to his advertisement, he said, and no
-fresh light had been thrown upon the case. He had, when he so willed
-it, the utter immobility of countenance of a red Indian, and I could
-not gather from his appearance whether he was satisfied or not with
-the position of the case. His conversation, I remember, was about the
-Bertillon system of measurements, and he expressed his enthusiastic
-admiration of the French savant.
-
-We found our client still under the charge of his devoted nurse, but
-looking considerably better than before. He rose from the sofa and
-greeted us without difficulty when we entered.
-
-"Any news?" he asked, eagerly.
-
-"My report, as I expected, is a negative one," said Holmes. "I have seen
-Forbes, and I have seen your uncle, and I have set one or two trains of
-inquiry upon foot which may lead to something."
-
-"You have not lost heart, then?"
-
-"By no means."
-
-"God bless you for saying that!" cried Miss Harrison. "If we keep our
-courage and our patience the truth must come out."
-
-"We have more to tell you than you have for us," said Phelps, reseating
-himself upon the couch.
-
-"I hoped you might have something."
-
-"Yes, we have had an adventure during the night, and one which might
-have proved to be a serious one." His expression grew very grave as he
-spoke, and a look of something akin to fear sprang up in his eyes. "Do
-you know," said he, "that I begin to believe that I am the unconscious
-centre of some monstrous conspiracy, and that my life is aimed at as
-well as my honor?"
-
-"Ah!" cried Holmes.
-
-"It sounds incredible, for I have not, as far as I know, an enemy in
-the world. Yet from last night's experience I can come to no other
-conclusion."
-
-"Pray let me hear it."
-
-"You must know that last night was the very first night that I have ever
-slept without a nurse in the room. I was so much better that I thought
-I could dispense with one. I had a night-light burning, however. Well,
-about two in the morning I had sunk into a light sleep when I was
-suddenly aroused by a slight noise. It was like the sound which a mouse
-makes when it is gnawing a plank, and I lay listening to it for some
-time under the impression that it must come from that cause. Then it
-grew louder, and suddenly there came from the window a sharp metallic
-snick. I sat up in amazement. There could be no doubt what the sounds
-were now. The first ones had been caused by some one forcing an
-instrument through the slit between the sashes, and the second by the
-catch being pressed back.
-
-"There was a pause then for about ten minutes, as if the person were
-waiting to see whether the noise had awakened me. Then I heard a gentle
-creaking as the window was very slowly opened. I could stand it no
-longer, for my nerves are not what they used to be. I sprang out of bed
-and flung open the shutters. A man was crouching at the window. I could
-see little of him, for he was gone like a flash. He was wrapped in some
-sort of cloak which came across the lower part of his face. One thing
-only I am sure of, and that is that he had some weapon in his hand. It
-looked to me like a long knife. I distinctly saw the gleam of it as he
-turned to run."
-
-"This is most interesting," said Holmes. "Pray what did you do then?"
-
-"I should have followed him through the open window if I had been
-stronger. As it was, I rang the bell and roused the house. It took me
-some little time, for the bell rings in the kitchen and the servants all
-sleep upstairs. I shouted, however, and that brought Joseph down, and he
-roused the others. Joseph and the groom found marks on the bed outside
-the window, but the weather has been so dry lately that they found it
-hopeless to follow the trail across the grass. There's a place, however,
-on the wooden fence which skirts the road which shows signs, they tell
-me, as if some one had got over, and had snapped the top of the rail in
-doing so. I have said nothing to the local police yet, for I thought I
-had best have your opinion first."
-
-This tale of our client's appeared to have an extraordinary effect upon
-Sherlock Holmes. He rose from his chair and paced about the room in
-uncontrollable excitement.
-
-"Misfortunes never come single," said Phelps, smiling, though it was
-evident that his adventure had somewhat shaken him.
-
-"You have certainly had your share," said Holmes. "Do you think you
-could walk round the house with me?"
-
-"Oh, yes, I should like a little sunshine. Joseph will come, too."
-
-"And I also," said Miss Harrison.
-
-"I am afraid not," said Holmes, shaking his head. "I think I must ask
-you to remain sitting exactly where you are."
-
-The young lady resumed her seat with an air of displeasure. Her brother,
-however, had joined us and we set off all four together. We passed round
-the lawn to the outside of the young diplomatist's window. There were,
-as he had said, marks upon the bed, but they were hopelessly blurred and
-vague. Holmes stopped over them for an instant, and then rose shrugging
-his shoulders.
-
-"I don't think any one could make much of this," said he. "Let us go
-round the house and see why this particular room was chosen by the
-burglar. I should have thought those larger windows of the drawing-room
-and dining-room would have had more attractions for him."
-
-"They are more visible from the road," suggested Mr. Joseph Harrison.
-
-"Ah, yes, of course. There is a door here which he might have attempted.
-What is it for?"
-
-"It is the side entrance for trades-people. Of course it is locked at
-night."
-
-"Have you ever had an alarm like this before?"
-
-"Never," said our client.
-
-"Do you keep plate in the house, or anything to attract burglars?"
-
-"Nothing of value."
-
-Holmes strolled round the house with his hands in his pockets and a
-negligent air which was unusual with him.
-
-"By the way," said he to Joseph Harrison, "you found some place, I
-understand, where the fellow scaled the fence. Let us have a look at
-that!"
-
-The plump young man led us to a spot where the top of one of the wooden
-rails had been cracked. A small fragment of the wood was hanging down.
-Holmes pulled it off and examined it critically.
-
-"Do you think that was done last night? It looks rather old, does it
-not?"
-
-"Well, possibly so."
-
-"There are no marks of any one jumping down upon the other side. No, I
-fancy we shall get no help here. Let us go back to the bedroom and talk
-the matter over."
-
-Percy Phelps was walking very slowly, leaning upon the arm of his future
-brother-in-law. Holmes walked swiftly across the lawn, and we were at
-the open window of the bedroom long before the others came up.
-
-"Miss Harrison," said Holmes, speaking with the utmost intensity of
-manner, "you must stay where you are all day. Let nothing prevent you
-from staying where you are all day. It is of the utmost importance."
-
-"Certainly, if you wish it, Mr. Holmes," said the girl in astonishment.
-
-"When you go to bed lock the door of this room on the outside and keep
-the key. Promise to do this."
-
-"But Percy?"
-
-"He will come to London with us."
-
-"And am I to remain here?"
-
-"It is for his sake. You can serve him. Quick! Promise!"
-
-She gave a quick nod of assent just as the other two came up.
-
-"Why do you sit moping there, Annie?" cried her brother. "Come out into
-the sunshine!"
-
-"No, thank you, Joseph. I have a slight headache and this room is
-deliciously cool and soothing."
-
-"What do you propose now, Mr. Holmes?" asked our client.
-
-"Well, in investigating this minor affair we must not lose sight of our
-main inquiry. It would be a very great help to me if you would come up
-to London with us."
-
-"At once?"
-
-"Well, as soon as you conveniently can. Say in an hour."
-
-"I feel quite strong enough, if I can really be of any help."
-
-"The greatest possible."
-
-"Perhaps you would like me to stay there to-night?"
-
-"I was just going to propose it."
-
-"Then, if my friend of the night comes to revisit me, he will find the
-bird flown. We are all in your hands, Mr. Holmes, and you must tell us
-exactly what you would like done. Perhaps you would prefer that Joseph
-came with us so as to look after me?"
-
-"Oh, no; my friend Watson is a medical man, you know, and he'll look
-after you. We'll have our lunch here, if you will permit us, and then we
-shall all three set off for town together."
-
-It was arranged as he suggested, though Miss Harrison excused herself
-from leaving the bedroom, in accordance with Holmes's suggestion. What
-the object of my friend's manoeuvres was I could not conceive, unless it
-were to keep the lady away from Phelps, who, rejoiced by his
-returning health and by the prospect of action, lunched with us in the
-dining-room. Holmes had a still more startling surprise for us, however,
-for, after accompanying us down to the station and seeing us into
-our carriage, he calmly announced that he had no intention of leaving
-Woking.
-
-"There are one or two small points which I should desire to clear up
-before I go," said he. "Your absence, Mr. Phelps, will in some ways
-rather assist me. Watson, when you reach London you would oblige me by
-driving at once to Baker Street with our friend here, and remaining
-with him until I see you again. It is fortunate that you are old
-school-fellows, as you must have much to talk over. Mr. Phelps can
-have the spare bedroom to-night, and I will be with you in time for
-breakfast, for there is a train which will take me into Waterloo at
-eight."
-
-"But how about our investigation in London?" asked Phelps, ruefully.
-
-"We can do that to-morrow. I think that just at present I can be of more
-immediate use here."
-
-"You might tell them at Briarbrae that I hope to be back to-morrow
-night," cried Phelps, as we began to move from the platform.
-
-"I hardly expect to go back to Briarbrae," answered Holmes, and waved
-his hand to us cheerily as we shot out from the station.
-
-Phelps and I talked it over on our journey, but neither of us could
-devise a satisfactory reason for this new development.
-
-"I suppose he wants to find out some clue as to the burglary last night,
-if a burglar it was. For myself, I don't believe it was an ordinary
-thief."
-
-"What is your own idea, then?"
-
-"Upon my word, you may put it down to my weak nerves or not, but I
-believe there is some deep political intrigue going on around me, and
-that for some reason that passes my understanding my life is aimed at
-by the conspirators. It sounds high-flown and absurd, but consider the
-facts! Why should a thief try to break in at a bedroom window, where
-there could be no hope of any plunder, and why should he come with a
-long knife in his hand?"
-
-"You are sure it was not a house-breaker's jimmy?"
-
-"Oh, no, it was a knife. I saw the flash of the blade quite distinctly."
-
-"But why on earth should you be pursued with such animosity?"
-
-"Ah, that is the question."
-
-"Well, if Holmes takes the same view, that would account for his action,
-would it not? Presuming that your theory is correct, if he can lay his
-hands upon the man who threatened you last night he will have gone a
-long way towards finding who took the naval treaty. It is absurd to
-suppose that you have two enemies, one of whom robs you, while the other
-threatens your life."
-
-"But Holmes said that he was not going to Briarbrae."
-
-"I have known him for some time," said I, "but I never knew him do
-anything yet without a very good reason," and with that our conversation
-drifted off on to other topics.
-
-But it was a weary day for me. Phelps was still weak after his long
-illness, and his misfortune made him querulous and nervous. In vain
-I endeavored to interest him in Afghanistan, in India, in social
-questions, in anything which might take his mind out of the groove.
-He would always come back to his lost treaty, wondering, guessing,
-speculating, as to what Holmes was doing, what steps Lord Holdhurst was
-taking, what news we should have in the morning. As the evening wore on
-his excitement became quite painful.
-
-"You have implicit faith in Holmes?" he asked.
-
-"I have seen him do some remarkable things."
-
-"But he never brought light into anything quite so dark as this?"
-
-"Oh, yes; I have known him solve questions which presented fewer clues
-than yours."
-
-"But not where such large interests are at stake?"
-
-"I don't know that. To my certain knowledge he has acted on behalf of
-three of the reigning houses of Europe in very vital matters."
-
-"But you know him well, Watson. He is such an inscrutable fellow that I
-never quite know what to make of him. Do you think he is hopeful? Do you
-think he expects to make a success of it?"
-
-"He has said nothing."
-
-"That is a bad sign."
-
-"On the contrary, I have noticed that when he is off the trail he
-generally says so. It is when he is on a scent and is not quite
-absolutely sure yet that it is the right one that he is most taciturn.
-Now, my dear fellow, we can't help matters by making ourselves nervous
-about them, so let me implore you to go to bed and so be fresh for
-whatever may await us to-morrow."
-
-I was able at last to persuade my companion to take my advice, though I
-knew from his excited manner that there was not much hope of sleep for
-him. Indeed, his mood was infectious, for I lay tossing half the night
-myself, brooding over this strange problem, and inventing a hundred
-theories, each of which was more impossible than the last. Why had
-Holmes remained at Woking? Why had he asked Miss Harrison to remain
-in the sick-room all day? Why had he been so careful not to inform the
-people at Briarbrae that he intended to remain near them? I cudgelled
-my brains until I fell asleep in the endeavor to find some explanation
-which would cover all these facts.
-
-It was seven o'clock when I awoke, and I set off at once for Phelps's
-room, to find him haggard and spent after a sleepless night. His first
-question was whether Holmes had arrived yet.
-
-"He'll be here when he promised," said I, "and not an instant sooner or
-later."
-
-And my words were true, for shortly after eight a hansom dashed up to
-the door and our friend got out of it. Standing in the window we saw
-that his left hand was swathed in a bandage and that his face was very
-grim and pale. He entered the house, but it was some little time before
-he came upstairs.
-
-"He looks like a beaten man," cried Phelps.
-
-I was forced to confess that he was right. "After all," said I, "the
-clue of the matter lies probably here in town."
-
-Phelps gave a groan.
-
-"I don't know how it is," said he, "but I had hoped for so much from his
-return. But surely his hand was not tied up like that yesterday. What
-can be the matter?"
-
-"You are not wounded, Holmes?" I asked, as my friend entered the room.
-
-"Tut, it is only a scratch through my own clumsiness," he answered,
-nodding his good-mornings to us. "This case of yours, Mr. Phelps, is
-certainly one of the darkest which I have ever investigated."
-
-"I feared that you would find it beyond you."
-
-"It has been a most remarkable experience."
-
-"That bandage tells of adventures," said I. "Won't you tell us what has
-happened?"
-
-"After breakfast, my dear Watson. Remember that I have breathed thirty
-miles of Surrey air this morning. I suppose that there has been no
-answer from my cabman advertisement? Well, well, we cannot expect to
-score every time."
-
-The table was all laid, and just as I was about to ring Mrs. Hudson
-entered with the tea and coffee. A few minutes later she brought in
-three covers, and we all drew up to the table, Holmes ravenous, I
-curious, and Phelps in the gloomiest state of depression.
-
-"Mrs. Hudson has risen to the occasion," said Holmes, uncovering a dish
-of curried chicken. "Her cuisine is a little limited, but she has
-as good an idea of breakfast as a Scotch-woman. What have you here,
-Watson?"
-
-"Ham and eggs," I answered.
-
-"Good! What are you going to take, Mr. Phelps--curried fowl or eggs, or
-will you help yourself?"
-
-"Thank you. I can eat nothing," said Phelps.
-
-"Oh, come! Try the dish before you."
-
-"Thank you, I would really rather not."
-
-"Well, then," said Holmes, with a mischievous twinkle, "I suppose that
-you have no objection to helping me?"
-
-Phelps raised the cover, and as he did so he uttered a scream, and sat
-there staring with a face as white as the plate upon which he looked.
-Across the centre of it was lying a little cylinder of blue-gray paper.
-He caught it up, devoured it with his eyes, and then danced madly about
-the room, pressing it to his bosom and shrieking out in his delight.
-Then he fell back into an arm-chair so limp and exhausted with his own
-emotions that we had to pour brandy down his throat to keep him from
-fainting.
-
-"There! there!" said Holmes, soothing, patting him upon the shoulder.
-"It was too bad to spring it on you like this, but Watson here will tell
-you that I never can resist a touch of the dramatic."
-
-Phelps seized his hand and kissed it. "God bless you!" he cried. "You
-have saved my honor."
-
-"Well, my own was at stake, you know," said Holmes. "I assure you it is
-just as hateful to me to fail in a case as it can be to you to blunder
-over a commission."
-
-Phelps thrust away the precious document into the innermost pocket of
-his coat.
-
-"I have not the heart to interrupt your breakfast any further, and yet I
-am dying to know how you got it and where it was."
-
-Sherlock Holmes swallowed a cup of coffee, and turned his attention to
-the ham and eggs. Then he rose, lit his pipe, and settled himself down
-into his chair.
-
-"I'll tell you what I did first, and how I came to do it afterwards,"
-said he. "After leaving you at the station I went for a charming walk
-through some admirable Surrey scenery to a pretty little village called
-Ripley, where I had my tea at an inn, and took the precaution of filling
-my flask and of putting a paper of sandwiches in my pocket. There I
-remained until evening, when I set off for Woking again, and found
-myself in the high-road outside Briarbrae just after sunset.
-
-"Well, I waited until the road was clear--it is never a very frequented
-one at any time, I fancy--and then I clambered over the fence into the
-grounds."
-
-"Surely the gate was open!" ejaculated Phelps.
-
-"Yes, but I have a peculiar taste in these matters. I chose the place
-where the three fir-trees stand, and behind their screen I got over
-without the least chance of any one in the house being able to see me.
-I crouched down among the bushes on the other side, and crawled from one
-to the other--witness the disreputable state of my trouser knees--until
-I had reached the clump of rhododendrons just opposite to your bedroom
-window. There I squatted down and awaited developments.
-
-"The blind was not down in your room, and I could see Miss Harrison
-sitting there reading by the table. It was quarter-past ten when she
-closed her book, fastened the shutters, and retired.
-
-"I heard her shut the door, and felt quite sure that she had turned the
-key in the lock."
-
-"The key!" ejaculated Phelps.
-
-"Yes; I had given Miss Harrison instructions to lock the door on the
-outside and take the key with her when she went to bed. She carried out
-every one of my injunctions to the letter, and certainly without her
-cooperation you would not have that paper in you coat-pocket. She
-departed then and the lights went out, and I was left squatting in the
-rhododendron-bush.
-
-"The night was fine, but still it was a very weary vigil. Of course it
-has the sort of excitement about it that the sportsman feels when he
-lies beside the water-course and waits for the big game. It was very
-long, though--almost as long, Watson, as when you and I waited in that
-deadly room when we looked into the little problem of the Speckled Band.
-There was a church-clock down at Woking which struck the quarters, and I
-thought more than once that it had stopped. At last however about two
-in the morning, I suddenly heard the gentle sound of a bolt being pushed
-back and the creaking of a key. A moment later the servants' door was
-opened, and Mr. Joseph Harrison stepped out into the moonlight."
-
-"Joseph!" ejaculated Phelps.
-
-"He was bare-headed, but he had a black coat thrown over his shoulder so
-that he could conceal his face in an instant if there were any alarm. He
-walked on tiptoe under the shadow of the wall, and when he reached the
-window he worked a long-bladed knife through the sash and pushed back
-the catch. Then he flung open the window, and putting his knife through
-the crack in the shutters, he thrust the bar up and swung them open.
-
-"From where I lay I had a perfect view of the inside of the room and of
-every one of his movements. He lit the two candles which stood upon the
-mantelpiece, and then he proceeded to turn back the corner of the carpet
-in the neighborhood of the door. Presently he stopped and picked out a
-square piece of board, such as is usually left to enable plumbers to get
-at the joints of the gas-pipes. This one covered, as a matter of
-fact, the T joint which gives off the pipe which supplies the kitchen
-underneath. Out of this hiding-place he drew that little cylinder
-of paper, pushed down the board, rearranged the carpet, blew out the
-candles, and walked straight into my arms as I stood waiting for him
-outside the window.
-
-"Well, he has rather more viciousness than I gave him credit for, has
-Master Joseph. He flew at me with his knife, and I had to grasp him
-twice, and got a cut over the knuckles, before I had the upper hand of
-him. He looked murder out of the only eye he could see with when we had
-finished, but he listened to reason and gave up the papers. Having
-got them I let my man go, but I wired full particulars to Forbes this
-morning. If he is quick enough to catch his bird, well and good. But
-if, as I shrewdly suspect, he finds the nest empty before he gets there,
-why, all the better for the government. I fancy that Lord Holdhurst for
-one, and Mr. Percy Phelps for another, would very much rather that the
-affair never got as far as a police-court.
-
-"My God!" gasped our client. "Do you tell me that during these long ten
-weeks of agony the stolen papers were within the very room with me all
-the time?"
-
-"So it was."
-
-"And Joseph! Joseph a villain and a thief!"
-
-"Hum! I am afraid Joseph's character is a rather deeper and more
-dangerous one than one might judge from his appearance. From what I
-have heard from him this morning, I gather that he has lost heavily in
-dabbling with stocks, and that he is ready to do anything on earth to
-better his fortunes. Being an absolutely selfish man, when a chance
-presented itself he did not allow either his sister's happiness or your
-reputation to hold his hand."
-
-Percy Phelps sank back in his chair. "My head whirls," said he. "Your
-words have dazed me."
-
-"The principal difficulty in your case," remarked Holmes, in his
-didactic fashion, "lay in the fact of there being too much evidence.
-What was vital was overlaid and hidden by what was irrelevant. Of all
-the facts which were presented to us we had to pick just those which we
-deemed to be essential, and then piece them together in their order, so
-as to reconstruct this very remarkable chain of events. I had already
-begun to suspect Joseph, from the fact that you had intended to travel
-home with him that night, and that therefore it was a likely enough
-thing that he should call for you, knowing the Foreign Office well, upon
-his way. When I heard that some one had been so anxious to get into the
-bedroom, in which no one but Joseph could have concealed anything--you
-told us in your narrative how you had turned Joseph out when you arrived
-with the doctor--my suspicions all changed to certainties, especially as
-the attempt was made on the first night upon which the nurse was absent,
-showing that the intruder was well acquainted with the ways of the
-house."
-
-"How blind I have been!"
-
-"The facts of the case, as far as I have worked them out, are these:
-this Joseph Harrison entered the office through the Charles Street door,
-and knowing his way he walked straight into your room the instant after
-you left it. Finding no one there he promptly rang the bell, and at
-the instant that he did so his eyes caught the paper upon the table.
-A glance showed him that chance had put in his way a State document of
-immense value, and in an instant he had thrust it into his pocket and
-was gone. A few minutes elapsed, as you remember, before the sleepy
-commissionnaire drew your attention to the bell, and those were just
-enough to give the thief time to make his escape.
-
-"He made his way to Woking by the first train, and having examined his
-booty and assured himself that it really was of immense value, he
-had concealed it in what he thought was a very safe place, with the
-intention of taking it out again in a day or two, and carrying it to the
-French embassy, or wherever he thought that a long price was to be
-had. Then came your sudden return. He, without a moment's warning, was
-bundled out of his room, and from that time onward there were always at
-least two of you there to prevent him from regaining his treasure. The
-situation to him must have been a maddening one. But at last he thought
-he saw his chance. He tried to steal in, but was baffled by your
-wakefulness. You remember that you did not take your usual draught that
-night."
-
-"I remember."
-
-"I fancy that he had taken steps to make that draught efficacious,
-and that he quite relied upon your being unconscious. Of course, I
-understood that he would repeat the attempt whenever it could be done
-with safety. Your leaving the room gave him the chance he wanted. I kept
-Miss Harrison in it all day so that he might not anticipate us. Then,
-having given him the idea that the coast was clear, I kept guard as
-I have described. I already knew that the papers were probably in the
-room, but I had no desire to rip up all the planking and skirting in
-search of them. I let him take them, therefore, from the hiding-place,
-and so saved myself an infinity of trouble. Is there any other point
-which I can make clear?"
-
-"Why did he try the window on the first occasion," I asked, "when he
-might have entered by the door?"
-
-"In reaching the door he would have to pass seven bedrooms. On the other
-hand, he could get out on to the lawn with ease. Anything else?"
-
-"You do not think," asked Phelps, "that he had any murderous intention?
-The knife was only meant as a tool."
-
-"It may be so," answered Holmes, shrugging his shoulders. "I can only
-say for certain that Mr. Joseph Harrison is a gentleman to whose mercy I
-should be extremely unwilling to trust."
-
-
-
-
-Adventure XI. The Final Problem
-
-
-It is with a heavy heart that I take up my pen to write these the last
-words in which I shall ever record the singular gifts by which my friend
-Mr. Sherlock Holmes was distinguished. In an incoherent and, as I deeply
-feel, an entirely inadequate fashion, I have endeavored to give some
-account of my strange experiences in his company from the chance which
-first brought us together at the period of the "Study in Scarlet," up
-to the time of his interference in the matter of the "Naval Treaty"--an
-interference which had the unquestionable effect of preventing a serious
-international complication. It was my intention to have stopped there,
-and to have said nothing of that event which has created a void in my
-life which the lapse of two years has done little to fill. My hand
-has been forced, however, by the recent letters in which Colonel James
-Moriarty defends the memory of his brother, and I have no choice but to
-lay the facts before the public exactly as they occurred. I alone know
-the absolute truth of the matter, and I am satisfied that the time has
-come when no good purpose is to be served by its suppression. As far as
-I know, there have been only three accounts in the public press: that
-in the Journal de Geneve on May 6th, 1891, the Reuter's despatch in the
-English papers on May 7th, and finally the recent letter to which I have
-alluded. Of these the first and second were extremely condensed, while
-the last is, as I shall now show, an absolute perversion of the facts.
-It lies with me to tell for the first time what really took place
-between Professor Moriarty and Mr. Sherlock Holmes.
-
-It may be remembered that after my marriage, and my subsequent start in
-private practice, the very intimate relations which had existed between
-Holmes and myself became to some extent modified. He still came to me
-from time to time when he desired a companion in his investigation, but
-these occasions grew more and more seldom, until I find that in the year
-1890 there were only three cases of which I retain any record. During
-the winter of that year and the early spring of 1891, I saw in the
-papers that he had been engaged by the French government upon a matter
-of supreme importance, and I received two notes from Holmes, dated from
-Narbonne and from Nimes, from which I gathered that his stay in France
-was likely to be a long one. It was with some surprise, therefore, that
-I saw him walk into my consulting-room upon the evening of April 24th.
-It struck me that he was looking even paler and thinner than usual.
-
-"Yes, I have been using myself up rather too freely," he remarked, in
-answer to my look rather than to my words; "I have been a little pressed
-of late. Have you any objection to my closing your shutters?"
-
-The only light in the room came from the lamp upon the table at which I
-had been reading. Holmes edged his way round the wall and flinging the
-shutters together, he bolted them securely.
-
-"You are afraid of something?" I asked.
-
-"Well, I am."
-
-"Of what?"
-
-"Of air-guns."
-
-"My dear Holmes, what do you mean?"
-
-"I think that you know me well enough, Watson, to understand that I am
-by no means a nervous man. At the same time, it is stupidity rather than
-courage to refuse to recognize danger when it is close upon you. Might
-I trouble you for a match?" He drew in the smoke of his cigarette as if
-the soothing influence was grateful to him.
-
-"I must apologize for calling so late," said he, "and I must further beg
-you to be so unconventional as to allow me to leave your house presently
-by scrambling over your back garden wall."
-
-"But what does it all mean?" I asked.
-
-He held out his hand, and I saw in the light of the lamp that two of his
-knuckles were burst and bleeding.
-
-"It is not an airy nothing, you see," said he, smiling. "On the
-contrary, it is solid enough for a man to break his hand over. Is Mrs.
-Watson in?"
-
-"She is away upon a visit."
-
-"Indeed! You are alone?"
-
-"Quite."
-
-"Then it makes it the easier for me to propose that you should come away
-with me for a week to the Continent."
-
-"Where?"
-
-"Oh, anywhere. It's all the same to me."
-
-There was something very strange in all this. It was not Holmes's nature
-to take an aimless holiday, and something about his pale, worn face told
-me that his nerves were at their highest tension. He saw the question in
-my eyes, and, putting his finger-tips together and his elbows upon his
-knees, he explained the situation.
-
-"You have probably never heard of Professor Moriarty?" said he.
-
-"Never."
-
-"Aye, there's the genius and the wonder of the thing!" he cried. "The
-man pervades London, and no one has heard of him. That's what puts
-him on a pinnacle in the records of crime. I tell you, Watson, in all
-seriousness, that if I could beat that man, if I could free society
-of him, I should feel that my own career had reached its summit, and
-I should be prepared to turn to some more placid line in life. Between
-ourselves, the recent cases in which I have been of assistance to the
-royal family of Scandinavia, and to the French republic, have left me in
-such a position that I could continue to live in the quiet fashion
-which is most congenial to me, and to concentrate my attention upon my
-chemical researches. But I could not rest, Watson, I could not sit quiet
-in my chair, if I thought that such a man as Professor Moriarty were
-walking the streets of London unchallenged."
-
-"What has he done, then?"
-
-"His career has been an extraordinary one. He is a man of good birth and
-excellent education, endowed by nature with a phenomenal mathematical
-faculty. At the age of twenty-one he wrote a treatise upon the Binomial
-Theorem, which has had a European vogue. On the strength of it he won
-the Mathematical Chair at one of our smaller universities, and had, to
-all appearances, a most brilliant career before him. But the man had
-hereditary tendencies of the most diabolical kind. A criminal strain
-ran in his blood, which, instead of being modified, was increased and
-rendered infinitely more dangerous by his extraordinary mental powers.
-Dark rumors gathered round him in the university town, and eventually he
-was compelled to resign his chair and to come down to London, where he
-set up as an army coach. So much is known to the world, but what I am
-telling you now is what I have myself discovered.
-
-"As you are aware, Watson, there is no one who knows the higher criminal
-world of London so well as I do. For years past I have continually been
-conscious of some power behind the malefactor, some deep organizing
-power which forever stands in the way of the law, and throws its shield
-over the wrong-doer. Again and again in cases of the most varying
-sorts--forgery cases, robberies, murders--I have felt the presence of
-this force, and I have deduced its action in many of those undiscovered
-crimes in which I have not been personally consulted. For years I have
-endeavored to break through the veil which shrouded it, and at last
-the time came when I seized my thread and followed it, until it led
-me, after a thousand cunning windings, to ex-Professor Moriarty of
-mathematical celebrity.
-
-"He is the Napoleon of crime, Watson. He is the organizer of half that
-is evil and of nearly all that is undetected in this great city. He is a
-genius, a philosopher, an abstract thinker. He has a brain of the first
-order. He sits motionless, like a spider in the center of its web, but
-that web has a thousand radiations, and he knows well every quiver of
-each of them. He does little himself. He only plans. But his agents are
-numerous and splendidly organized. Is there a crime to be done, a
-paper to be abstracted, we will say, a house to be rifled, a man to be
-removed--the word is passed to the Professor, the matter is organized
-and carried out. The agent may be caught. In that case money is found
-for his bail or his defence. But the central power which uses the agent
-is never caught--never so much as suspected. This was the organization
-which I deduced, Watson, and which I devoted my whole energy to exposing
-and breaking up.
-
-"But the Professor was fenced round with safeguards so cunningly devised
-that, do what I would, it seemed impossible to get evidence which would
-convict in a court of law. You know my powers, my dear Watson, and yet
-at the end of three months I was forced to confess that I had at last
-met an antagonist who was my intellectual equal. My horror at his crimes
-was lost in my admiration at his skill. But at last he made a trip--only
-a little, little trip--but it was more than he could afford when I was
-so close upon him. I had my chance, and, starting from that point, I
-have woven my net round him until now it is all ready to close. In three
-days--that is to say, on Monday next--matters will be ripe, and the
-Professor, with all the principal members of his gang, will be in the
-hands of the police. Then will come the greatest criminal trial of the
-century, the clearing up of over forty mysteries, and the rope for all
-of them; but if we move at all prematurely, you understand, they may
-slip out of our hands even at the last moment.
-
-"Now, if I could have done this without the knowledge of Professor
-Moriarty, all would have been well. But he was too wily for that. He saw
-every step which I took to draw my toils round him. Again and again
-he strove to break away, but I as often headed him off. I tell you,
-my friend, that if a detailed account of that silent contest could
-be written, it would take its place as the most brilliant bit of
-thrust-and-parry work in the history of detection. Never have I risen to
-such a height, and never have I been so hard pressed by an opponent. He
-cut deep, and yet I just undercut him. This morning the last steps were
-taken, and three days only were wanted to complete the business. I was
-sitting in my room thinking the matter over, when the door opened and
-Professor Moriarty stood before me.
-
-"My nerves are fairly proof, Watson, but I must confess to a start when
-I saw the very man who had been so much in my thoughts standing there on
-my threshhold. His appearance was quite familiar to me. He is extremely
-tall and thin, his forehead domes out in a white curve, and his two
-eyes are deeply sunken in his head. He is clean-shaven, pale, and
-ascetic-looking, retaining something of the professor in his features.
-His shoulders are rounded from much study, and his face protrudes
-forward, and is forever slowly oscillating from side to side in a
-curiously reptilian fashion. He peered at me with great curiosity in his
-puckered eyes.
-
-"'You have less frontal development than I should have expected,' said
-he, at last. 'It is a dangerous habit to finger loaded firearms in the
-pocket of one's dressing-gown.'
-
-"The fact is that upon his entrance I had instantly recognized the
-extreme personal danger in which I lay. The only conceivable escape for
-him lay in silencing my tongue. In an instant I had slipped the revolver
-from the drawer into my pocket, and was covering him through the cloth.
-At his remark I drew the weapon out and laid it cocked upon the table.
-He still smiled and blinked, but there was something about his eyes
-which made me feel very glad that I had it there.
-
-"'You evidently don't know me,' said he.
-
-"'On the contrary,' I answered, 'I think it is fairly evident that I do.
-Pray take a chair. I can spare you five minutes if you have anything to
-say.'
-
-"'All that I have to say has already crossed your mind,' said he.
-
-"'Then possibly my answer has crossed yours,' I replied.
-
-"'You stand fast?'
-
-"'Absolutely.'
-
-"He clapped his hand into his pocket, and I raised the pistol from
-the table. But he merely drew out a memorandum-book in which he had
-scribbled some dates.
-
-"'You crossed my path on the 4th of January,' said he. 'On the 23d you
-incommoded me; by the middle of February I was seriously inconvenienced
-by you; at the end of March I was absolutely hampered in my plans; and
-now, at the close of April, I find myself placed in such a position
-through your continual persecution that I am in positive danger of
-losing my liberty. The situation is becoming an impossible one.'
-
-"'Have you any suggestion to make?' I asked.
-
-"'You must drop it, Mr. Holmes,' said he, swaying his face about. 'You
-really must, you know.'
-
-"'After Monday,' said I.
-
-"'Tut, tut,' said he. 'I am quite sure that a man of your intelligence
-will see that there can be but one outcome to this affair. It is
-necessary that you should withdraw. You have worked things in such a
-fashion that we have only one resource left. It has been an intellectual
-treat to me to see the way in which you have grappled with this affair,
-and I say, unaffectedly, that it would be a grief to me to be forced
-to take any extreme measure. You smile, sir, but I assure you that it
-really would.'
-
-"'Danger is part of my trade,' I remarked.
-
-"'That is not danger,' said he. 'It is inevitable destruction. You stand
-in the way not merely of an individual, but of a mighty organization,
-the full extent of which you, with all your cleverness, have been unable
-to realize. You must stand clear, Mr. Holmes, or be trodden under foot.'
-
-"'I am afraid,' said I, rising, 'that in the pleasure of this
-conversation I am neglecting business of importance which awaits me
-elsewhere.'
-
-"He rose also and looked at me in silence, shaking his head sadly.
-
-"'Well, well,' said he, at last. 'It seems a pity, but I have done
-what I could. I know every move of your game. You can do nothing before
-Monday. It has been a duel between you and me, Mr. Holmes. You hope to
-place me in the dock. I tell you that I will never stand in the dock.
-You hope to beat me. I tell you that you will never beat me. If you are
-clever enough to bring destruction upon me, rest assured that I shall do
-as much to you.'
-
-"'You have paid me several compliments, Mr. Moriarty,' said I. 'Let me
-pay you one in return when I say that if I were assured of the former
-eventuality I would, in the interests of the public, cheerfully accept
-the latter.'
-
-"'I can promise you the one, but not the other,' he snarled, and so
-turned his rounded back upon me, and went peering and blinking out of
-the room.
-
-"That was my singular interview with Professor Moriarty. I confess that
-it left an unpleasant effect upon my mind. His soft, precise fashion
-of speech leaves a conviction of sincerity which a mere bully could
-not produce. Of course, you will say: 'Why not take police precautions
-against him?' the reason is that I am well convinced that it is from his
-agents the blow will fall. I have the best proofs that it would be so."
-
-"You have already been assaulted?"
-
-"My dear Watson, Professor Moriarty is not a man who lets the grass grow
-under his feet. I went out about mid-day to transact some business in
-Oxford Street. As I passed the corner which leads from Bentinck Street
-on to the Welbeck Street crossing a two-horse van furiously driven
-whizzed round and was on me like a flash. I sprang for the foot-path
-and saved myself by the fraction of a second. The van dashed round by
-Marylebone Lane and was gone in an instant. I kept to the pavement after
-that, Watson, but as I walked down Vere Street a brick came down from
-the roof of one of the houses, and was shattered to fragments at my
-feet. I called the police and had the place examined. There were slates
-and bricks piled up on the roof preparatory to some repairs, and they
-would have me believe that the wind had toppled over one of these. Of
-course I knew better, but I could prove nothing. I took a cab after that
-and reached my brother's rooms in Pall Mall, where I spent the day. Now
-I have come round to you, and on my way I was attacked by a rough with a
-bludgeon. I knocked him down, and the police have him in custody; but
-I can tell you with the most absolute confidence that no possible
-connection will ever be traced between the gentleman upon whose front
-teeth I have barked my knuckles and the retiring mathematical coach, who
-is, I dare say, working out problems upon a black-board ten miles away.
-You will not wonder, Watson, that my first act on entering your rooms
-was to close your shutters, and that I have been compelled to ask your
-permission to leave the house by some less conspicuous exit than the
-front door."
-
-I had often admired my friend's courage, but never more than now, as he
-sat quietly checking off a series of incidents which must have combined
-to make up a day of horror.
-
-"You will spend the night here?" I said.
-
-"No, my friend, you might find me a dangerous guest. I have my plans
-laid, and all will be well. Matters have gone so far now that they can
-move without my help as far as the arrest goes, though my presence is
-necessary for a conviction. It is obvious, therefore, that I cannot do
-better than get away for the few days which remain before the police are
-at liberty to act. It would be a great pleasure to me, therefore, if you
-could come on to the Continent with me."
-
-"The practice is quiet," said I, "and I have an accommodating neighbor.
-I should be glad to come."
-
-"And to start to-morrow morning?"
-
-"If necessary."
-
-"Oh yes, it is most necessary. Then these are your instructions, and I
-beg, my dear Watson, that you will obey them to the letter, for you are
-now playing a double-handed game with me against the cleverest rogue and
-the most powerful syndicate of criminals in Europe. Now listen! You
-will dispatch whatever luggage you intend to take by a trusty messenger
-unaddressed to Victoria to-night. In the morning you will send for a
-hansom, desiring your man to take neither the first nor the second which
-may present itself. Into this hansom you will jump, and you will drive
-to the Strand end of the Lowther Arcade, handing the address to the
-cabman upon a slip of paper, with a request that he will not throw it
-away. Have your fare ready, and the instant that your cab stops,
-dash through the Arcade, timing yourself to reach the other side at a
-quarter-past nine. You will find a small brougham waiting close to the
-curb, driven by a fellow with a heavy black cloak tipped at the collar
-with red. Into this you will step, and you will reach Victoria in time
-for the Continental express."
-
-"Where shall I meet you?"
-
-"At the station. The second first-class carriage from the front will be
-reserved for us."
-
-"The carriage is our rendezvous, then?"
-
-"Yes."
-
-It was in vain that I asked Holmes to remain for the evening. It was
-evident to me that he thought he might bring trouble to the roof he was
-under, and that that was the motive which impelled him to go. With a few
-hurried words as to our plans for the morrow he rose and came out with
-me into the garden, clambering over the wall which leads into Mortimer
-Street, and immediately whistling for a hansom, in which I heard him
-drive away.
-
-In the morning I obeyed Holmes's injunctions to the letter. A hansom was
-procured with such precaution as would prevent its being one which was
-placed ready for us, and I drove immediately after breakfast to the
-Lowther Arcade, through which I hurried at the top of my speed. A
-brougham was waiting with a very massive driver wrapped in a dark cloak,
-who, the instant that I had stepped in, whipped up the horse and rattled
-off to Victoria Station. On my alighting there he turned the carriage,
-and dashed away again without so much as a look in my direction.
-
-So far all had gone admirably. My luggage was waiting for me, and I had
-no difficulty in finding the carriage which Holmes had indicated, the
-less so as it was the only one in the train which was marked "Engaged."
-My only source of anxiety now was the non-appearance of Holmes. The
-station clock marked only seven minutes from the time when we were
-due to start. In vain I searched among the groups of travellers and
-leave-takers for the lithe figure of my friend. There was no sign of
-him. I spent a few minutes in assisting a venerable Italian priest, who
-was endeavoring to make a porter understand, in his broken English,
-that his luggage was to be booked through to Paris. Then, having taken
-another look round, I returned to my carriage, where I found that the
-porter, in spite of the ticket, had given me my decrepit Italian friend
-as a traveling companion. It was useless for me to explain to him that
-his presence was an intrusion, for my Italian was even more limited than
-his English, so I shrugged my shoulders resignedly, and continued to
-look out anxiously for my friend. A chill of fear had come over me, as I
-thought that his absence might mean that some blow had fallen during the
-night. Already the doors had all been shut and the whistle blown, when--
-
-"My dear Watson," said a voice, "you have not even condescended to say
-good-morning."
-
-I turned in uncontrollable astonishment. The aged ecclesiastic had
-turned his face towards me. For an instant the wrinkles were smoothed
-away, the nose drew away from the chin, the lower lip ceased to protrude
-and the mouth to mumble, the dull eyes regained their fire, the drooping
-figure expanded. The next the whole frame collapsed again, and Holmes
-had gone as quickly as he had come.
-
-"Good heavens!" I cried; "how you startled me!"
-
-"Every precaution is still necessary," he whispered. "I have reason to
-think that they are hot upon our trail. Ah, there is Moriarty himself."
-
-The train had already begun to move as Holmes spoke. Glancing back, I
-saw a tall man pushing his way furiously through the crowd, and waving
-his hand as if he desired to have the train stopped. It was too late,
-however, for we were rapidly gathering momentum, and an instant later
-had shot clear of the station.
-
-"With all our precautions, you see that we have cut it rather fine,"
-said Holmes, laughing. He rose, and throwing off the black cassock and
-hat which had formed his disguise, he packed them away in a hand-bag.
-
-"Have you seen the morning paper, Watson?"
-
-"No."
-
-"You haven't' seen about Baker Street, then?"
-
-"Baker Street?"
-
-"They set fire to our rooms last night. No great harm was done."
-
-"Good heavens, Holmes! this is intolerable."
-
-"They must have lost my track completely after their bludgeon-man was
-arrested. Otherwise they could not have imagined that I had returned
-to my rooms. They have evidently taken the precaution of watching you,
-however, and that is what has brought Moriarty to Victoria. You could
-not have made any slip in coming?"
-
-"I did exactly what you advised."
-
-"Did you find your brougham?"
-
-"Yes, it was waiting."
-
-"Did you recognize your coachman?"
-
-"No."
-
-"It was my brother Mycroft. It is an advantage to get about in such a
-case without taking a mercenary into your confidence. But we must plan
-what we are to do about Moriarty now."
-
-"As this is an express, and as the boat runs in connection with it, I
-should think we have shaken him off very effectively."
-
-"My dear Watson, you evidently did not realize my meaning when I said
-that this man may be taken as being quite on the same intellectual plane
-as myself. You do not imagine that if I were the pursuer I should allow
-myself to be baffled by so slight an obstacle. Why, then, should you
-think so meanly of him?"
-
-"What will he do?"
-
-"What I should do?"
-
-"What would you do, then?"
-
-"Engage a special."
-
-"But it must be late."
-
-"By no means. This train stops at Canterbury; and there is always at
-least a quarter of an hour's delay at the boat. He will catch us there."
-
-"One would think that we were the criminals. Let us have him arrested on
-his arrival."
-
-"It would be to ruin the work of three months. We should get the big
-fish, but the smaller would dart right and left out of the net. On
-Monday we should have them all. No, an arrest is inadmissible."
-
-"What then?"
-
-"We shall get out at Canterbury."
-
-"And then?"
-
-"Well, then we must make a cross-country journey to Newhaven, and so
-over to Dieppe. Moriarty will again do what I should do. He will get on
-to Paris, mark down our luggage, and wait for two days at the depot.
-In the meantime we shall treat ourselves to a couple of carpet-bags,
-encourage the manufactures of the countries through which we travel, and
-make our way at our leisure into Switzerland, via Luxembourg and Basle."
-
-At Canterbury, therefore, we alighted, only to find that we should have
-to wait an hour before we could get a train to Newhaven.
-
-I was still looking rather ruefully after the rapidly disappearing
-luggage-van which contained my wardrobe, when Holmes pulled my sleeve
-and pointed up the line.
-
-"Already, you see," said he.
-
-Far away, from among the Kentish woods there rose a thin spray of smoke.
-A minute later a carriage and engine could be seen flying along the open
-curve which leads to the station. We had hardly time to take our place
-behind a pile of luggage when it passed with a rattle and a roar,
-beating a blast of hot air into our faces.
-
-"There he goes," said Holmes, as we watched the carriage swing and
-rock over the points. "There are limits, you see, to our friend's
-intelligence. It would have been a coup-de-maitre had he deduced what I
-would deduce and acted accordingly."
-
-"And what would he have done had he overtaken us?"
-
-"There cannot be the least doubt that he would have made a murderous
-attack upon me. It is, however, a game at which two may play. The
-question now is whether we should take a premature lunch here, or run
-our chance of starving before we reach the buffet at Newhaven."
-
-
-We made our way to Brussels that night and spent two days there, moving
-on upon the third day as far as Strasburg. On the Monday morning Holmes
-had telegraphed to the London police, and in the evening we found a
-reply waiting for us at our hotel. Holmes tore it open, and then with a
-bitter curse hurled it into the grate.
-
-"I might have known it!" he groaned. "He has escaped!"
-
-"Moriarty?"
-
-"They have secured the whole gang with the exception of him. He has
-given them the slip. Of course, when I had left the country there was no
-one to cope with him. But I did think that I had put the game in their
-hands. I think that you had better return to England, Watson."
-
-"Why?"
-
-"Because you will find me a dangerous companion now. This man's
-occupation is gone. He is lost if he returns to London. If I read his
-character right he will devote his whole energies to revenging himself
-upon me. He said as much in our short interview, and I fancy that he
-meant it. I should certainly recommend you to return to your practice."
-
-It was hardly an appeal to be successful with one who was an
-old campaigner as well as an old friend. We sat in the Strasburg
-salle-à-manger arguing the question for half an hour, but the same night
-we had resumed our journey and were well on our way to Geneva.
-
-For a charming week we wandered up the Valley of the Rhone, and then,
-branching off at Leuk, we made our way over the Gemmi Pass, still deep
-in snow, and so, by way of Interlaken, to Meiringen. It was a lovely
-trip, the dainty green of the spring below, the virgin white of the
-winter above; but it was clear to me that never for one instant did
-Holmes forget the shadow which lay across him. In the homely Alpine
-villages or in the lonely mountain passes, I could tell by his quick
-glancing eyes and his sharp scrutiny of every face that passed us,
-that he was well convinced that, walk where we would, we could not walk
-ourselves clear of the danger which was dogging our footsteps.
-
-Once, I remember, as we passed over the Gemmi, and walked along
-the border of the melancholy Daubensee, a large rock which had been
-dislodged from the ridge upon our right clattered down and roared into
-the lake behind us. In an instant Holmes had raced up on to the ridge,
-and, standing upon a lofty pinnacle, craned his neck in every direction.
-It was in vain that our guide assured him that a fall of stones was a
-common chance in the spring-time at that spot. He said nothing, but
-he smiled at me with the air of a man who sees the fulfillment of that
-which he had expected.
-
-And yet for all his watchfulness he was never depressed. On the
-contrary, I can never recollect having seen him in such exuberant
-spirits. Again and again he recurred to the fact that if he could
-be assured that society was freed from Professor Moriarty he would
-cheerfully bring his own career to a conclusion.
-
-"I think that I may go so far as to say, Watson, that I have not lived
-wholly in vain," he remarked. "If my record were closed to-night I could
-still survey it with equanimity. The air of London is the sweeter for my
-presence. In over a thousand cases I am not aware that I have ever used
-my powers upon the wrong side. Of late I have been tempted to look into
-the problems furnished by nature rather than those more superficial ones
-for which our artificial state of society is responsible. Your memoirs
-will draw to an end, Watson, upon the day that I crown my career by
-the capture or extinction of the most dangerous and capable criminal in
-Europe."
-
-I shall be brief, and yet exact, in the little which remains for me to
-tell. It is not a subject on which I would willingly dwell, and yet I am
-conscious that a duty devolves upon me to omit no detail.
-
-It was on the 3d of May that we reached the little village of Meiringen,
-where we put up at the Englischer Hof, then kept by Peter Steiler the
-elder. Our landlord was an intelligent man, and spoke excellent English,
-having served for three years as waiter at the Grosvenor Hotel in
-London. At his advice, on the afternoon of the 4th we set off together,
-with the intention of crossing the hills and spending the night at the
-hamlet of Rosenlaui. We had strict injunctions, however, on no account
-to pass the falls of Reichenbach, which are about half-way up the hill,
-without making a small detour to see them.
-
-It is indeed, a fearful place. The torrent, swollen by the melting snow,
-plunges into a tremendous abyss, from which the spray rolls up like the
-smoke from a burning house. The shaft into which the river hurls itself
-is an immense chasm, lined by glistening coal-black rock, and narrowing
-into a creaming, boiling pit of incalculable depth, which brims over and
-shoots the stream onward over its jagged lip. The long sweep of green
-water roaring forever down, and the thick flickering curtain of spray
-hissing forever upward, turn a man giddy with their constant whirl and
-clamor. We stood near the edge peering down at the gleam of the breaking
-water far below us against the black rocks, and listening to the
-half-human shout which came booming up with the spray out of the abyss.
-
-The path has been cut half-way round the fall to afford a complete view,
-but it ends abruptly, and the traveler has to return as he came. We had
-turned to do so, when we saw a Swiss lad come running along it with
-a letter in his hand. It bore the mark of the hotel which we had just
-left, and was addressed to me by the landlord. It appeared that within a
-very few minutes of our leaving, an English lady had arrived who was in
-the last stage of consumption. She had wintered at Davos Platz, and was
-journeying now to join her friends at Lucerne, when a sudden hemorrhage
-had overtaken her. It was thought that she could hardly live a few
-hours, but it would be a great consolation to her to see an English
-doctor, and, if I would only return, etc. The good Steiler assured me
-in a postscript that he would himself look upon my compliance as a very
-great favor, since the lady absolutely refused to see a Swiss physician,
-and he could not but feel that he was incurring a great responsibility.
-
-The appeal was one which could not be ignored. It was impossible to
-refuse the request of a fellow-countrywoman dying in a strange land. Yet
-I had my scruples about leaving Holmes. It was finally agreed, however,
-that he should retain the young Swiss messenger with him as guide and
-companion while I returned to Meiringen. My friend would stay some
-little time at the fall, he said, and would then walk slowly over the
-hill to Rosenlaui, where I was to rejoin him in the evening. As I turned
-away I saw Holmes, with his back against a rock and his arms folded,
-gazing down at the rush of the waters. It was the last that I was ever
-destined to see of him in this world.
-
-When I was near the bottom of the descent I looked back. It was
-impossible, from that position, to see the fall, but I could see the
-curving path which winds over the shoulder of the hill and leads to it.
-Along this a man was, I remember, walking very rapidly.
-
-I could see his black figure clearly outlined against the green behind
-him. I noted him, and the energy with which he walked but he passed from
-my mind again as I hurried on upon my errand.
-
-It may have been a little over an hour before I reached Meiringen. Old
-Steiler was standing at the porch of his hotel.
-
-"Well," said I, as I came hurrying up, "I trust that she is no worse?"
-
-A look of surprise passed over his face, and at the first quiver of his
-eyebrows my heart turned to lead in my breast.
-
-"You did not write this?" I said, pulling the letter from my pocket.
-"There is no sick Englishwoman in the hotel?"
-
-"Certainly not!" he cried. "But it has the hotel mark upon it! Ha, it
-must have been written by that tall Englishman who came in after you had
-gone. He said--"
-
-But I waited for none of the landlord's explanations. In a tingle of
-fear I was already running down the village street, and making for the
-path which I had so lately descended. It had taken me an hour to come
-down. For all my efforts two more had passed before I found myself at
-the fall of Reichenbach once more. There was Holmes's Alpine-stock still
-leaning against the rock by which I had left him. But there was no sign
-of him, and it was in vain that I shouted. My only answer was my own
-voice reverberating in a rolling echo from the cliffs around me.
-
-It was the sight of that Alpine-stock which turned me cold and sick.
-He had not gone to Rosenlaui, then. He had remained on that three-foot
-path, with sheer wall on one side and sheer drop on the other, until his
-enemy had overtaken him. The young Swiss had gone too. He had probably
-been in the pay of Moriarty, and had left the two men together. And then
-what had happened? Who was to tell us what had happened then?
-
-I stood for a minute or two to collect myself, for I was dazed with the
-horror of the thing. Then I began to think of Holmes's own methods and
-to try to practise them in reading this tragedy. It was, alas, only too
-easy to do. During our conversation we had not gone to the end of the
-path, and the Alpine-stock marked the place where we had stood. The
-blackish soil is kept forever soft by the incessant drift of spray,
-and a bird would leave its tread upon it. Two lines of footmarks were
-clearly marked along the farther end of the path, both leading away from
-me. There were none returning. A few yards from the end the soil was
-all ploughed up into a patch of mud, and the branches and ferns which
-fringed the chasm were torn and bedraggled. I lay upon my face and
-peered over with the spray spouting up all around me. It had darkened
-since I left, and now I could only see here and there the glistening of
-moisture upon the black walls, and far away down at the end of the shaft
-the gleam of the broken water. I shouted; but only the same half-human
-cry of the fall was borne back to my ears.
-
-But it was destined that I should after all have a last word of greeting
-from my friend and comrade. I have said that his Alpine-stock had been
-left leaning against a rock which jutted on to the path. From the top of
-this bowlder the gleam of something bright caught my eye, and, raising
-my hand, I found that it came from the silver cigarette-case which he
-used to carry. As I took it up a small square of paper upon which it
-had lain fluttered down on to the ground. Unfolding it, I found that it
-consisted of three pages torn from his note-book and addressed to me. It
-was characteristic of the man that the direction was a precise, and the
-writing as firm and clear, as though it had been written in his study.
-
-My dear Watson [it said], I write these few lines through the courtesy
-of Mr. Moriarty, who awaits my convenience for the final discussion of
-those questions which lie between us. He has been giving me a sketch
-of the methods by which he avoided the English police and kept himself
-informed of our movements. They certainly confirm the very high opinion
-which I had formed of his abilities. I am pleased to think that I shall
-be able to free society from any further effects of his presence, though
-I fear that it is at a cost which will give pain to my friends, and
-especially, my dear Watson, to you. I have already explained to you,
-however, that my career had in any case reached its crisis, and that
-no possible conclusion to it could be more congenial to me than this.
-Indeed, if I may make a full confession to you, I was quite convinced
-that the letter from Meiringen was a hoax, and I allowed you to depart
-on that errand under the persuasion that some development of this sort
-would follow. Tell Inspector Patterson that the papers which he needs
-to convict the gang are in pigeonhole M., done up in a blue envelope
-and inscribed "Moriarty." I made every disposition of my property before
-leaving England, and handed it to my brother Mycroft. Pray give my
-greetings to Mrs. Watson, and believe me to be, my dear fellow,
-
-Very sincerely yours,
-
-Sherlock Holmes
-
-
-A few words may suffice to tell the little that remains. An examination
-by experts leaves little doubt that a personal contest between the two
-men ended, as it could hardly fail to end in such a situation, in their
-reeling over, locked in each other's arms. Any attempt at recovering the
-bodies was absolutely hopeless, and there, deep down in that dreadful
-caldron of swirling water and seething foam, will lie for all time the
-most dangerous criminal and the foremost champion of the law of their
-generation. The Swiss youth was never found again, and there can be no
-doubt that he was one of the numerous agents whom Moriarty kept in this
-employ. As to the gang, it will be within the memory of the public
-how completely the evidence which Holmes had accumulated exposed their
-organization, and how heavily the hand of the dead man weighed
-upon them. Of their terrible chief few details came out during the
-proceedings, and if I have now been compelled to make a clear statement
-of his career it is due to those injudicious champions who have
-endeavored to clear his memory by attacks upon him whom I shall ever
-regard as the best and the wisest man whom I have ever known.
-
-
-
-
-
-End of the Project Gutenberg EBook of Memoirs of Sherlock Holmes, by 
-Sir Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-***** This file should be named 834-8.txt or 834-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/8/3/834/
-
-Produced by Angela M. Cable
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.org/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH F3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need, is critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including checks, online payments and credit card donations.
-To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.org
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/text-example/textapp/pom.xml b/hyracks/hyracks-examples/text-example/textapp/pom.xml
deleted file mode 100644
index 27dc508..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/pom.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>edu.uci.ics.hyracks.examples.text</groupId>
-  <artifactId>textapp</artifactId>
-  <name>textapp</name>
-
-  <parent>
-    <groupId>edu.uci.ics.hyracks.examples</groupId>
-    <artifactId>text-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
-  </parent>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>copy-dependencies</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore />
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-	</pluginManagement>
-  
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-dependencies</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/application/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/assembly/app-assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      	<groupId>edu.uci.ics.hyracks</groupId>
-      	<artifactId>hyracks-virtualcluster-maven-plugin</artifactId>
-      	<version>0.2.3-SNAPSHOT</version>
-        <configuration>
-          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
-          <hyracksCLIHome>${basedir}/../../../hyracks-cli/target/hyracks-cli-${project.version}-binary-assembly</hyracksCLIHome>
-          <jvmOptions>${jvm.extraargs}</jvmOptions>
-        </configuration>
-        <executions>
-          <execution>
-            <id>hyracks-cc-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-cc</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>hyracks-nc1-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC1</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-            </configuration>
-          </execution>
-          <execution>
-            <id>hyracks-nc2-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC2</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-            </configuration>
-          </execution>
-          <execution>
-            <id>deploy-app</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>deploy-app</goal>
-            </goals>
-            <configuration>
-              <ccHost>localhost</ccHost>
-              <appName>text</appName>
-              <harFile>${project.build.directory}/textapp-${project.version}-app-assembly.zip</harFile>
-            </configuration>
-          </execution>
-          <execution>
-            <id>stop-services</id>
-            <phase>post-integration-test</phase>
-            <goals>
-              <goal>stop-services</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-compiler-plugin</artifactId>
-      	<version>2.0.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-failsafe-plugin</artifactId>
-      	<version>2.8.1</version>
-      	<executions>
-      	  <execution>
-      	    <id>it</id>
-      	    <phase>integration-test</phase>
-      	    <goals>
-      	      <goal>integration-test</goal>
-      	    </goals>
-      	  </execution>
-      	</executions>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
-  		<artifactId>texthelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
-  		<artifactId>textclient</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>test</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>junit</groupId>
-  		<artifactId>junit</artifactId>
-  		<version>4.8.2</version>
-  		<type>jar</type>
-  		<scope>test</scope>
-  	</dependency>
-  </dependencies>
-</project>
diff --git a/hyracks/hyracks-examples/text-example/textapp/src/main/assembly/app-assembly.xml b/hyracks/hyracks-examples/text-example/textapp/src/main/assembly/app-assembly.xml
deleted file mode 100644
index 43ace6c..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/src/main/assembly/app-assembly.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<assembly>
-  <id>app-assembly</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>target/application/lib</directory>
-      <outputDirectory>lib</outputDirectory>
-    </fileSet>
-  </fileSets>
-</assembly>
diff --git a/hyracks/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java b/hyracks/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
deleted file mode 100644
index 9659288..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hyracks.examples.text.test;
-
-import java.io.File;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.examples.text.client.WordCountMain;
-
-public class WordCountIT {
-    @Test
-    public void runWordCount() throws Exception {
-        WordCountMain.main(new String[] { "-host", "localhost", "-infile-splits", getInfileSplits(), "-outfile-splits",
-                getOutfileSplits(), "-algo", "-hash", "-app", "text" });
-    }
-
-    private String getInfileSplits() {
-        return "NC1:" + new File("data/file1.txt").getAbsolutePath() + ",NC2:"
-                + new File("data/file2.txt").getAbsolutePath();
-    }
-
-    private String getOutfileSplits() {
-        return "NC1:" + new File("target/wc1.txt").getAbsolutePath() + ",NC2:"
-                + new File("target/wc2.txt").getAbsolutePath();
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-examples/text-example/textclient/pom.xml b/hyracks/hyracks-examples/text-example/textclient/pom.xml
index 796c95c..4aace73 100644
--- a/hyracks/hyracks-examples/text-example/textclient/pom.xml
+++ b/hyracks/hyracks-examples/text-example/textclient/pom.xml
@@ -32,8 +32,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/text-example/texthelper/pom.xml b/hyracks/hyracks-examples/text-example/texthelper/pom.xml
index 121c785..bcb280c 100644
--- a/hyracks/hyracks-examples/text-example/texthelper/pom.xml
+++ b/hyracks/hyracks-examples/text-example/texthelper/pom.xml
@@ -36,8 +36,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml b/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
index 1e5e3c0..4e0d9f0 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
@@ -29,8 +29,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-hadoop-compat/pom.xml b/hyracks/hyracks-hadoop-compat/pom.xml
index 426a333..87aaaa7 100644
--- a/hyracks/hyracks-hadoop-compat/pom.xml
+++ b/hyracks/hyracks-hadoop-compat/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml
index 3eb2316..9092655 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml
@@ -18,8 +18,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml
index 2b05f44..8b7ecf0 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml
@@ -17,8 +17,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
index bb0601f..a28c698a 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
@@ -18,8 +18,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/hyracks/hyracks-ipc/pom.xml b/hyracks/hyracks-ipc/pom.xml
index f12e10c..6f5e09f 100644
--- a/hyracks/hyracks-ipc/pom.xml
+++ b/hyracks/hyracks-ipc/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
index 64a3616..a8fc29e 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
@@ -17,8 +17,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-net/pom.xml b/hyracks/hyracks-net/pom.xml
index d2962c4..fb486df 100644
--- a/hyracks/hyracks-net/pom.xml
+++ b/hyracks/hyracks-net/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-server/pom.xml b/hyracks/hyracks-server/pom.xml
index 66d1c8d..e0fc40a 100644
--- a/hyracks/hyracks-server/pom.xml
+++ b/hyracks/hyracks-server/pom.xml
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-storage-am-btree/pom.xml b/hyracks/hyracks-storage-am-btree/pom.xml
index a1f362e..f251d51 100644
--- a/hyracks/hyracks-storage-am-btree/pom.xml
+++ b/hyracks/hyracks-storage-am-btree/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-storage-am-common/pom.xml b/hyracks/hyracks-storage-am-common/pom.xml
index 93f2e90..dbc4f41d 100644
--- a/hyracks/hyracks-storage-am-common/pom.xml
+++ b/hyracks/hyracks-storage-am-common/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-storage-am-invertedindex/pom.xml b/hyracks/hyracks-storage-am-invertedindex/pom.xml
index b8a7b7c..5fe2d96 100644
--- a/hyracks/hyracks-storage-am-invertedindex/pom.xml
+++ b/hyracks/hyracks-storage-am-invertedindex/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-storage-am-rtree/pom.xml b/hyracks/hyracks-storage-am-rtree/pom.xml
index fd432ff..6c2d734 100644
--- a/hyracks/hyracks-storage-am-rtree/pom.xml
+++ b/hyracks/hyracks-storage-am-rtree/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-storage-common/pom.xml b/hyracks/hyracks-storage-common/pom.xml
index 834c7d3..3360097 100644
--- a/hyracks/hyracks-storage-common/pom.xml
+++ b/hyracks/hyracks-storage-common/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-test-support/pom.xml b/hyracks/hyracks-test-support/pom.xml
index 0cc8762..89233c9 100644
--- a/hyracks/hyracks-test-support/pom.xml
+++ b/hyracks/hyracks-test-support/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
index bf8c478..d0bb883 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml
index 03490c7..59c8c46 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <encoding>UTF-8</encoding>
           <fork>true</fork>
         </configuration>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
index ba6da6d..7b1a3f3 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
index d7b6288..8e429f9 100644
--- a/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
index 9e453a6..d33ddc5 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
@@ -14,8 +14,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
index 08935a7..649aa6c 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
@@ -14,8 +14,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
index 3aaf4a2..fe210fd 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
@@ -14,8 +14,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
     </plugins>
diff --git a/pregelix/pregelix-api/pom.xml b/pregelix/pregelix-api/pom.xml
index 2770e25..10efa59 100644
--- a/pregelix/pregelix-api/pom.xml
+++ b/pregelix/pregelix-api/pom.xml
@@ -21,8 +21,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/pregelix/pregelix-core/pom.xml b/pregelix/pregelix-core/pom.xml
index e14ac41..2f167fb 100644
--- a/pregelix/pregelix-core/pom.xml
+++ b/pregelix/pregelix-core/pom.xml
@@ -66,8 +66,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/pregelix/pregelix-dataflow-std-base/pom.xml b/pregelix/pregelix-dataflow-std-base/pom.xml
index dce6a40..4fda45f 100644
--- a/pregelix/pregelix-dataflow-std-base/pom.xml
+++ b/pregelix/pregelix-dataflow-std-base/pom.xml
@@ -22,8 +22,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/pregelix/pregelix-dataflow-std/pom.xml b/pregelix/pregelix-dataflow-std/pom.xml
index 7f401f5..efe1607 100644
--- a/pregelix/pregelix-dataflow-std/pom.xml
+++ b/pregelix/pregelix-dataflow-std/pom.xml
@@ -23,8 +23,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/pregelix/pregelix-dataflow/pom.xml b/pregelix/pregelix-dataflow/pom.xml
index 7001387..2d0859b 100644
--- a/pregelix/pregelix-dataflow/pom.xml
+++ b/pregelix/pregelix-dataflow/pom.xml
@@ -23,8 +23,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/pregelix/pregelix-dist/pom.xml b/pregelix/pregelix-dist/pom.xml
index aa3d541..847e843 100644
--- a/pregelix/pregelix-dist/pom.xml
+++ b/pregelix/pregelix-dist/pom.xml
@@ -19,8 +19,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 				</configuration>
 			</plugin>
 			<plugin>
diff --git a/pregelix/pregelix-example/pom.xml b/pregelix/pregelix-example/pom.xml
index ea09178..84feb78 100644
--- a/pregelix/pregelix-example/pom.xml
+++ b/pregelix/pregelix-example/pom.xml
@@ -17,8 +17,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
diff --git a/pregelix/pregelix-runtime/pom.xml b/pregelix/pregelix-runtime/pom.xml
index 5d1c251..94bda18 100644
--- a/pregelix/pregelix-runtime/pom.xml
+++ b/pregelix/pregelix-runtime/pom.xml
@@ -22,8 +22,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
